public void TestFilterAdd() { IReactiveSet <int> source = new ReactiveSet <int>(); FilterSet <int> filtered = new FilterSet <int>(source, x => x > 4); source.Add(3); source.Add(4); source.Add(5); source.Add(6); Assert.IsFalse(filtered.IsSubscribed); List <int> ints = new List <int>(); System.IDisposable disp = filtered.ObserveAdd().Subscribe(@event => { ints.Add(@event.Value); }); CollectionAssert.AreEquivalent(ints, new [] { 5, 6 }); Assert.IsTrue(filtered.IsSubscribed); source.Add(7); CollectionAssert.AreEquivalent(ints, new [] { 5, 6, 7 }); disp.Dispose(); Assert.IsFalse(filtered.IsSubscribed); }
public void TestAdd() { IReactiveSet <int> set = new ReactiveSet <int>(); Assert.IsTrue(set.Add(2)); Assert.IsFalse(set.Add(2)); Assert.IsTrue(set.Add(4)); Assert.AreEqual(2, set.Count); CollectionAssert.AreEquivalent(set, new[] { 2, 4 }); }
public void TestClear() { IReactiveSet <int> set = new ReactiveSet <int>(); set.Add(2); set.Add(2); set.Add(4); set.Clear(); Assert.AreEqual(0, set.Count); CollectionAssert.AreEquivalent(set, new int[] {}); }
public void TestAdd() { IReactiveSet <int> source = new ReactiveSet <int>(); source.Add(3); ReactiveSetView <int> view = new ReactiveSetView <int>(source); Assert.AreEqual(1, view.Count); Assert.AreEqual(3, view[0]); source.Add(4); Assert.AreEqual(4, view[1]); }
static void Main(string[] args) { var set = new ReactiveSet <int>(new[] { 1 }); var buffered = set.Buffer(3); buffered.ToImmutableSets().Select(x => string.Join(", ", x)).Subscribe(Console.WriteLine); set.Add(4); set.Add(8); set.Add(12); set.Add(16); Console.Read(); }
public void TestRemove() { IReactiveSet <int> set = new ReactiveSet <int>(); set.Add(2); set.Add(2); set.Add(4); Assert.IsFalse(set.Remove(5)); Assert.IsTrue(set.Remove(2)); Assert.AreEqual(1, set.Count); CollectionAssert.AreEquivalent(set, new[] { 4 }); }
public void TestAddObservable() { IReactiveSet <int> set = new ReactiveSet <int>(); int?lastAdded = null; set.ObserveAdd().Subscribe(@event => lastAdded = @event.Value); Assert.IsTrue(set.Add(2)); Assert.AreEqual(2, lastAdded); lastAdded = null; Assert.IsFalse(set.Add(2)); Assert.IsNull(lastAdded); Assert.IsTrue(set.Add(4)); Assert.AreEqual(4, lastAdded); }
public void TestRemoveObservable() { IReactiveSet <int> set = new ReactiveSet <int>(); int?lastRemoved = null; set.ObserveRemove().Subscribe(@event => lastRemoved = @event.Value); set.Add(2); set.Add(3); set.Add(4); set.Remove(3); Assert.AreEqual(3, lastRemoved); lastRemoved = null; set.Remove(3); Assert.IsNull(lastRemoved); set.Remove(4); Assert.AreEqual(4, lastRemoved); }
public void TestChainDispose() { IReactiveSet <int> source = new ReactiveSet <int>(); FilterSet <int> filtered = new FilterSet <int>(source, x => x >= 4); FilterSet <int> filtered2 = new FilterSet <int>(filtered, x => x <= 20); FilterSet <int> filtered3 = new FilterSet <int>(filtered2, x => x % 2 == 0); source.Add(3); source.Add(5); source.Add(10); source.Add(99); Assert.IsFalse(filtered.IsSubscribed); Assert.IsFalse(filtered2.IsSubscribed); Assert.IsFalse(filtered3.IsSubscribed); var view = new ReactiveSetView <int>(filtered3); Assert.IsTrue(filtered.IsSubscribed); Assert.IsTrue(filtered2.IsSubscribed); Assert.IsTrue(filtered3.IsSubscribed); Assert.AreEqual(1, view.Count); Assert.AreEqual(10, view[0]); source.Add(13); Assert.AreEqual(1, view.Count); Assert.AreEqual(10, view[0]); source.Add(16); Assert.AreEqual(2, view.Count); Assert.AreEqual(10, view[0]); Assert.AreEqual(16, view[1]); view.Dispose(); Assert.IsFalse(filtered.IsSubscribed); Assert.IsFalse(filtered2.IsSubscribed); Assert.IsFalse(filtered3.IsSubscribed); view = new ReactiveSetView <int>(filtered2); var view2 = new ReactiveSetView <int>(filtered); Assert.IsTrue(filtered.IsSubscribed); Assert.IsTrue(filtered2.IsSubscribed); Assert.IsFalse(filtered3.IsSubscribed); CollectionAssert.AreEquivalent(view, new int[] { 5, 10, 13, 16 }); CollectionAssert.AreEquivalent(view2, new int[] { 5, 10, 13, 16, 99 }); view.Dispose(); Assert.IsTrue(filtered.IsSubscribed); Assert.IsFalse(filtered2.IsSubscribed); Assert.IsFalse(filtered3.IsSubscribed); view2.Dispose(); Assert.IsFalse(filtered.IsSubscribed); Assert.IsFalse(filtered2.IsSubscribed); Assert.IsFalse(filtered3.IsSubscribed); }