public void JsonMessageSerializer_SimpleRoundTripTest(string name, int value) {
            // given
            StringBuilder data = new StringBuilder();
            FakeMessage message = new FakeMessage(name, value);

            // when
            JsonMessageSerializer serializer = CreateSerializer(data);
            serializer.SerializeMessage(message);

            JsonMessageDeserializer deserializer = CreateDeserializer(data);
            FakeMessage deserializedMessage = (FakeMessage) deserializer.DeserializeMessage();

            // then
            Assert.That(() => deserializedMessage.Prop1, Is.EqualTo(name));
            Assert.That(() => deserializedMessage.Prop2, Is.EqualTo(value));
        }
        public void JsonMessageSerializer_CanIgnorePartialMessage() {
            // given
            StringBuilder data = new StringBuilder();
            JsonMessageSerializer serializer = CreateSerializer(data);
            FakeMessage message = new FakeMessage("ABC ABC", 2345);
            FakeMessage message2 = new FakeMessage("DSFGDSDS", 2345);
            serializer.SerializeMessage(message);
            serializer.SerializeMessage(message2);

            // ... corrupt first message
            data.Remove(0, 6);

            Debug.Print("Message stream: {0}", data);

            // when
            JsonMessageDeserializer deserializer = CreateDeserializer(data);
            FakeMessage deserializedMessage = (FakeMessage) deserializer.DeserializeMessage();

            // then
            Assert.That(() => deserializedMessage.Prop1, Is.EqualTo(message2.Prop1));
            Assert.That(() => deserializedMessage.Prop2, Is.EqualTo(message2.Prop2));
        }