Example #1
0
        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);
        }
Example #2
0
 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);
 }
Example #3
0
        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);
        }