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); }
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); }
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); }