public void TestReceiveMessagesFromTwoTeeSplitOutputs() { messagesReceived = new List <IPipeMessage>(); // create a message to send on pipe 1 IPipeMessage message = new Message(Message.NORMAL, new { testProp = 1 }); // create output pipes 1 and 2 IPipeFitting pipe1 = new Pipe(); IPipeFitting pipe2 = new Pipe(); // create and connect anonymous listeners bool connected1 = pipe1.Connect(new PipeListener(this, CallBackMethod)); bool connected2 = pipe2.Connect(new PipeListener(this, CallBackMethod)); // create splitting tee (args are first two output fittings of tee) TeeSplit teeSplit = new TeeSplit(pipe1, pipe2); // write messages to their respective pipes bool written = teeSplit.Write(message); // test assertions Assert.IsTrue(message is IPipeMessage, "Expecting message is IPipeMessage"); Assert.IsTrue(pipe1 is Pipe, "Expecting pipe1 is Pipe"); Assert.IsTrue(pipe2 is Pipe, "Expecting pipe2 is Pipe"); Assert.IsTrue(teeSplit is TeeSplit, "Expecting teeSplit is TeeSplit"); Assert.IsTrue(connected1, "Expecting connected anonymous listener to pipe 1"); Assert.IsTrue(connected2, "Expecting connected anonymous listener to pipe 2"); Assert.IsTrue(written, "Expecting wrote single message to tee"); // test that both messages were received, then test // FIFO order by inspecting the messages themselves Assert.IsTrue(messagesReceived.Count == 2, "Expecting received 2 messages"); // test message 1 assertions IPipeMessage message1 = messagesReceived[0]; messagesReceived.RemoveAt(0); Assert.IsTrue(message1 is IPipeMessage, "Expecting message1 is IPipeMessage"); Assert.IsTrue(message1 == message, "Expecting message1 == message"); // test message 2 assertions IPipeMessage message2 = messagesReceived[0]; messagesReceived.RemoveAt(0); Assert.IsTrue(message2 is IPipeMessage, "Expecting message2 is IPipeMessage"); Assert.IsTrue(message2 == message, "Expecting message2 == message"); }
public void TestDisconnectFitting() { messagesReceived = new List <IPipeMessage>(); // create input pipe IPipeFitting input1 = new Pipe(); // create output pipes 1, 2, 3 and 4 IPipeFitting pipe1 = new Pipe(); IPipeFitting pipe2 = new Pipe(); IPipeFitting pipe3 = new Pipe(); IPipeFitting pipe4 = new Pipe(); // setup pipelisteners pipe1.Connect(new PipeListener(this, CallBackMethod)); pipe2.Connect(new PipeListener(this, CallBackMethod)); pipe3.Connect(new PipeListener(this, CallBackMethod)); pipe4.Connect(new PipeListener(this, CallBackMethod)); // create splitting tee TeeSplit teeSplit = new TeeSplit(); // add outputs teeSplit.Connect(pipe1); teeSplit.Connect(pipe2); teeSplit.Connect(pipe3); teeSplit.Connect(pipe4); // test assertions Assert.IsTrue(teeSplit.DisconnectFitting(pipe4) == pipe4, "Expecting teeSplit.DisconnectFitting(pipe4) == pipe4"); Assert.IsTrue(teeSplit.DisconnectFitting(pipe4) == null, "Expecting teeSplit.DisconnectFitting(pipe4) == null"); // Write a message to the tee teeSplit.Write(new Message(Message.NORMAL)); // test assertions Assert.IsTrue(messagesReceived.Count == 3, "Expecting messagesReceived.Count == 3"); }