public static void Test_Serialized_Stack_Results_In_Same_Order()
{
ProtobufnetRegistry registry = new ProtobufnetRegistry();
registry.Register(typeof(NetworkMessage));
registry.Register(typeof(RequestMessage));
registry.Register(typeof(EventMessage));
registry.Register(typeof(ResponseMessage));
RequestMessage message = new RequestMessage(new StatusChangePayload(Common.NetStatus.Connected));
message.Push(1);
message.Push(2);
message.Push(3);
message.Push(4);
ProtobufnetSerializerStrategy serializer = new ProtobufnetSerializerStrategy();
Assert.NotNull((new ProtobufnetDeserializerStrategy()).Deserialize<RequestMessage>(serializer.Serialize(message as NetworkMessage)));
RequestMessage deserializedMessage = (new ProtobufnetDeserializerStrategy()).Deserialize<RequestMessage>(serializer.Serialize(message as NetworkMessage));
//check that the stack is in the same order
Assert.AreEqual(message.Pop(), deserializedMessage.Pop());
Assert.AreEqual(message.Pop(), deserializedMessage.Pop());
Assert.AreEqual(message.Pop(), deserializedMessage.Pop());
Assert.AreEqual(message.Pop(), deserializedMessage.Pop());
}