Пример #1
0
        public void TestNestedGeneric()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(GenericTestClass <, ,>));

            var obj = new GenericTestClass <string, int, bool>();

            obj.Field1 = "test";
            obj.Field2 = 5;
            obj.Field3 = true;

            var obj2 = new GenericTestClass <string, GenericTestClass <string, int, bool>, int>
            {
                Field1 = "ff",
                Field2 = obj,
                Field3 = 12
            };

            var result = BasicTest.TestSerialization(obj2, s);

            Assert.AreEqual(result.Field1, obj2.Field1);
            Assert.AreEqual(result.Field2.Field1, obj.Field1);
            Assert.AreEqual(result.Field2.Field2, obj.Field2);
            Assert.AreEqual(result.Field2.Field3, obj.Field3);
            Assert.AreEqual(result.Field3, obj2.Field3);
        }
Пример #2
0
        public void TestTuple()
        {
            var dto = new TupleTestClass
            {
                Foo = new Tuple <string, List <string> >("Foo", new List <string> {
                    "Foo", "Bar"
                }),
                Bar = new Tuple <int, int, int, int, int, int, int, Tuple <int, int> >(1, 2, 3, 4, 5, 6, 7, new Tuple <int, int>(8, 9))
            };

            var s = new XmSerializerModel();

            s.AddType(typeof(TupleTestClass));
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(dto.Foo.Item1, result.Foo.Item1);
            Assert.AreEqual(dto.Foo.Item2[0], result.Foo.Item2[0]);
            Assert.AreEqual(dto.Foo.Item2[1], result.Foo.Item2[1]);
            Assert.AreEqual(dto.Bar.Item1, result.Bar.Item1);
            Assert.AreEqual(dto.Bar.Item2, result.Bar.Item2);
            Assert.AreEqual(dto.Bar.Item3, result.Bar.Item3);
            Assert.AreEqual(dto.Bar.Item4, result.Bar.Item4);
            Assert.AreEqual(dto.Bar.Item5, result.Bar.Item5);
            Assert.AreEqual(dto.Bar.Item6, result.Bar.Item6);
            Assert.AreEqual(dto.Bar.Item7, result.Bar.Item7);
            Assert.AreEqual(dto.Bar.Rest.Item1, result.Bar.Rest.Item1);
            Assert.AreEqual(dto.Bar.Rest.Item2, result.Bar.Rest.Item2);
        }
Пример #3
0
        public void TestValueTuple()
        {
            var dto = new ValueTupleTestClass
            {
                Foo = ("Foo", new List <string> {
                    "Foo", "Bar"
                }),
                Bar = (1, 2, 3, 4, 5, 6, 7, 8, 9, (10, 11))
            };

            var s = new XmSerializerModel();

            s.AddType(typeof(ValueTupleTestClass));
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(dto.Foo.Item1, result.Foo.Item1);
            Assert.AreEqual(dto.Foo.Item2[0], result.Foo.Item2[0]);
            Assert.AreEqual(dto.Foo.Item2[1], result.Foo.Item2[1]);
            Assert.AreEqual(dto.Bar.Item1, result.Bar.Item1);
            Assert.AreEqual(dto.Bar.Item2, result.Bar.Item2);
            Assert.AreEqual(dto.Bar.Item3, result.Bar.Item3);
            Assert.AreEqual(dto.Bar.Item4, result.Bar.Item4);
            Assert.AreEqual(dto.Bar.Item5, result.Bar.Item5);
            Assert.AreEqual(dto.Bar.Item6, result.Bar.Item6);
            Assert.AreEqual(dto.Bar.Item7, result.Bar.Item7);
            Assert.AreEqual(dto.Bar.Item8, result.Bar.Item8);
            Assert.AreEqual(dto.Bar.Item9, result.Bar.Item9);
            Assert.AreEqual(dto.Bar.Item10.Item1, result.Bar.Item10.Item1);
            Assert.AreEqual(dto.Bar.Item10.Item2, result.Bar.Item10.Item2);
        }
Пример #4
0
        public void TestNestedCollection()
        {
            var s   = new XmSerializerModel();
            var obj = new List <List <int> > {
                new List <int> {
                    1, 2, 3
                }, new List <int> {
                    4, 5, 6
                }, new List <int> {
                    7, 8, 9
                }
            };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(3, result.Count);
            Assert.AreEqual(3, result[0].Count);
            Assert.AreEqual(3, result[1].Count);
            Assert.AreEqual(3, result[2].Count);
            Assert.AreEqual(obj[0][0], result[0][0]);
            Assert.AreEqual(obj[0][1], result[0][1]);
            Assert.AreEqual(obj[0][2], result[0][2]);
            Assert.AreEqual(obj[1][0], result[1][0]);
            Assert.AreEqual(obj[1][1], result[1][1]);
            Assert.AreEqual(obj[1][2], result[1][2]);
            Assert.AreEqual(obj[2][0], result[2][0]);
            Assert.AreEqual(obj[2][1], result[2][1]);
            Assert.AreEqual(obj[2][2], result[2][2]);
        }
Пример #5
0
        public void TestJaggedArray()
        {
            var s   = new XmSerializerModel();
            var obj = new double[2][][];

            obj[0]    = new double[2][];
            obj[1]    = new double[2][];
            obj[0][0] = new[] { 1, 2d };
            obj[0][1] = new[] { 3, 4d };
            obj[1][0] = new[] { 5, 6d };
            obj[1][1] = new[] { 7, 8d };

            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(2, result.Length);
            Assert.AreEqual(2, result[0].Length);
            Assert.AreEqual(2, result[1].Length);
            Assert.AreEqual(2, result[0][0].Length);
            Assert.AreEqual(2, result[1][0].Length);
            Assert.AreEqual(2, result[0][1].Length);
            Assert.AreEqual(2, result[1][1].Length);

            Assert.AreEqual(obj[0][0][0], result[0][0][0]);
            Assert.AreEqual(obj[0][0][1], result[0][0][1]);
            Assert.AreEqual(obj[0][1][0], result[0][1][0]);
            Assert.AreEqual(obj[0][1][1], result[0][1][1]);
            Assert.AreEqual(obj[1][0][0], result[1][0][0]);
            Assert.AreEqual(obj[1][0][1], result[1][0][1]);
            Assert.AreEqual(obj[1][1][0], result[1][1][0]);
            Assert.AreEqual(obj[1][1][1], result[1][1][1]);
        }
Пример #6
0
        public void TestArray()
        {
            var s      = new XmSerializerModel();
            var obj    = new[] { 1, 2, 3d };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(3, result.Length);
            Assert.AreEqual(obj[0], result[0]);
            Assert.AreEqual(obj[1], result[1]);
            Assert.AreEqual(obj[2], result[2]);
        }
Пример #7
0
        public void TestNullable()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(NullableDto));

            var dto    = new NullableDto();
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(result.Foo, dto.Foo);
            Assert.AreEqual(result.Bar, dto.Bar);
        }
Пример #8
0
        public void TestArraySelfReference()
        {
            var s   = new XmSerializerModel();
            var dto = new object[2];

            dto[0] = dto;
            dto[1] = dto;
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreSame(result, result[0]);
            Assert.AreSame(result, result[1]);
        }
Пример #9
0
        public void TestImplicitFieldAttribute()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ImplicitFieldsTestClass));
            var obj = new ImplicitFieldsTestClass {
                TestField = "foobar"
            };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(obj.TestField, result.TestField);
        }
Пример #10
0
        public void TestDictionary()
        {
            var s   = new XmSerializerModel();
            var obj = new Dictionary <int, string> {
                { 5, "foo" }, { 4, "bar" }
            };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(obj.Count, result.Count);
            Assert.AreEqual(obj[5], result[5]);
            Assert.AreEqual(obj[4], result[4]);
        }
Пример #11
0
        public void TestSimpleInheritance()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(DtoTestClass));
            s.AddType(typeof(BaseDto));
            var dto    = new DtoTestClass();
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(dto.GetBooFar(), result.GetBooFar());
            Assert.AreEqual(dto.GetFooBar(), result.GetFooBar());
        }
Пример #12
0
        public void TestPrivateFields()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(MemberFilterDto1));
            var dto    = new MemberFilterDto1();
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual("foobar", result.Gett2());
            Assert.AreEqual("foobar", result.t3);
            Assert.AreEqual("foobar", result.Gett4());
            Assert.IsNull(result.t1);
        }
Пример #13
0
        public void TestList()
        {
            var s   = new XmSerializerModel();
            var obj = new List <int> {
                1, 2, 3
            };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(3, result.Count);
            Assert.AreEqual(obj[0], result[0]);
            Assert.AreEqual(obj[1], result[1]);
            Assert.AreEqual(obj[2], result[2]);
        }
Пример #14
0
        public void TestNotSerialized()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(NotSerializedTestClass));
            var obj = new NotSerializedTestClass {
                TestField = "foobar", NonSerializedTestField = "foobar"
            };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(obj.TestField, result.TestField);
            Assert.IsNull(result.NonSerializedTestField);
        }
Пример #15
0
        public void TestSelfReference()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ReferenceTestClass));

            var dto = new ReferenceTestClass();

            dto.RefernceField  = dto;
            dto.RefernceField2 = dto;
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreSame(result, result.RefernceField);
        }
Пример #16
0
        public void TestExplicitIList()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ExplicitIListTestClass));
            var obj = (IList) new ExplicitIListTestClass();

            obj.Add("Foo");
            obj.Add("Bar");
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(obj[0], result[0]);
            Assert.AreEqual(obj[1], result[1]);
        }
Пример #17
0
        public void TestInterface()
        {
            var s   = new XmSerializerModel();
            var dto = new List <IList <IEnumerable> >
            {
                new List <IEnumerable> {
                    new List <int> {
                        3456
                    }
                }
            };

            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(3456, result.First().First().Cast <object>().First());
        }
Пример #18
0
        public void TestIncludeAncestors()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(TestClass1));
            s.AddType(typeof(TestClass2));
            s.AddType(typeof(AncestorTestClass));
            var dto1    = new TestClass1();
            var dto2    = new TestClass2();
            var result1 = BasicTest.TestSerialization(dto1, s);
            var result2 = BasicTest.TestSerialization(dto2, s);

            Assert.AreEqual(dto1.GetBooFar(), result1.GetBooFar());
            Assert.AreEqual(dto2.GetBooFar(), result2.GetBooFar());
            Assert.AreEqual(dto1.GetFooBar(), result1.GetFooBar());
            Assert.IsNull(result2.GetFooBar());
        }
Пример #19
0
        public void TestGenericInheritance()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(GenericInheritanceBaseClass <>));
            s.AddType(typeof(GenericInheritanceDerivedClass <>));
            var dto = new GenericInheritanceDerivedClass <string>()
            {
                Barfoo = "Barfoo",
                Foobar = "Foobar"
            };

            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(dto.Barfoo, result.Barfoo);
            Assert.AreEqual(dto.Foobar, result.Foobar);
        }
Пример #20
0
        public void TestTupleReference()
        {
            var dto = new TupleReferenceTestClass
            {
                Foo = new Tuple <int>(5),
            };

            dto.Bar = dto.Foo;

            var s = new XmSerializerModel();

            s.AddType(typeof(TupleReferenceTestClass));
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(dto.Foo.Item1, result.Foo.Item1);
            Assert.AreSame(dto.Foo, dto.Bar);
        }
Пример #21
0
        public void TestCustomCollection()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(CustomCollectionTestClass));
            s.AddType(typeof(CustomCollection <>));
            var obj = new CustomCollectionTestClass();

            obj.CollectionField = new CustomCollection <int> {
                125, 132, 164
            };
            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(3, result.CollectionField.Count);
            Assert.AreEqual(obj.CollectionField[0], result.CollectionField[0]);
            Assert.AreEqual(obj.CollectionField[1], result.CollectionField[1]);
            Assert.AreEqual(obj.CollectionField[2], result.CollectionField[2]);
        }
Пример #22
0
        public void TestCircularReference()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ReferenceTestClass));

            var dto  = new ReferenceTestClass();
            var dto2 = new ReferenceTestClass();
            var dto3 = new ReferenceTestClass();

            dto.RefernceField  = dto2;
            dto2.RefernceField = dto3;
            dto3.RefernceField = dto;

            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreSame(result, ((ReferenceTestClass)((ReferenceTestClass)result.RefernceField).RefernceField).RefernceField);
        }
Пример #23
0
        public void TestInitializeAfterDeserialization()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(InitializeAfterDeserializationTestClass));
            s.AddType(typeof(InitializeAfterDeserializationTestClass1));
            s.AddType(typeof(InitializeAfterDeserializationTestClass2));
            s.AddType(typeof(InitializeAfterDeserializationTestClass3));
            var obj    = new InitializeAfterDeserializationTestClass();
            var result = BasicTest.TestSerialization(obj, s);

            Assert.IsNotNull(result.foo);
            Assert.IsNotNull(result.bar);

            Assert.ThrowsException <Exception>(() => BasicTest.TestSerialization(new InitializeAfterDeserializationTestClass1(), s));
            Assert.ThrowsException <Exception>(() => BasicTest.TestSerialization(new InitializeAfterDeserializationTestClass2(), s));
            Assert.ThrowsException <Exception>(() => BasicTest.TestSerialization(new InitializeAfterDeserializationTestClass3(), s));
        }
Пример #24
0
        public void TestCustomReference()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ReferenceTestClass));

            var d = new Dictionary <int, string> {
                { 1, "s" }
            };
            var dto = new ReferenceTestClass()
            {
                RefernceField  = d,
                RefernceField2 = d
            };
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreSame(result.RefernceField, result.RefernceField2);
        }
Пример #25
0
        public void TestListOfArray()
        {
            var s   = new XmSerializerModel();
            var obj = new List <int[]>();

            obj.Add(new[] { 1, 2 });
            obj.Add(new[] { 3, 4 });

            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(2, result[0].Length);
            Assert.AreEqual(2, result[1].Length);

            Assert.AreEqual(obj[0][0], result[0][0]);
            Assert.AreEqual(obj[0][1], result[0][1]);
            Assert.AreEqual(obj[1][0], result[1][0]);
            Assert.AreEqual(obj[1][1], result[1][1]);
        }
Пример #26
0
        public void TestGeneric()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(GenericTestClass <, ,>));

            var obj = new GenericTestClass <string, int, bool>
            {
                Field1 = "test",
                Field2 = 5,
                Field3 = true
            };

            var result = BasicTest.TestSerialization(obj, s);

            Assert.AreEqual(result.Field1, obj.Field1);
            Assert.AreEqual(result.Field2, obj.Field2);
            Assert.AreEqual(result.Field3, obj.Field3);
        }
Пример #27
0
        public void TestReference()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ReferenceTestClass));
            s.AddType(typeof(ReferencedClass));

            var dto = new ReferenceTestClass {
                RefernceField = new ReferencedClass {
                    FooBar = "foobar"
                }
            };

            dto.RefernceField2 = dto.RefernceField;
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(((ReferencedClass)result.RefernceField).FooBar, ((ReferencedClass)result.RefernceField2).FooBar);
            Assert.AreSame(result.RefernceField, result.RefernceField2);
        }
Пример #28
0
        public void TestObfuscate()
        {
            var dto = new ObfuscationTestClass
            {
                FooBar = "FooBar",
                BarFoo = "BarFoo"
            };

            var s = new XmSerializerModel();

            s.AddType(typeof(ObfuscationTestClass));

            var xml = s.Serialize(dto);

            Assert.IsTrue(xml.ToString().Contains("BarFoo"));
            Assert.IsFalse(xml.ToString().Contains("FooBar"));

            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(result.FooBar, "FooBar");
            Assert.AreEqual(result.BarFoo, "BarFoo");
        }
Пример #29
0
        public void TestLegacyName()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(OldTestClass));
            var s2 = new XmSerializerModel();

            s2.AddType(typeof(NewTestClass));

            var dto = new OldTestClass {
                Foobar = "foobar"
            };
            var xml  = s.Serialize(dto);
            var dto2 = s2.Deserialize <NewTestClass>(xml);

            Assert.IsNotNull(dto2);
            Assert.AreEqual(dto.Foobar, dto2.Barfoo);

            var dto3 = BasicTest.TestSerialization(dto2, s2);

            Assert.IsNotNull(dto3);
            Assert.AreEqual(dto.Foobar, dto3.Barfoo);
        }
Пример #30
0
        public void TestCompactArray()
        {
            var dto = new CompactArrayDto();
            var s   = new XmSerializerModel();

            s.AddType(typeof(CompactArrayDto));
            _ = new CompactArraySerializer(s);
            var result = BasicTest.TestSerialization(dto, s);

            Assert.AreEqual(dto.IntArray[0], result.IntArray[0]);
            Assert.AreEqual(dto.IntArray[1], result.IntArray[1]);
            Assert.AreEqual(dto.IntArray[2], result.IntArray[2]);
            Assert.AreEqual(dto.IntArray[3], result.IntArray[3]);

            Assert.AreEqual(dto.ByteArray[0], result.ByteArray[0]);
            Assert.AreEqual(dto.ByteArray[1], result.ByteArray[1]);
            Assert.AreEqual(dto.ByteArray[2], result.ByteArray[2]);
            Assert.AreEqual(dto.ByteArray[3], result.ByteArray[3]);

            Assert.AreEqual(dto.DoubleArray[0], result.DoubleArray[0]);
            Assert.AreEqual(dto.DoubleArray[1], result.DoubleArray[1]);
            Assert.AreEqual(dto.DoubleArray[2], result.DoubleArray[2]);
            Assert.AreEqual(dto.DoubleArray[3], result.DoubleArray[3]);
        }