示例#1
0
 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);
 }
示例#2
0
 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);
 }
示例#3
0
 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();
 }
示例#4
0
 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);
 }
示例#5
0
 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);
 }
示例#6
0
        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);
        }
示例#7
0
 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);
 }