public void Test_Can_Serialize_Collections_With_Multiple_Inheritance_Type()
        {
            ProtobufnetSerializerStrategy   serializer   = new ProtobufnetSerializerStrategy();
            ProtobufnetDeserializerStrategy deserializer = new ProtobufnetDeserializerStrategy();

            ProtobufnetRegistry registry = new ProtobufnetRegistry();

            registry.Register(typeof(TestClassBase));
            registry.Register(typeof(TestClassChild1));
            registry.Register(typeof(TestClassChild2));

            TestClassBase testObject = new TestClassChild2()
            {
                i = 5, j = 6, k = new int[] { 1, 2, 3, 4 }
            };

            TestClassChild2 child = deserializer.Deserialize <TestClassBase>(serializer.Serialize(testObject)) as TestClassChild2;

            Assert.AreEqual(5, child.i);
            Assert.AreEqual(6, child.j);
            Assert.AreEqual(4, child.k.Count());

            for (int i = 0; i < child.k.Count(); i++)
            {
                Assert.AreEqual(i + 1, child.k[i]);
            }
        }
        public void Test_Can_Serialize_Payloads_With_Collections()
        {
            ProtobufnetSerializerStrategy   serializer   = new ProtobufnetSerializerStrategy();
            ProtobufnetDeserializerStrategy deserializer = new ProtobufnetDeserializerStrategy();

            ProtobufnetRegistry registry = new ProtobufnetRegistry();

            registry.Register(typeof(NetworkMessage));
            registry.Register(typeof(ResponseMessage));
            registry.Register(typeof(GameServerListResponsePayload));

            GameServerListResponsePayload payload = new GameServerListResponsePayload(GameServerListResponseCode.Success, new List <SimpleGameServerDetailsModel>(8)
            {
                new SimpleGameServerDetailsModel("Hello", IPAddress.Any, 5, ServerRegion.EU)
            });
            ResponseMessage rMessage = new ResponseMessage(payload);

            rMessage.Payload.Serialize(serializer);

            ResponseMessage rMessageDeserializer = deserializer.Deserialize <NetworkMessage>(serializer.Serialize(rMessage as NetworkMessage)) as ResponseMessage;

            rMessageDeserializer.Payload.Deserialize(deserializer);

            GameServerListResponsePayload dPayload = rMessageDeserializer.Payload.Data as GameServerListResponsePayload;

            Assert.AreEqual(1, dPayload.GameServerDetails.Count());
            Assert.AreEqual("Hello", dPayload.GameServerDetails.FirstOrDefault().Name);
        }
		public void Test_Can_Serialize_Collections_With_Multiple_Inheritance_Type()
		{
			ProtobufnetSerializerStrategy serializer = new ProtobufnetSerializerStrategy();
			ProtobufnetDeserializerStrategy deserializer = new ProtobufnetDeserializerStrategy();

			ProtobufnetRegistry registry = new ProtobufnetRegistry();

			registry.Register(typeof(TestClassBase));
			registry.Register(typeof(TestClassChild1));
			registry.Register(typeof(TestClassChild2));

			TestClassBase testObject = new TestClassChild2() { i = 5, j = 6, k = new int[] { 1, 2, 3, 4 } };

			TestClassChild2 child = deserializer.Deserialize<TestClassBase>(serializer.Serialize(testObject)) as TestClassChild2;

			Assert.AreEqual(5, child.i);
			Assert.AreEqual(6, child.j);
			Assert.AreEqual(4, child.k.Count());

			for (int i = 0; i < child.k.Count(); i++)
				Assert.AreEqual(i + 1, child.k[i]);
		}
		public void Test_Can_Serialize_Payloads_With_Collections()
		{
			ProtobufnetSerializerStrategy serializer = new ProtobufnetSerializerStrategy();
			ProtobufnetDeserializerStrategy deserializer = new ProtobufnetDeserializerStrategy();

			ProtobufnetRegistry registry = new ProtobufnetRegistry();

			registry.Register(typeof(NetworkMessage));
			registry.Register(typeof(ResponseMessage));
			registry.Register(typeof(GameServerListResponsePayload));

			GameServerListResponsePayload payload = new GameServerListResponsePayload(GameServerListResponseCode.Success, new List<SimpleGameServerDetailsModel>(8) { new SimpleGameServerDetailsModel("Hello", IPAddress.Any, 5, ServerRegion.EU) });
			ResponseMessage rMessage = new ResponseMessage(payload);
			rMessage.Payload.Serialize(serializer);

			ResponseMessage rMessageDeserializer = deserializer.Deserialize<NetworkMessage>(serializer.Serialize(rMessage as NetworkMessage)) as ResponseMessage;

			rMessageDeserializer.Payload.Deserialize(deserializer);

			GameServerListResponsePayload dPayload = rMessageDeserializer.Payload.Data as GameServerListResponsePayload;

			Assert.AreEqual(1, dPayload.GameServerDetails.Count());
			Assert.AreEqual("Hello", dPayload.GameServerDetails.FirstOrDefault().Name);
		}