Ejemplo n.º 1
0
        public void SerializeAndDeserialize_WithContravariantUserDefinedAdapter_AdapterIsInvokedCorrectly()
        {
            var jsonSerializationParameters = new JsonSerializationParameters
            {
                UserDefinedAdapters = new List <IJsonAdapter>
                {
                    new DummyAdapter(),
                    new ShapeAdapter(),
                    new AnimalAdapter()
                }
            };

            var src = new ClassWithShapes
            {
                Shape  = new Square(),
                Square = new Square(),
                Circle = new Circle(),

                Animal = new Cat(),
                Dog    = new Dog(),
                Cat    = null
            };

            var json = JsonSerialization.ToJson(src, jsonSerializationParameters);

            Assert.That(UnFormat(json), Is.EqualTo(@"{""Shape"":""a shape"",""Square"":""a shape"",""Circle"":""a shape"",""Animal"":""an animal"",""Dog"":""a dog"",""Cat"":""a cat""}"));
        }
        public void SerializeAndDeserialize_WithContravariantUserDefinedAdapter_AdapterIsInvokedCorrectly()
        {
            var status = new List <TestStatus>();

            var binarySerializationParameters = new BinarySerializationParameters
            {
                UserDefinedAdapters = new List <IBinaryAdapter>
                {
                    new DummyAdapter(),
                    new ShapeAdapter {
                        Status = status
                    },
                    new AnimalAdapter {
                        Status = status
                    },
                }
            };

            var src = new ClassWithShapes
            {
                Shape  = new Square(),
                Square = new Square(),
                Circle = new Circle(),
                Animal = new Cat(),
                Dog    = new Dog(),
                Cat    = null
            };

            using (var stream = new UnsafeAppendBuffer(16, 4, Allocator.Temp))
            {
                BinarySerialization.ToBinary(&stream, src, binarySerializationParameters);

                Assert.That(status.SequenceEqual(new[]
                {
                    TestStatus.Shape, TestStatus.Shape, TestStatus.Shape, TestStatus.Animal, TestStatus.Dog, TestStatus.Cat
                }));
            }
        }