com.fofx.observething 1.1.0 → 1.1.1-dev.161

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/Runtime/{Operators/IInitializationOperationsProvider.cs → IInitializationOperationsProvider.cs} +1 -1
  2. package/Runtime/{IObservable.cs → Observables/IObservable.cs} +13 -9
  3. package/Runtime/{Implementations/ObservableBase.cs → Observables/Observable.cs} +6 -19
  4. package/Runtime/{Implementations → Observables}/ObservableCollection.cs +6 -15
  5. package/Runtime/{Implementations → Observables}/ObservableDictionary.cs +7 -18
  6. package/Runtime/{Implementations/Observable.cs → Observables/ObservableEventStream.cs} +11 -3
  7. package/Runtime/{Implementations → Observables}/ObservableList.cs +3 -13
  8. package/Runtime/{Implementations → Observables}/ObservableSet.cs +6 -15
  9. package/Runtime/{Implementations → Observables}/ObservableValue.cs +4 -11
  10. package/Runtime/Observables.meta +1 -1
  11. package/Runtime/ObservationDefaults.cs +10 -0
  12. package/Runtime/ObservationDefaults.cs.meta +2 -0
  13. package/Runtime/Observers.cs +51 -64
  14. package/Runtime/Operators/BatchOperator.cs +52 -51
  15. package/Runtime/Operators/BatchOperator.cs.meta +1 -1
  16. package/Runtime/{Observables/CastObservable.cs → Operators/CastOperator.cs} +10 -10
  17. package/Runtime/{Observables/CombineObservable.cs → Operators/CombineOperator.cs} +10 -10
  18. package/Runtime/{Observables/CombineValueObservable.cs → Operators/CombineValueOperator.cs} +12 -12
  19. package/Runtime/{Observables/ConcatObservable.cs → Operators/ConcatOperator.cs} +2 -2
  20. package/Runtime/{Observables/ContainsObservable.cs → Operators/ContainsOperator.cs} +2 -2
  21. package/Runtime/Operators/ContainsOperator.cs.meta +2 -0
  22. package/Runtime/{Observables/CountObservable.cs → Operators/CountOperator.cs} +2 -2
  23. package/Runtime/{Observables/DistinctObservable.cs → Operators/DistinctOperator.cs} +2 -2
  24. package/Runtime/Operators/{CollectionOperator.cs → Factories/CollectionOperatorFactory.cs} +2 -9
  25. package/Runtime/Operators/{DictionaryOperator.cs → Factories/DictionaryOperatorFactory.cs} +2 -9
  26. package/Runtime/Operators/{ObservableOperator.cs → Factories/EventStreamOperatorFactory.cs} +17 -10
  27. package/Runtime/Operators/{ListOperator.cs → Factories/ListOperatorFactory.cs} +2 -9
  28. package/Runtime/Operators/{Operator.cs → Factories/OperatorFactory.cs} +8 -8
  29. package/Runtime/Operators/{SetOperator.cs → Factories/SetOperatorFactory.cs} +2 -9
  30. package/Runtime/Operators/{ValueOperator.cs → Factories/ValueOperator.cs} +2 -9
  31. package/Runtime/{Implementations.meta → Operators/Factories.meta} +1 -1
  32. package/Runtime/{Observables/FirstObservable.cs → Operators/FirstOperator.cs} +2 -2
  33. package/Runtime/{Observables/IndexOfObservable.cs → Operators/IndexOfOperator.cs} +2 -2
  34. package/Runtime/Operators/OperationStreamOperator.cs +212 -0
  35. package/Runtime/{Observables.cs → Operators/Operators.cs} +105 -73
  36. package/Runtime/{Observables/OrderByObservable.cs → Operators/OrderByOperator.cs} +2 -2
  37. package/Runtime/{Observables/SelectCollectionObservable.cs → Operators/SelectCollectionOperator.cs} +2 -2
  38. package/Runtime/{Observables/SelectListObservable.cs → Operators/SelectListOperator.cs} +2 -2
  39. package/Runtime/{Observables/SelectManyObservable.cs → Operators/SelectManyOperator.cs} +2 -2
  40. package/Runtime/{Observables/SkipWhileObservable.cs → Operators/SkipWhileOperator.cs} +2 -2
  41. package/Runtime/{Observables/ThenObservable.cs → Operators/ThenOperator.cs} +2 -2
  42. package/Runtime/{Observables/ToDictionaryObservable.cs → Operators/ToDictionaryOperator.cs} +3 -3
  43. package/Runtime/{Observables/TrackObservable.cs → Operators/TrackOperator.cs} +2 -2
  44. package/Runtime/{Observables/UnwrapCollectionObservable.cs → Operators/UnwrapCollectionOperator.cs} +2 -2
  45. package/Runtime/{Observables/UnwrapListObservable.cs → Operators/UnwrapListOperator.cs} +2 -2
  46. package/Runtime/{Observables/UnwrapValueObservable.cs → Operators/UnwrapValueOperator.cs} +2 -2
  47. package/Runtime/{Observables/WhereObservable.cs → Operators/WhereOperator.cs} +2 -2
  48. package/Runtime/{Observables/WithPreviousObservable.cs → Operators/WithPreviousOperator.cs} +2 -2
  49. package/Tests/CollectionObservableTests.cs +1 -1
  50. package/Tests/DictionaryObservableTests.cs +1 -1
  51. package/Tests/ListObservableTests.cs +1 -1
  52. package/Tests/ObservationContextTests.cs +109 -83
  53. package/Tests/ValueObservableTests.cs +1 -1
  54. package/package.json +5 -4
  55. package/Runtime/Observables/BatchObservable.cs +0 -72
  56. package/Runtime/Observables/BatchObservable.cs.meta +0 -2
  57. package/Runtime/Observables/ContainsObservable.cs.meta +0 -2
  58. package/Runtime/Observables/OperationStreamObservable.cs +0 -194
  59. /package/Runtime/{Operators/IInitializationOperationsProvider.cs.meta → IInitializationOperationsProvider.cs.meta} +0 -0
  60. /package/Runtime/{IObservable.cs.meta → Observables/IObservable.cs.meta} +0 -0
  61. /package/Runtime/{Implementations/ObservableBase.cs.meta → Observables/Observable.cs.meta} +0 -0
  62. /package/Runtime/{Implementations → Observables}/ObservableCollection.cs.meta +0 -0
  63. /package/Runtime/{Implementations → Observables}/ObservableDictionary.cs.meta +0 -0
  64. /package/Runtime/{Implementations/Observable.cs.meta → Observables/ObservableEventStream.cs.meta} +0 -0
  65. /package/Runtime/{Implementations → Observables}/ObservableList.cs.meta +0 -0
  66. /package/Runtime/{Implementations → Observables}/ObservableSet.cs.meta +0 -0
  67. /package/Runtime/{Implementations → Observables}/ObservableValue.cs.meta +0 -0
  68. /package/Runtime/{Observables/CastObservable.cs.meta → Operators/CastOperator.cs.meta} +0 -0
  69. /package/Runtime/{Observables/CombineObservable.cs.meta → Operators/CombineOperator.cs.meta} +0 -0
  70. /package/Runtime/{Observables/CombineValueObservable.cs.meta → Operators/CombineValueOperator.cs.meta} +0 -0
  71. /package/Runtime/{Observables/ConcatObservable.cs.meta → Operators/ConcatOperator.cs.meta} +0 -0
  72. /package/Runtime/{Observables/CountObservable.cs.meta → Operators/CountOperator.cs.meta} +0 -0
  73. /package/Runtime/{Observables/DistinctObservable.cs.meta → Operators/DistinctOperator.cs.meta} +0 -0
  74. /package/Runtime/Operators/{CollectionOperator.cs.meta → Factories/CollectionOperatorFactory.cs.meta} +0 -0
  75. /package/Runtime/Operators/{DictionaryOperator.cs.meta → Factories/DictionaryOperatorFactory.cs.meta} +0 -0
  76. /package/Runtime/Operators/{ObservableOperator.cs.meta → Factories/EventStreamOperatorFactory.cs.meta} +0 -0
  77. /package/Runtime/Operators/{ListOperator.cs.meta → Factories/ListOperatorFactory.cs.meta} +0 -0
  78. /package/Runtime/Operators/{Operator.cs.meta → Factories/OperatorFactory.cs.meta} +0 -0
  79. /package/Runtime/Operators/{SetOperator.cs.meta → Factories/SetOperatorFactory.cs.meta} +0 -0
  80. /package/Runtime/Operators/{ValueOperator.cs.meta → Factories/ValueOperator.cs.meta} +0 -0
  81. /package/Runtime/{Observables/FirstObservable.cs.meta → Operators/FirstOperator.cs.meta} +0 -0
  82. /package/Runtime/{Observables/IndexOfObservable.cs.meta → Operators/IndexOfOperator.cs.meta} +0 -0
  83. /package/Runtime/{Observables/OperationStreamObservable.cs.meta → Operators/OperationStreamOperator.cs.meta} +0 -0
  84. /package/Runtime/{Observables.cs.meta → Operators/Operators.cs.meta} +0 -0
  85. /package/Runtime/{Observables/OrderByObservable.cs.meta → Operators/OrderByOperator.cs.meta} +0 -0
  86. /package/Runtime/{Observables/SelectCollectionObservable.cs.meta → Operators/SelectCollectionOperator.cs.meta} +0 -0
  87. /package/Runtime/{Observables/SelectListObservable.cs.meta → Operators/SelectListOperator.cs.meta} +0 -0
  88. /package/Runtime/{Observables/SelectManyObservable.cs.meta → Operators/SelectManyOperator.cs.meta} +0 -0
  89. /package/Runtime/{Observables/SelectValueObservable.cs → Operators/SelectValueOperator.cs} +0 -0
  90. /package/Runtime/{Observables/SelectValueObservable.cs.meta → Operators/SelectValueOperator.cs.meta} +0 -0
  91. /package/Runtime/{Observables/SkipWhileObservable.cs.meta → Operators/SkipWhileOperator.cs.meta} +0 -0
  92. /package/Runtime/{Observables/ThenObservable.cs.meta → Operators/ThenOperator.cs.meta} +0 -0
  93. /package/Runtime/{Observables/ToDictionaryObservable.cs.meta → Operators/ToDictionaryOperator.cs.meta} +0 -0
  94. /package/Runtime/{Observables/TrackObservable.cs.meta → Operators/TrackOperator.cs.meta} +0 -0
  95. /package/Runtime/{Observables/UnwrapCollectionObservable.cs.meta → Operators/UnwrapCollectionOperator.cs.meta} +0 -0
  96. /package/Runtime/{Observables/UnwrapListObservable.cs.meta → Operators/UnwrapListOperator.cs.meta} +0 -0
  97. /package/Runtime/{Observables/UnwrapValueObservable.cs.meta → Operators/UnwrapValueOperator.cs.meta} +0 -0
  98. /package/Runtime/{Observables/WhereObservable.cs.meta → Operators/WhereOperator.cs.meta} +0 -0
  99. /package/Runtime/{Observables/WithPreviousObservable.cs.meta → Operators/WithPreviousOperator.cs.meta} +0 -0
@@ -3,7 +3,7 @@ using System.Collections.Generic;
3
3
 
4
4
  namespace ObserveThing
5
5
  {
6
- public class WhereObservable<T> : IDisposable
6
+ public class WhereOperator<T> : IDisposable
7
7
  {
8
8
  private ObservableCollection<T> _operand;
9
9
  private Func<T, IValueObservable<bool>> _where;
@@ -18,7 +18,7 @@ namespace ObserveThing
18
18
  public IDisposable subscription;
19
19
  }
20
20
 
21
- public WhereObservable(ICollectionObservable<T> source, Func<T, IValueObservable<bool>> where, ObservableCollection<T> operand)
21
+ public WhereOperator(ICollectionObservable<T> source, Func<T, IValueObservable<bool>> where, ObservableCollection<T> operand)
22
22
  {
23
23
  _operand = operand;
24
24
  _where = where;
@@ -2,13 +2,13 @@ using System;
2
2
 
3
3
  namespace ObserveThing
4
4
  {
5
- public class WithPreviousObservable<T> : IDisposable
5
+ public class WithPreviousOperator<T> : IDisposable
6
6
  {
7
7
  private ObservableValue<(T previous, T current)> _operand;
8
8
  private T _previousValue;
9
9
  private IDisposable _subscriptions;
10
10
 
11
- public WithPreviousObservable(IValueObservable<T> source, ObservableValue<(T previous, T current)> operand)
11
+ public WithPreviousOperator(IValueObservable<T> source, ObservableValue<(T previous, T current)> operand)
12
12
  {
13
13
  _operand = operand;
14
14
  _subscriptions = source.Subscribe(
@@ -11,7 +11,7 @@ namespace ObserveThing.Tests
11
11
  [SetUp]
12
12
  public void SetUp()
13
13
  {
14
- Settings.DefaultExceptionHandler = UnityEngine.Debug.LogException;
14
+ ObservationDefaults.DefaultExceptionHandler = UnityEngine.Debug.LogException;
15
15
  }
16
16
 
17
17
  private T Peek<T>(IValueObservable<T> observable)
@@ -10,7 +10,7 @@ namespace ObserveThing.Tests
10
10
  [SetUp]
11
11
  public void SetUp()
12
12
  {
13
- Settings.DefaultExceptionHandler = UnityEngine.Debug.LogException;
13
+ ObservationDefaults.DefaultExceptionHandler = UnityEngine.Debug.LogException;
14
14
  }
15
15
 
16
16
  [Test]
@@ -10,7 +10,7 @@ namespace ObserveThing.Tests
10
10
  [SetUp]
11
11
  public void SetUp()
12
12
  {
13
- Settings.DefaultExceptionHandler = UnityEngine.Debug.LogException;
13
+ ObservationDefaults.DefaultExceptionHandler = UnityEngine.Debug.LogException;
14
14
  }
15
15
 
16
16
  [Test]
@@ -10,6 +10,26 @@ namespace ObserveThing.Tests
10
10
  {
11
11
  public class ObservationContextTests
12
12
  {
13
+ public struct TestValueOperation
14
+ {
15
+ public IObservable source;
16
+ public object value;
17
+ }
18
+
19
+ public struct TestValueSubscriptionOperation
20
+ {
21
+ public int source;
22
+ public object value;
23
+ }
24
+
25
+ public struct TestCollectionOperation
26
+ {
27
+ public IObservable source;
28
+ public int index;
29
+ public object value;
30
+ public bool isRemove;
31
+ }
32
+
13
33
  [Test]
14
34
  public void TestOperationOrder()
15
35
  {
@@ -17,24 +37,27 @@ namespace ObserveThing.Tests
17
37
 
18
38
  ObservableValue<int> intObservable = new ObservableValue<int>(context, 100);
19
39
  ObservableValue<string> stringObservable = new ObservableValue<string>(context, "200");
20
- List<(object source, object value)> operations = new List<(object source, object value)>();
40
+ List<TestValueOperation> operations = new List<TestValueOperation>();
21
41
 
22
42
  int callCount = 0;
23
43
 
24
- var stream = Observables.ObservableCombine(intObservable, stringObservable).Subscribe(
44
+ var stream = Operators.ObservableCombine(
45
+ intObservable.ObservableEventStream(x => new TestValueOperation() { source = intObservable, value = x }),
46
+ stringObservable.ObservableEventStream(x => new TestValueOperation() { source = stringObservable, value = x })
47
+ ).Subscribe(
25
48
  onNext: op =>
26
49
  {
27
50
  callCount++;
28
- operations.Add(new(op.source, ((IValueOp)op).value));
51
+ operations.Add(op);
29
52
  }
30
53
  );
31
54
 
32
55
  Assert.AreEqual(2, callCount);
33
56
  Assert.AreEqual(
34
- new List<(object, object)>
57
+ new List<TestValueOperation>
35
58
  {
36
- new(intObservable, 100),
37
- new(stringObservable, "200")
59
+ new() { source = intObservable, value = 100 },
60
+ new() { source = stringObservable, value = "200" }
38
61
  },
39
62
  operations
40
63
  );
@@ -53,13 +76,13 @@ namespace ObserveThing.Tests
53
76
 
54
77
  Assert.AreEqual(5, callCount);
55
78
  Assert.AreEqual(
56
- new List<(object, object)>
79
+ new List<TestValueOperation>
57
80
  {
58
- new(intObservable, 1),
59
- new(stringObservable, "2"),
60
- new(intObservable, 3),
61
- new(intObservable, 4),
62
- new(stringObservable, "5"),
81
+ new() { source = intObservable, value = 1 },
82
+ new() { source = stringObservable, value = "2" },
83
+ new() { source = intObservable, value = 3 },
84
+ new() { source = intObservable, value = 4 },
85
+ new() { source = stringObservable, value = "5" },
63
86
  },
64
87
  operations
65
88
  );
@@ -72,7 +95,7 @@ namespace ObserveThing.Tests
72
95
 
73
96
  ObservableValue<int> intObservable = new ObservableValue<int>(context);
74
97
 
75
- List<(int observer, int value)> observerCallOrder = new List<(int observer, int value)>();
98
+ List<TestValueSubscriptionOperation> observerCallOrder = new List<TestValueSubscriptionOperation>();
76
99
 
77
100
  IDisposable subscription1 = default;
78
101
  IDisposable subscription2 = default;
@@ -81,13 +104,13 @@ namespace ObserveThing.Tests
81
104
  IDisposable subscription5 = default;
82
105
 
83
106
  subscription1 = intObservable.Subscribe(
84
- onNext: value => observerCallOrder.Add(new(1, value))
107
+ onNext: value => observerCallOrder.Add(new() { source = 1, value = value })
85
108
  );
86
109
 
87
110
  subscription2 = intObservable.Subscribe(
88
111
  onNext: value =>
89
112
  {
90
- observerCallOrder.Add(new(2, value));
113
+ observerCallOrder.Add(new() { source = 2, value = value });
91
114
 
92
115
  if (value == 1)
93
116
  intObservable.value = 2;
@@ -97,7 +120,7 @@ namespace ObserveThing.Tests
97
120
  subscription3 = intObservable.Subscribe(
98
121
  onNext: value =>
99
122
  {
100
- observerCallOrder.Add(new(3, value));
123
+ observerCallOrder.Add(new() { source = 3, value = value });
101
124
 
102
125
  if (value == 2)
103
126
  {
@@ -108,11 +131,11 @@ namespace ObserveThing.Tests
108
131
  );
109
132
 
110
133
  subscription4 = intObservable.Subscribe(
111
- onNext: value => observerCallOrder.Add(new(4, value))
134
+ onNext: value => observerCallOrder.Add(new() { source = 4, value = value })
112
135
  );
113
136
 
114
137
  subscription5 = intObservable.Subscribe(
115
- onNext: value => observerCallOrder.Add(new(5, value))
138
+ onNext: value => observerCallOrder.Add(new() { source = 5, value = value })
116
139
  );
117
140
 
118
141
  intObservable.value = 1;
@@ -120,26 +143,26 @@ namespace ObserveThing.Tests
120
143
  Assert.AreEqual(3, intObservable.value);
121
144
 
122
145
  Assert.AreEqual(
123
- new List<(int observer, int value)>()
146
+ new List<TestValueSubscriptionOperation>()
124
147
  {
125
- new (1, 0), //init observer1
126
- new (2, 0), //init observer2
127
- new (3, 0), //init observer3
128
- new (4, 0), //init observer4
129
- new (5, 0), //init observer5
130
- new (1, 1), //observer1 observes external setting intObservable to 1
131
- new (2, 1), //observer2 observes external setting intObservable to 1
132
- new (1, 2), //observer1 observes observer2 setting intObservable to 2
133
- new (2, 2), //observer2 observes observer2 setting intObservable to 2
134
- new (3, 1), //observer3 observes external setting intObservable to 1
135
- new (3, 2), //observer3 observes observer2 setting intObservable to 2
148
+ new () { source = 1, value = 0}, //init observer1
149
+ new () { source = 2, value = 0}, //init observer2
150
+ new () { source = 3, value = 0}, //init observer3
151
+ new () { source = 4, value = 0}, //init observer4
152
+ new () { source = 5, value = 0}, //init observer5
153
+ new () { source = 1, value = 1}, //observer1 observes external setting intObservable to 1
154
+ new () { source = 2, value = 1}, //observer2 observes external setting intObservable to 1
155
+ new () { source = 1, value = 2}, //observer1 observes observer2 setting intObservable to 2
156
+ new () { source = 2, value = 2}, //observer2 observes observer2 setting intObservable to 2
157
+ new () { source = 3, value = 1}, //observer3 observes external setting intObservable to 1
158
+ new () { source = 3, value = 2}, //observer3 observes observer2 setting intObservable to 2
136
159
  //4, //observer4 is never called past the init because it gets unsubscribed by observer3
137
- new (1, 3), //observer1 observes observer3 setting intObservable to 3
138
- new (2, 3), //observer2 observes observer3 setting intObservable to 3
139
- new (3, 3), //observer3 observes observer3 setting intObservable to 3
140
- new (5, 1), //observer5 observes external setting intObservable to 1
141
- new (5, 2), //observer5 observes observer2 setting intObservable to 2
142
- new (5, 3) //observer5 observes observer3 setting intObservable to 3
160
+ new () { source = 1, value = 3}, //observer1 observes observer3 setting intObservable to 3
161
+ new () { source = 2, value = 3}, //observer2 observes observer3 setting intObservable to 3
162
+ new () { source = 3, value = 3}, //observer3 observes observer3 setting intObservable to 3
163
+ new () { source = 5, value = 1}, //observer5 observes external setting intObservable to 1
164
+ new () { source = 5, value = 2}, //observer5 observes observer2 setting intObservable to 2
165
+ new () { source = 5, value = 3} //observer5 observes observer3 setting intObservable to 3
143
166
  },
144
167
  observerCallOrder
145
168
  );
@@ -153,14 +176,17 @@ namespace ObserveThing.Tests
153
176
  ObservableValue<int> intObservable = new ObservableValue<int>(context);
154
177
  ObservableValue<string> stringObservable = new ObservableValue<string>(context);
155
178
 
156
- var query = Observables.ObservableCombine(intObservable, stringObservable);
179
+ var query = Operators.ObservableCombine(
180
+ intObservable.ObservableEventStream(x => new TestValueOperation() { source = intObservable, value = x }),
181
+ stringObservable.ObservableEventStream(x => new TestValueOperation() { source = stringObservable, value = x })
182
+ );
157
183
 
158
- List<(object source, object value)> observerCallOrder = new List<(object source, object value)>();
184
+ List<TestValueOperation> observerCallOrder = new List<TestValueOperation>();
159
185
 
160
186
  IDisposable subscription = query.Subscribe(
161
187
  onNext: op =>
162
188
  {
163
- observerCallOrder.Add(new(op.source, ((IValueOp)op).value));
189
+ observerCallOrder.Add(op);
164
190
 
165
191
  if (intObservable.value == 2)
166
192
  {
@@ -181,21 +207,21 @@ namespace ObserveThing.Tests
181
207
  intObservable.value = 4;
182
208
 
183
209
  Assert.AreEqual(
184
- new List<(object source, object value)>()
210
+ new List<TestValueOperation>()
185
211
  {
186
- new(intObservable, 0),
187
- new(stringObservable, null),
188
- new(intObservable, 1),
189
- new(stringObservable, "cat"),
190
- new(stringObservable, "dog"),
191
- new(intObservable, 2),
192
- new(intObservable, 6),
193
- new(intObservable, 7),
194
- new(intObservable, 8),
195
- new(stringObservable, "mouse"),
196
- new(stringObservable, "frog"),
197
- new(intObservable, 3),
198
- new(intObservable, 4),
212
+ new() { source = intObservable, value = 0},
213
+ new() { source = stringObservable, value = null},
214
+ new() { source = intObservable, value = 1},
215
+ new() { source = stringObservable, value = "cat"},
216
+ new() { source = stringObservable, value = "dog"},
217
+ new() { source = intObservable, value = 2},
218
+ new() { source = intObservable, value = 6},
219
+ new() { source = intObservable, value = 7},
220
+ new() { source = intObservable, value = 8},
221
+ new() { source = stringObservable, value = "mouse"},
222
+ new() { source = stringObservable, value = "frog"},
223
+ new() { source = intObservable, value = 3},
224
+ new() { source = intObservable, value = 4},
199
225
  },
200
226
  observerCallOrder
201
227
  );
@@ -210,7 +236,10 @@ namespace ObserveThing.Tests
210
236
  var disposeCallCount = 0;
211
237
  var disposed = false;
212
238
 
213
- var query = Observables.ObservableCombine(observable1, observable2);
239
+ var query = Operators.ObservableCombine(
240
+ observable1.ObservableCast<object>().ObservableEventStream(),
241
+ observable2.ObservableCast<object>().ObservableEventStream()
242
+ );
214
243
 
215
244
  var stream = query.Subscribe(
216
245
  onDispose: () =>
@@ -296,22 +325,21 @@ namespace ObserveThing.Tests
296
325
  dictionary.Add("dog", 2);
297
326
  dictionary.Add("frog", 3);
298
327
 
299
- var initOps = new List<(object source, object value, bool isRemove)>();
328
+ var initOps = new List<TestCollectionOperation>();
300
329
 
301
- Observables.ObservableCombine(dictionary).Subscribe(onNext: op =>
330
+ Operators.ObservableCombine(dictionary.ObservableEventStream()).Subscribe(onNext: op =>
302
331
  {
303
- var args = (DictionaryOp<string, int>)op;
304
- initOps.Add(new(op.source, new KeyValuePair<string, int>(args.key, args.value), args.isRemove));
332
+ initOps.Add(new() { source = op.source, value = new KeyValuePair<string, int>(op.key, op.value), isRemove = op.isRemove });
305
333
  });
306
334
 
307
335
  Assert.That(
308
336
  initOps,
309
337
  Is.EqualTo(
310
- new List<(object source, object value, bool isRemove)>()
338
+ new List<TestCollectionOperation>()
311
339
  {
312
- new(dictionary, KeyValuePair.Create("cat", 1), false),
313
- new(dictionary, KeyValuePair.Create("dog", 2), false),
314
- new(dictionary, KeyValuePair.Create("frog", 3), false)
340
+ new TestCollectionOperation() { source = dictionary, value= KeyValuePair.Create("cat", 1), isRemove = false},
341
+ new TestCollectionOperation() { source = dictionary, value = KeyValuePair.Create("dog", 2), isRemove = false },
342
+ new TestCollectionOperation() { source = dictionary, value = KeyValuePair.Create("frog", 3), isRemove = false }
315
343
  }
316
344
  )
317
345
  );
@@ -325,32 +353,30 @@ namespace ObserveThing.Tests
325
353
  list.Add(-1000f);
326
354
  list.Insert(1, 50f);
327
355
 
328
- var subscription = Observables.ObservableCombine(dictionary, list).Subscribe(onNext: op =>
329
- {
330
- if (op.source == dictionary)
331
- {
332
- var args = (DictionaryOp<string, int>)op;
333
- initOps.Add(new(op.source, new KeyValuePair<string, int>(args.key, args.value), args.isRemove));
334
- }
335
- else
336
- {
337
- var args = (ListOp<float>)op;
338
- initOps.Add(new(op.source, args.element, args.isRemove));
339
- }
340
- });
356
+ var subscription = Operators.ObservableCombine(
357
+ false,
358
+ dictionary.ObservableEventStream(
359
+ (id, kvp) => new TestCollectionOperation() { source = dictionary, value = kvp, isRemove = false },
360
+ (id, kvp) => new TestCollectionOperation() { source = dictionary, value = kvp, isRemove = true }
361
+ ),
362
+ list.ObservableEventStream(
363
+ (id, index, element) => new TestCollectionOperation() { source = list, index = index, value = element, isRemove = false },
364
+ (id, index, element) => new TestCollectionOperation() { source = list, index = index, value = element, isRemove = true }
365
+ )
366
+ ).Subscribe(onNext: op => initOps.Add(op));
341
367
 
342
368
  Assert.That(
343
369
  initOps,
344
370
  Is.EqualTo(
345
- new List<(object source, object value, bool isRemove)>()
371
+ new List<TestCollectionOperation>()
346
372
  {
347
- new(dictionary, KeyValuePair.Create("cat", 1), false),
348
- new(dictionary, KeyValuePair.Create("dog", 2), false),
349
- new(dictionary, KeyValuePair.Create("frog", 3), false),
350
- new(list, 0.22f, false),
351
- new(list, 50f, false),
352
- new(list, 0.11f, false),
353
- new(list, -1000f, false)
373
+ new () { source = dictionary, value = KeyValuePair.Create("cat", 1), isRemove = false },
374
+ new () { source = dictionary, value = KeyValuePair.Create("dog", 2), isRemove = false },
375
+ new () { source = dictionary, value = KeyValuePair.Create("frog", 3), isRemove = false },
376
+ new () { source = list, index = 0, value = 0.22f, isRemove = false },
377
+ new () { source = list, index = 1, value = 50f, isRemove = false },
378
+ new () { source = list, index = 2, value = 0.11f, isRemove = false },
379
+ new () { source = list, index = 3, value = -1000f, isRemove = false }
354
380
  }
355
381
  )
356
382
  );
@@ -12,7 +12,7 @@ namespace ObserveThing.Tests
12
12
  [SetUp]
13
13
  public void SetUp()
14
14
  {
15
- Settings.DefaultExceptionHandler = UnityEngine.Debug.LogException;
15
+ ObservationDefaults.DefaultExceptionHandler = UnityEngine.Debug.LogException;
16
16
  }
17
17
 
18
18
  [Test]
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
+ "version": "1.1.1-dev.161",
3
+ "dependencies": {},
2
4
  "name": "com.fofx.observething",
3
- "version": "1.1.0",
4
5
  "description": "An observable event stream library.",
5
6
  "keywords": [
6
7
  "observability",
@@ -9,13 +10,13 @@
9
10
  "C#",
10
11
  "csharp"
11
12
  ],
12
- "homepage": "https://github.com/outernet-foundation/ObserveThing#readme",
13
+ "homepage": "https://github.com/FofX-Games/ObserveThing#readme",
13
14
  "bugs": {
14
- "url": "https://github.com/outernet-foundation/ObserveThing/issues"
15
+ "url": "https://github.com/FofX-Games/ObserveThing/issues"
15
16
  },
16
17
  "repository": {
17
18
  "type": "git",
18
- "url": "git+https://github.com/outernet-foundation/ObserveThing.git"
19
+ "url": "https://github.com/FofX-Games/ObserveThing"
19
20
  },
20
21
  "license": "MIT",
21
22
  "author": "Elliot Pjecha <epjecha@gmail.com>",
@@ -1,72 +0,0 @@
1
- using System;
2
- using System.Collections.Generic;
3
-
4
- namespace ObserveThing
5
- {
6
- public class BatchObservable<T> : IInitializationOperationsProvider<BatchOp<T>>, IPendingObserver where T : IOperation
7
- {
8
- public bool immediate { get; } = false;
9
- public uint priority { get; private set; }
10
- public bool disposed { get; private set; }
11
-
12
- private IObservable<T> _source;
13
- private Observable<BatchOp<T>> _operand;
14
- private IDisposable _subscriptions;
15
- private bool _pending;
16
-
17
- private List<T> _batchedOperations = new List<T>();
18
-
19
- public BatchObservable(IObservable<T> source, Observable<BatchOp<T>> operand)
20
- {
21
- priority = source.context.AllocateObserverPriority();
22
-
23
- _source = source;
24
- _operand = operand;
25
-
26
- _subscriptions = source.Subscribe(new Observer<T>(
27
- onNext: HandleSourceOperation,
28
- onError: operand.OnError,
29
- onDispose: Dispose
30
- ), immediate: true);
31
- }
32
-
33
- private void HandleSourceOperation(T operation)
34
- {
35
- _batchedOperations.Add(operation);
36
-
37
- if (_pending)
38
- return;
39
-
40
- _pending = true;
41
- _source.context.RegisterPendingObserver(this);
42
- _source.context.NotifyPendingObserversIfNecessary();
43
- }
44
-
45
- public IEnumerable<BatchOp<T>> GetInitializationOperations()
46
- {
47
- List<T> initOps = new List<T>();
48
- var subscription = _source.Subscribe(new Observer<T>(x => initOps.Add(x)));
49
- subscription.Dispose();
50
- yield return new BatchOp<T>() { source = _source, operations = initOps };
51
- }
52
-
53
- public void SendNext()
54
- {
55
- _pending = false;
56
-
57
- var batch = _batchedOperations.ToArray();
58
- _batchedOperations.Clear();
59
-
60
- _operand.EnqueueOperation(new BatchOp<T>() { source = _source, operations = batch });
61
- }
62
-
63
- public void Dispose()
64
- {
65
- disposed = true;
66
- _source.context.DeallocateObserverPriority(priority);
67
- _subscriptions?.Dispose();
68
- _subscriptions = null;
69
- _operand.Dispose();
70
- }
71
- }
72
- }
@@ -1,2 +0,0 @@
1
- fileFormatVersion: 2
2
- guid: d36db333036392248810c9ce317875ec
@@ -1,2 +0,0 @@
1
- fileFormatVersion: 2
2
- guid: 8007fd4897c313b408cb6a42f4583fe8