public void CanSerializeCyclicReferences() { var stream = new MemoryStream(); var serializer = new Serializer(new SerializerOptions(preserveObjectReferences: true,versionTolerance:true)); var bar = new Bar(); bar.Self = bar; bar.XYZ = 234; serializer.Serialize(bar, stream); stream.Position = 0; var actual = serializer.Deserialize<Bar>(stream); Assert.AreSame(actual, actual.Self); Assert.AreEqual(bar.XYZ, actual.XYZ); }
public void CanSerializeInterfaceField() { var b = new Bar { Foo = new Foo() { A = 123, B = "hello" } }; var stream = new MemoryStream(); var serializer = new Serializer(new SerializerOptions()); serializer.Serialize(b, stream); stream.Position = 0; var res = serializer.Deserialize(stream); }
public void CanSerializeDeepCyclicReferences() { var stream = new MemoryStream(); var serializer = new Serializer(new SerializerOptions(preserveObjectReferences: true,versionTolerance:true)); var root = new Root(); var bar = new Bar(); bar.Self = bar; bar.XYZ = 234; root.B1 = bar; root.B2 = bar; serializer.Serialize(root, stream); stream.Position = 0; var actual = serializer.Deserialize<Root>(stream); Assert.AreSame(actual.B1, actual.B1); Assert.AreSame(actual.B1, actual.B2); Assert.AreSame(actual.B1, actual.B1.Self); Assert.AreSame(actual.B1, actual.B2.Self); }