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 })); } }