コード例 #1
0
ファイル: CellTests.cs プロジェクト: zhouwensi/sodium
        public void TestSwitchCSimultaneous()
        {
            Sc2 sc1 = new Sc2(0);
            DiscreteCellSink <Sc2> csc  = DiscreteCell.CreateSink(sc1);
            DiscreteCell <int>     co   = csc.Map <DiscreteCell <int> >(b => b.C).SwitchC();
            List <int>             @out = new List <int>();
            IListener l   = co.Listen(@out.Add);
            Sc2       sc2 = new Sc2(3);
            Sc2       sc3 = new Sc2(4);
            Sc2       sc4 = new Sc2(7);

            sc1.C.Send(1);
            sc1.C.Send(2);
            csc.Send(sc2);
            sc1.C.Send(3);
            sc2.C.Send(4);
            sc3.C.Send(5);
            csc.Send(sc3);
            sc3.C.Send(6);
            sc3.C.Send(7);
            Transaction.RunVoid(() =>
            {
                sc3.C.Send(2);
                csc.Send(sc4);
                sc4.C.Send(8);
            });
            sc4.C.Send(9);
            l.Unlisten();
            CollectionAssert.AreEqual(new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, @out);
        }
コード例 #2
0
        public void TestSwitchCSimultaneous()
        {
            Sc2            sb1  = new Sc2(0);
            CellSink <Sc2> csb  = new CellSink <Sc2>(sb1);
            Cell <int>     bo   = csb.Map <Cell <int> >(b => b.C).SwitchC();
            List <int>     @out = new List <int>();

            using (bo.Listen(@out.Add))
            {
                Sc2 sc2 = new Sc2(3);
                Sc2 sb3 = new Sc2(4);
                Sc2 sb4 = new Sc2(7);
                sb1.C.Send(1);
                sb1.C.Send(2);
                csb.Send(sc2);
                sb1.C.Send(3);
                sc2.C.Send(4);
                sb3.C.Send(5);
                csb.Send(sb3);
                sb3.C.Send(6);
                sb3.C.Send(7);
                Transaction.RunVoid(() =>
                {
                    sb3.C.Send(2);
                    csb.Send(sb4);
                    sb4.C.Send(8);
                });
                sb4.C.Send(9);
            }
            CollectionAssert.AreEqual(new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, @out);
        }
コード例 #3
0
ファイル: CellTests.cs プロジェクト: Angeldude/sodium
 public void TestSwitchCSimultaneous()
 {
     Sc2 sc1 = new Sc2(0);
     CellSink<Sc2> csc = new CellSink<Sc2>(sc1);
     Cell<int> co = csc.Map<Cell<int>>(b => b.C).SwitchC();
     List<int> @out = new List<int>();
     using (co.Listen(@out.Add))
     {
         Sc2 sc2 = new Sc2(3);
         Sc2 sc3 = new Sc2(4);
         Sc2 sc4 = new Sc2(7);
         sc1.C.Send(1);
         sc1.C.Send(2);
         csc.Send(sc2);
         sc1.C.Send(3);
         sc2.C.Send(4);
         sc3.C.Send(5);
         csc.Send(sc3);
         sc3.C.Send(6);
         sc3.C.Send(7);
         Transaction.RunVoid(() =>
         {
             sc3.C.Send(2);
             csc.Send(sc4);
             sc4.C.Send(8);
         });
         sc4.C.Send(9);
     }
     CollectionAssert.AreEqual(new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, @out);
 }