public void LocalNetworkConnection_OneMessage()
 {
     LocalNetworkConnection localNetworkConnectionA = new LocalNetworkConnection(1300);
     LocalNetworkConnection localNetworkConnectionB = localNetworkConnectionA.GetPairedNetworkConnection();
     {
         OutgoingMessage outgoingMessage = localNetworkConnectionA.GetOutgoingMessageToSend();
         Assert.AreEqual(1300, outgoingMessage.MessageData.Length);
         outgoingMessage.Write(true);
         outgoingMessage.Write(123);
         outgoingMessage.Write("yes");
         Assert.AreEqual(9, outgoingMessage.Length);
         localNetworkConnectionA.SendMessage(outgoingMessage);
     }
     {
         IncomingMessage incomingMessage = localNetworkConnectionB.GetNextIncomingMessage();
         Assert.IsNotNull(incomingMessage);
         Assert.AreEqual(1300, incomingMessage.MessageData.Length);
         Assert.AreEqual(9, incomingMessage.Length);
         Assert.AreEqual(0, incomingMessage.Position);
         Assert.AreEqual(true, incomingMessage.ReadBoolean());
         Assert.AreEqual(1, incomingMessage.Position);
         Assert.AreEqual(8, incomingMessage.BytesLeft);
         Assert.AreEqual(123, incomingMessage.ReadInt32());
         Assert.AreEqual(5, incomingMessage.Position);
         Assert.AreEqual(4, incomingMessage.BytesLeft);
         Assert.AreEqual("yes", incomingMessage.ReadString());
         Assert.AreEqual(9, incomingMessage.Position);
         Assert.AreEqual(0, incomingMessage.BytesLeft);
         Assert.IsNull(localNetworkConnectionB.GetNextIncomingMessage());
     }
 }
        public void LocalNetworkConnection_ManyMessages_Queued()
        {
            LocalNetworkConnection localNetworkConnectionA = new LocalNetworkConnection(1300);
            LocalNetworkConnection localNetworkConnectionB = localNetworkConnectionA.GetPairedNetworkConnection();

            for (int i = 0; i < 20; i++)
            {
                OutgoingMessage outgoingMessage = localNetworkConnectionA.GetOutgoingMessageToSend();
                outgoingMessage.Write(((i % 2) == 0));
                outgoingMessage.Write(i);
                outgoingMessage.Write(i / 2.0f);
                outgoingMessage.Write(i.ToString());
                localNetworkConnectionA.SendMessage(outgoingMessage);
            }
            for (int i = 0; i < 20; i++)
            {
                IncomingMessage incomingMessage = localNetworkConnectionB.GetNextIncomingMessage();
                Assert.IsNotNull(incomingMessage);
                Assert.AreEqual(0, incomingMessage.Position);
                Assert.AreEqual(((i % 2) == 0), incomingMessage.ReadBoolean());
                Assert.AreEqual(i, incomingMessage.ReadInt32());
                Assert.AreEqual(i / 2.0f, incomingMessage.ReadSingle());
                Assert.AreEqual(i.ToString(), incomingMessage.ReadString());
            }
            Assert.IsNull(localNetworkConnectionB.GetNextIncomingMessage());
        }
 public void LocalNetworkConnection_TwoMessages()
 {
     LocalNetworkConnection localNetworkConnectionA = new LocalNetworkConnection(1300);
     LocalNetworkConnection localNetworkConnectionB = localNetworkConnectionA.GetPairedNetworkConnection();
     {
         OutgoingMessage outgoingMessage = localNetworkConnectionA.GetOutgoingMessageToSend();
         Assert.AreEqual(1300, outgoingMessage.MessageData.Length);
         outgoingMessage.Write(true);
         outgoingMessage.Write(100.1f);
         outgoingMessage.Write("yes");
         localNetworkConnectionA.SendMessage(outgoingMessage);
     }
     {
         OutgoingMessage outgoingMessage = localNetworkConnectionA.GetOutgoingMessageToSend();
         Assert.AreEqual(1300, outgoingMessage.MessageData.Length);
         outgoingMessage.Write(false);
         outgoingMessage.Write(200.2f);
         outgoingMessage.Write("no");
         outgoingMessage.Write(123);
         localNetworkConnectionA.SendMessage(outgoingMessage);
     }
     {
         IncomingMessage incomingMessage = localNetworkConnectionB.GetNextIncomingMessage();
         Assert.IsNotNull(incomingMessage);
         Assert.AreEqual(1300, incomingMessage.MessageData.Length);
         Assert.AreEqual(true, incomingMessage.ReadBoolean());
         Assert.AreEqual(100.1f, incomingMessage.ReadSingle());
         Assert.AreEqual("yes", incomingMessage.ReadString());
     }
     {
         IncomingMessage incomingMessage = localNetworkConnectionB.GetNextIncomingMessage();
         Assert.IsNotNull(incomingMessage);
         Assert.AreEqual(1300, incomingMessage.MessageData.Length);
         Assert.AreEqual(false, incomingMessage.ReadBoolean());
         Assert.AreEqual(200.2f, incomingMessage.ReadSingle());
         Assert.AreEqual("no", incomingMessage.ReadString());
         Assert.AreEqual(123, incomingMessage.ReadInt32());
         Assert.IsNull(localNetworkConnectionB.GetNextIncomingMessage());
     }
 }