public void TestCollect() { var ea = new FirableEvent<int>(); var o = new List<int>(); var sum = ea.Hold(100).Collect((a, s) => new Tuple<int, int>(a + s, a + s), 0); var l = sum.SubscribeWithInitialFire(o.Add); ea.Fire(5); ea.Fire(7); ea.Fire(1); ea.Fire(2); ea.Fire(3); l.Dispose(); ea.Dispose(); sum.Dispose(); AssertArraysEqual(Arrays<int>.AsList(100, 105, 112, 113, 115, 118), o); }
public void TestAccum() { var ea = new FirableEvent<int>(); var o = new List<int>(); var sum = ea.Accum((a, s) => a + s, 100); var l = sum.SubscribeWithInitialFire(o.Add); ea.Fire(5); ea.Fire(7); ea.Fire(1); ea.Fire(2); ea.Fire(3); l.Dispose(); ea.Dispose(); sum.Dispose(); AssertArraysEqual(Arrays<int>.AsList(100, 105, 112, 113, 115, 118), o); }
public void TestRepeat1() { FirableEvent<int> src = new FirableEvent<int>(); var r = src.Repeat(); var o = new List<int>(); var s = r.Subscribe(o.Add); src.Fire(1); src.Fire(2); src.Fire(3); AssertArraysEqual(Arrays<int>.AsList(1,2,3), o); s.Dispose(); r.Dispose(); src.Dispose(); }
public void TestHold() { var evt = new FirableEvent<int>(); var behavior = evt.Hold(0); var results = new List<int>(); var listener = behavior.Subscribe(results.Add); evt.Fire(2); evt.Fire(9); listener.Dispose(); evt.Dispose(); behavior.Dispose(); AssertArraysEqual(Arrays<int>.AsList(2, 9), results); }
public void TestSwitchE() { var ese = new FirableEvent<Se>(); var ea = ese.Map(s => s.C1); var eb = ese.Map(s => s.C2); var tmp1 = ese.Map(s => s.Event); var tmp2 = tmp1.Filter(x => x != null); var bsw = tmp2.Hold(ea); var o = new List<char>(); var eo = bsw.Switch(); var l = eo.Subscribe(o.Add); ese.Fire(new Se('A', 'a', null)); ese.Fire(new Se('B', 'b', null)); ese.Fire(new Se('C', 'c', eb)); ese.Fire(new Se('D', 'd', null)); ese.Fire(new Se('E', 'e', ea)); ese.Fire(new Se('F', 'f', null)); ese.Fire(new Se('G', 'g', eb)); ese.Fire(new Se('H', 'h', ea)); ese.Fire(new Se('I', 'i', ea)); l.Dispose(); ese.Dispose(); ea.Dispose(); eb.Dispose(); bsw.Dispose(); eo.Dispose(); AssertArraysEqual(Arrays<char>.AsList('A', 'B', 'C', 'd', 'e', 'F', 'G', 'h', 'I'), o); }
public void TestSnapshot() { var publisher = new FirableEvent<int>(); var behavior = new Behavior<int>(0, publisher); var evt = new FirableEvent<long>(); var results = new List<string>(); Func<long, int, string> snapshotFunction = (x, y) => string.Format("{0} {1}", x, y); var listener = evt.Snapshot(snapshotFunction, behavior).Subscribe(results.Add); evt.Fire(100L); publisher.Fire(2); evt.Fire(200L); publisher.Fire(9); publisher.Fire(1); evt.Fire(300L); listener.Dispose(); behavior.Dispose(); evt.Dispose(); AssertArraysEqual(Arrays<string>.AsList("100 0", "200 2", "300 1"), results); }
public void TestHoldIsDelayed() { var evt = new FirableEvent<int>(); var behavior = evt.Hold(0); var pair = evt.Snapshot((a, b) => a + " " + b, behavior); var results = new List<string>(); var listener = pair.Subscribe(results.Add); evt.Fire(2); evt.Fire(3); listener.Dispose(); evt.Dispose(); behavior.Dispose(); pair.Dispose(); AssertArraysEqual(Arrays<string>.AsList("2 0", "3 2"), results); }