Пример #1
0
 public ValueTupleSerializer(XmSerializerModel serializerModel) : base(serializerModel)
 {
     foreach (var tupleType in TupleTypes)
     {
         serializerModel.AddType(new TypeSerializingSettings(tupleType));
     }
 }
Пример #2
0
 public PrimitivesSerializer(XmSerializerModel serializerModel) : base(serializerModel)
 {
     foreach (var primitive in Primitives)
     {
         serializerModel.AddType(new TypeSerializingSettings(primitive.Key, primitive.Value));
     }
 }
Пример #3
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);
        }
Пример #4
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);
        }
Пример #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 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);
        }
Пример #7
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]);
        }
Пример #8
0
        public void TestDefaultValue()
        {
            var s = new XmSerializerModel();

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

            s2.AddType(typeof(CompatibilityTest2));
            var s3 = new XmSerializerModel();

            s3.AddType(typeof(CompatibilityTest1));

            var dto  = new CompatibilityTest2();
            var xml  = s2.Serialize(dto);
            var dto2 = s.Deserialize <CompatibilityTest3>(xml);

            Assert.IsNotNull(dto2);
            Assert.AreEqual("barfoo", dto2.Foobar);

            var dto3 = new CompatibilityTest1 {
                Foobar = "foobar"
            };
            var xml2 = s3.Serialize(dto3);
            var dto4 = s.Deserialize <CompatibilityTest3>(xml2);

            Assert.AreEqual("foobar", dto4.Foobar);
        }
Пример #9
0
        public void TestReducedNumberOfTypeParametersParsing()
        {
            var s = new XmSerializerModel();

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

            var s2 = new XmSerializerModel();

            s2.AddType(typeof(Foo <,>));

            var s3 = new XmSerializerModel();

            s3.AddType(typeof(Foo));

            var obj = new Foo <string, int, bool>
            {
                Field1 = "foobar",
                Field2 = 42,
                Field3 = true
            };

            var xml    = s.Serialize(obj);
            var result = (Foo <string, int>)s2.Deserialize <object>(xml);

            Assert.AreEqual(result.Field1, obj.Field1);
            Assert.AreEqual(result.Field2, obj.Field2);
            Assert.AreEqual(result.Field3, obj.Field3);

            var result2 = s3.Deserialize <Foo>(xml);

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

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

            s2.AddType(typeof(ValueConversionTestClass2));

            var dto = new ValueConversionTestClass1()
            {
                V1 = 5,
                V2 = 6,
                V3 = 7,
                V4 = 8,
                V5 = 9,
                V6 = 10,
                V7 = 11,
            };
            var xml = s.Serialize(dto);

            var result = s2.Deserialize <ValueConversionTestClass2>(xml);

            Assert.AreEqual(result.V1, dto.V1);
            Assert.AreEqual(result.V2, dto.V2);
            Assert.AreEqual(result.V3, dto.V3);
            Assert.AreEqual(result.V4, dto.V4);
            Assert.AreEqual(result.V5, dto.V5);
            Assert.AreEqual(result.V6, dto.V6);
            Assert.AreEqual(result.V7, dto.V7);
        }
Пример #11
0
        public void TestDeactivation()
        {
            var s1 = new XmSerializerModel();

            s1.AddType(typeof(DeactivationTestClass1));
            var s2 = new XmSerializerModel();

            s2.AddType(typeof(DeactivationTestClass2));

            var dto1 = new DeactivationTestClass1 {
                Foobar = "foo"
            };
            var dto2 = new DeactivationTestClass2 {
                Foobar = "bar"
            };

            var xml1    = s1.Serialize(dto1);
            var result1 = s2.Deserialize <DeactivationTestClass2>(xml1);
            var result2 = s1.Deserialize <DeactivationTestClass1>(xml1);

            Assert.AreEqual(result1.Foobar, dto1.Foobar);
            Assert.IsNull(result2.Foobar);

            var xml2    = s2.Serialize(dto2);
            var result3 = s2.Deserialize <DeactivationTestClass2>(xml2);
            var result4 = s1.Deserialize <DeactivationTestClass1>(xml2);

            Assert.IsNull(result3.Foobar);
            Assert.IsNull(result4.Foobar);
        }
Пример #12
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]);
        }
Пример #13
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]);
        }
Пример #14
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);
        }
Пример #15
0
        public void TestDeserializingPriority()
        {
            var serializer = new XmSerializerModel();

            serializer.AddType(typeof(PriorityCallbackTestClass));

            var instance = new PriorityCallbackTestClass();
            var xml      = serializer.Serialize(instance);
            var result   = serializer.Deserialize <PriorityCallbackTestClass>(xml);

            Assert.AreEqual("-1,0,1,2,9", result.DeserializeOrder);
        }
Пример #16
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());
        }
Пример #17
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);
        }
Пример #18
0
        public static T TestSerialization <T>(T dto, XmSerializerModel serializer)
        {
            var xml  = serializer.Serialize(dto);
            var ret  = serializer.Deserialize <T>(xml);
            var xml2 = serializer.Serialize(ret);

            Assert.AreEqual(xml.ToString(), xml2.ToString());
            Assert.AreEqual(dto.GetType(), ret.GetType());
            Directory.CreateDirectory(@"output\");
            File.WriteAllText($@"output\{typeof(T).Name}.csv", xml2.ToString());
            return(ret);
        }
Пример #19
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]);
        }
Пример #20
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);
        }
Пример #21
0
        public void TestSkipConstructor()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ConstructorTestClass2));

            var obj    = new ConstructorTestClass2();
            var xml    = s.Serialize(obj);
            var result = s.Deserialize <ConstructorTestClass2>(xml);

            Assert.IsNull(result.TestField);
            Assert.IsNull(result.TestField2);
        }
Пример #22
0
        public void TestConstructor()
        {
            var s = new XmSerializerModel();

            s.AddType(typeof(ConstructorTestClass));

            var obj    = new ConstructorTestClass();
            var xml    = s.Serialize(obj);
            var result = s.Deserialize <ConstructorTestClass>(xml);

            Assert.AreEqual(obj.TestField, result.TestField);
            Assert.AreEqual(obj.TestField2, result.TestField2);
        }
Пример #23
0
        public void TestStruct()
        {
            var serializer = new XmSerializerModel();

            serializer.AddType(typeof(StructDto));

            var dto = new StructDto {
                TestString = "foobar"
            };
            var result = TestSerialization(dto, serializer);

            Assert.AreEqual(result.TestString, dto.TestString);
        }
Пример #24
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]);
        }
Пример #25
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);
        }
Пример #26
0
 public CompactArraySerializer(XmSerializerModel serializerModel) : base(serializerModel)
 {
     for (var i = 0; i < serializerModel.ExclusiveSerializers.Count; i++)
     {
         // make sure we have higher priority than a regular ArraySerializer
         if (serializerModel.ExclusiveSerializers[i] is ArraySerializer)
         {
             serializerModel.ExclusiveSerializers.Remove(this);
             serializerModel.ExclusiveSerializers.Insert(i, this);
             break;
         }
     }
 }
Пример #27
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);
        }
Пример #28
0
        public void TestNested()
        {
            var serializer = new XmSerializerModel();

            serializer.AddType(typeof(PrimitivesDto));
            var dto = new PrimitivesDto {
                SubObject = new PrimitivesDto {
                    TestString = "dfsads"
                }
            };
            var result = TestSerialization(dto, serializer);

            Assert.AreEqual(result.SubObject.TestString, dto.SubObject.TestString);
        }
Пример #29
0
        public void TestBackwardCompatibility()
        {
            var s = new XmSerializerModel();

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

            s2.AddType(typeof(CompatibilityTest2));

            var dto  = new CompatibilityTest2();
            var xml  = s2.Serialize(dto);
            var dto2 = s.Deserialize <CompatibilityTest1>(xml);

            Assert.IsNotNull(dto2);
        }
Пример #30
0
        public void TestOverriddedCallbacks()
        {
            var serializer = new XmSerializerModel();

            serializer.AddType(typeof(OverriddenCallbackTestClass1));
            serializer.AddType(typeof(OverriddenCallbackTestClass2));

            var instance = new OverriddenCallbackTestClass2();
            var xml      = serializer.Serialize(instance);
            var result   = serializer.Deserialize <OverriddenCallbackTestClass2>(xml);

            Assert.AreEqual(11, result.FooCounter);
            Assert.AreEqual(11, result.BarCounter);
            Assert.AreEqual(22, result.FooBarCounter);
        }