protected void ConnectionHandlerTest(Node node0, Node node1, ConnectionHandler ch0, ConnectionHandler ch1) { Console.WriteLine(node0.Address + " " + node1.Address); var mdh0 = new MockDataHandler(); var mdh1 = new MockDataHandler(); MemBlock zero = MemBlock.Reference(new byte[] {0}); EventHandler cb = delegate(object o, EventArgs ea) { Assert.AreEqual(o, zero, "Zero"); }; mdh0.HandleDataCallback += cb; mdh1.HandleDataCallback += cb; ch0.Subscribe(mdh0, null); ch1.Subscribe(mdh1, null); Assert.AreEqual(mdh0.Count, 0, "MDH0 0"); Assert.AreEqual(mdh1.Count, 0, "MDH1 0"); ch0.ConnectTo(node1.Address); Assert.IsTrue(AreConnected(node0, node1), "ConnectionHandler ConnectTo"); SimpleTimer.RunSteps(fifteen_mins * 2); Assert.IsFalse(Simulator.AreConnected(node0, node1)); ch0.Send(node1.Address, zero); SimpleTimer.RunSteps(fifteen_mins / 60); Assert.AreEqual(mdh0.Count, 0, "MDH0 1"); Assert.AreEqual(mdh1.Count, 0, "MDH1 1"); Assert.IsTrue(AreConnected(node0, node1), "ConnectionHandler ConnectTo"); SimpleTimer.RunSteps(fifteen_mins / 3); ch0.Send(node1.Address, zero); SimpleTimer.RunSteps(fifteen_mins / 60); Assert.AreEqual(mdh0.Count, 0, "MDH0 2"); Assert.AreEqual(mdh1.Count, 1, "MDH1 2"); Assert.IsTrue(Simulator.AreConnected(node0, node1), "Continuous 0"); SimpleTimer.RunSteps(fifteen_mins / 3); ch0.Send(node1.Address, zero); SimpleTimer.RunSteps(fifteen_mins / 60); Assert.AreEqual(mdh0.Count, 0, "MDH0 3"); Assert.AreEqual(mdh1.Count, 2, "MDH1 3"); Assert.IsTrue(Simulator.AreConnected(node0, node1), "Continuous 1"); SimpleTimer.RunSteps(fifteen_mins / 3); ch0.Send(node1.Address, zero); SimpleTimer.RunSteps(fifteen_mins / 60); Assert.AreEqual(mdh0.Count, 0, "MDH0 4"); Assert.AreEqual(mdh1.Count, 3, "MDH1 4"); Assert.IsTrue(Simulator.AreConnected(node0, node1), "Continuous 2"); SimpleTimer.RunSteps(fifteen_mins / 3); ch1.Send(node0.Address, zero); SimpleTimer.RunSteps(fifteen_mins / 60); Assert.AreEqual(mdh0.Count, 1, "MDH0 5"); Assert.AreEqual(mdh1.Count, 3, "MDH1 5"); Assert.IsTrue(Simulator.AreConnected(node0, node1), "Continuous 3"); SimpleTimer.RunSteps(fifteen_mins * 2); Assert.IsFalse(Simulator.AreConnected(node0, node1), "Dead"); Assert.AreEqual(mdh0.Count, 1, "MDH0 6"); Assert.AreEqual(mdh1.Count, 3, "MDH1 6"); }