예제 #1
0
 public void TestValues()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   var l = b.Value().Listen(x => @out.Add(x));
   b.Send(2);
   b.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 9, 2, 7 }, @out);
 }
예제 #2
0
 public void TestValuesThenMap()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   Listener l = b.Value().Map<int>(x => x + 100).Listen(x => { @out.Add(x); });
   b.Send(2);
   b.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 109, 102, 107 }, @out);
 }
예제 #3
0
        public void TestValuesThenCoalesce()
        {
            var      b    = new BehaviorSink <int>(9);
            var      @out = new List <int>();
            Listener l    = b.Value().Coalesce((fst, snd) => snd).Listen(x => { @out.Add(x); });

            b.Send(2);
            b.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 9, 2, 7 }, @out);
        }
예제 #4
0
        public void TestValuesThenMap()
        {
            var      b    = new BehaviorSink <int>(9);
            var      @out = new List <int>();
            Listener l    = b.Value().Map <int>(x => x + 100).Listen(x => { @out.Add(x); });

            b.Send(2);
            b.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 109, 102, 107 }, @out);
        }
예제 #5
0
        public void TestValuesThenFilter()
        {
            var      b    = new BehaviorSink <int>(9);
            var      @out = new List <int>();
            Listener l    = b.Value().Filter(a => true).Listen(x => { @out.Add(x); });

            b.Send(2);
            b.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 9, 2, 7 }, @out);
        }
예제 #6
0
        public void TestValues()
        {
            var b    = new BehaviorSink <int>(9);
            var @out = new List <int>();
            var l    = b.Value().Listen(x => @out.Add(x));

            b.Send(2);
            b.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 9, 2, 7 }, @out);
        }
예제 #7
0
        public void TestValuesTwiceThenOnce()
        {
            var      b    = new BehaviorSink <int>(9);
            var      @out = new List <int>();
            Listener l    = DoubleUp(b.Value()).Once().Listen(x => { @out.Add(x); });

            b.Send(2);
            b.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 9 }, @out);
        }
예제 #8
0
        public void TestValuesTwiceThenCoalesce()
        {
            var      b    = new BehaviorSink <int>(9);
            var      @out = new List <int>();
            Listener l    = DoubleUp(b.Value()).Coalesce((fst, snd) => fst + snd).Listen(x => { @out.Add(x); });

            b.Send(2);
            b.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 18, 4, 14 }, @out);
        }
예제 #9
0
        public void TestValuesLateListen()
        {
            var         b     = new BehaviorSink <int>(9);
            var         @out  = new List <int>();
            Event <int> value = b.Value();

            b.Send(8);
            Listener l = value.Listen(x => { @out.Add(x); });

            b.Send(2);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 8, 2 }, @out);
        }
예제 #10
0
        public void TestValuesThenMerge()
        {
            var      bi   = new BehaviorSink <int>(9);
            var      bj   = new BehaviorSink <int>(2);
            var      @out = new List <int>();
            Listener l    = Event <int> .MergeWith((x, y) => x + y, bi.Value(), bj.Value())
                            .Listen(x => { @out.Add(x); });

            bi.Send(1);
            bj.Send(4);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 11, 1, 4 }, @out);
        }
예제 #11
0
        public void TestValuesTwiceThenSnapshot()
        {
            var      bi   = new BehaviorSink <int>(9);
            var      bc   = new BehaviorSink <char>('a');
            var      @out = new List <char>();
            Listener l    = DoubleUp(bi.Value()).Snapshot(bc).Listen(x => { @out.Add(x); });

            bc.Send('b');
            bi.Send(2);
            bc.Send('c');
            bi.Send(7);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 'a', 'a', 'b', 'b', 'c', 'c' }, @out);
        }
예제 #12
0
 public void TestValuesThenCoalesce()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   Listener l = b.Value().Coalesce((fst, snd) => snd).Listen(x => { @out.Add(x); });
   b.Send(2);
   b.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 9, 2, 7 }, @out);
 }
예제 #13
0
 public void TestValuesTwiceThenCoalesce()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   Listener l = DoubleUp(b.Value()).Coalesce((fst, snd) => fst + snd).Listen(x => { @out.Add(x); });
   b.Send(2);
   b.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 18, 4, 14 }, @out);
 }
예제 #14
0
 public void TestValuesTwiceThenSnapshot()
 {
   var bi = new BehaviorSink<int>(9);
   var bc = new BehaviorSink<char>('a');
   var @out = new List<char>();
   Listener l = DoubleUp(bi.Value()).Snapshot(bc).Listen(x => { @out.Add(x); });
   bc.Send('b');
   bi.Send(2);
   bc.Send('c');
   bi.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 'a', 'a', 'b', 'b', 'c', 'c' }, @out);
 }
예제 #15
0
 public void TestValuesThenMerge()
 {
   var bi = new BehaviorSink<int>(9);
   var bj = new BehaviorSink<int>(2);
   var @out = new List<int>();
   Listener l = Event<int>.MergeWith((x, y) => x + y, bi.Value(), bj.Value())
       .Listen(x => { @out.Add(x); });
   bi.Send(1);
   bj.Send(4);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 11, 1, 4 }, @out);
 }
예제 #16
0
 public void TestValuesLateListen()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   Event<int> value = b.Value();
   b.Send(8);
   Listener l = value.Listen(x => { @out.Add(x); });
   b.Send(2);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 8, 2 }, @out);
 }
예제 #17
0
 public void TestValuesTwiceThenOnce()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   Listener l = DoubleUp(b.Value()).Once().Listen(x => { @out.Add(x); });
   b.Send(2);
   b.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 9 }, @out);
 }
예제 #18
0
 public void TestValuesThenFilter()
 {
   var b = new BehaviorSink<int>(9);
   var @out = new List<int>();
   Listener l = b.Value().Filter(a => true).Listen(x => { @out.Add(x); });
   b.Send(2);
   b.Send(7);
   l.Unlisten();
   CollectionAssert.AreEqual(new[] { 9, 2, 7 }, @out);
 }