示例#1
0
        public void TestArrayOfObjectsNullablesNull()
        {
            var service = this.GetService();

            var item = new MyItemNullables();

            var item2 = new MyItemNullables();

            var xmlArray = new XmlArray("MyItems")
                           .Add(new XmlObject("MyItem")
                                .AddNullable("MyGuid", item.MyGuid)
                                .AddNullable("MyInt", item.MyInt)
                                .AddNullable("MyDouble", item.MyDouble)
                                .AddString("MyString", item.MyString)
                                .AddNullable("MyEnumValue", item.MyEnumValue)
                                .AddNullable("MyDate", item.MyDate)
                                .AddObject("MyObj", XmlValue.CreateObject("MyObj").SetNil())
                                .AddArray("MyList", XmlValue.CreateArray("MyList").SetNil())
                                .AddArray("MyArray", XmlValue.CreateArray("MyArray").SetNil()))
                           .Add(new XmlObject("MyItem")
                                .AddNullable("MyGuid", item2.MyGuid)
                                .AddNullable("MyInt", item2.MyInt)
                                .AddNullable("MyDouble", item2.MyDouble)
                                .AddString("MyString", item2.MyString)
                                .AddNullable("MyEnumValue", item2.MyEnumValue)
                                .AddNullable("MyDate", item2.MyDate)
                                .AddObject("MyObj", XmlValue.CreateObject("MyObj").SetNil())
                                .AddArray("MyList", XmlValue.CreateArray("MyList").SetNil())
                                .AddArray("MyArray", XmlValue.CreateArray("MyArray").SetNil()));

            var result = service.GetRoot(xmlArray);

            Assert.AreEqual("<MyItems xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><MyItem><MyGuid xsi:nil=\"true\" /><MyInt xsi:nil=\"true\" /><MyDouble xsi:nil=\"true\" /><MyString xsi:nil=\"true\" /><MyEnumValue xsi:nil=\"true\" /><MyDate xsi:nil=\"true\" /><MyObj xsi:nil=\"true\" /><MyList xsi:nil=\"true\" /><MyArray xsi:nil=\"true\" /></MyItem><MyItem><MyGuid xsi:nil=\"true\" /><MyInt xsi:nil=\"true\" /><MyDouble xsi:nil=\"true\" /><MyString xsi:nil=\"true\" /><MyEnumValue xsi:nil=\"true\" /><MyDate xsi:nil=\"true\" /><MyObj xsi:nil=\"true\" /><MyList xsi:nil=\"true\" /><MyArray xsi:nil=\"true\" /></MyItem></MyItems>", result);
        }
示例#2
0
        public void TestResolveDictionary_WithNoItems_ReturnsEmptyDictionary()
        {
            var service = this.GetService();

            var xmlArray = new XmlArray("ArrayOfString");
            var result   = service.ToDictionary(typeof(Dictionary <int, string>), xmlArray) as Dictionary <int, string>;

            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.Count);
        }
示例#3
0
        public void TestArrayWithMapping()
        {
            var service = this.GetService();

            var users = new List <User> {
                new User
                {
                    Id       = 1,
                    UserName = "******",
                },
                new User
                {
                    Id       = 2,
                    UserName = "******",
                    Age      = 20,
                    Email    = "*****@*****.**"
                }
            };

            var mappings = new XmlMappingContainer();

            mappings.SetType <User>("MapUser")
            .SetProperty("Id", "MapId")
            .SetProperty("UserName", "MapUserName")
            .SetProperty("Email", "MapEmail");

            var xmlValue = new XmlArray("MapUsers")
                           .Add(new XmlObject("MapUser")
                                .AddNumber("MapId", users[0].Id)
                                .AddString("MapUserName", users[0].UserName)
                                .AddNullable("Age", users[0].Age)
                                .AddString("MapEmail", users[0].Email))
                           .Add(new XmlObject("MapUser")
                                .AddNumber("MapId", users[1].Id)
                                .AddString("MapUserName", users[1].UserName)
                                .AddNullable("Age", users[1].Age)
                                .AddString("MapEmail", users[1].Email));

            var results = service.Resolve <List <User> >(xmlValue, mappings);

            var result = results[0];

            Assert.AreEqual(1, result.Id);
            Assert.AreEqual("Marie", result.UserName);
            Assert.AreEqual(null, result.Age);
            Assert.AreEqual(null, result.Email);

            var result2 = results[1];

            Assert.AreEqual(2, result2.Id);
            Assert.AreEqual("Pat", result2.UserName);
            Assert.AreEqual(20, result2.Age);
            Assert.AreEqual("*****@*****.**", result2.Email);
        }
示例#4
0
        public void TestArrayOfInt()
        {
            var service = this.GetService();

            var xmlValue = new XmlArray("ArrayOfInt32")
                           .Add(new XmlNumber("Int32", 1))
                           .Add(new XmlNumber("Int32", 2));


            var result = service.Resolve <int[]>(xmlValue);

            Assert.AreEqual(1, result[0]);
            Assert.AreEqual(2, result[1]);
        }
示例#5
0
        public void TestArrayOfBool()
        {
            var service = this.GetService();

            var xmlValue = new XmlArray("ArrayOfBoolean")
                           .Add(new XmlBool("Boolean", true))
                           .Add(new XmlBool("Boolean", false));


            var result = service.Resolve <bool[]>(xmlValue);

            Assert.AreEqual(true, result[0]);
            Assert.AreEqual(false, result[1]);
        }
示例#6
0
        public void TestArrayOfString()
        {
            var service = this.GetService();

            var xmlValue = new XmlArray("ArrayOfString")
                           .Add(new XmlString("String", "a"))
                           .Add(new XmlString("String", "b"));


            var result = service.Resolve <string[]>(xmlValue);

            Assert.AreEqual("a", result[0]);
            Assert.AreEqual("b", result[1]);
        }
示例#7
0
        public void TestResolveDictionary_WithStringKeyDateTimeValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key1").AddString("Value", "12/12/1990 00:00:00"))
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key2").AddString("Value", "12/10/1990 00:00:00"));

            var result = service.ToDictionary(typeof(Dictionary <string, DateTime>), xmlArray) as Dictionary <string, DateTime>;

            Assert.AreEqual(new DateTime(1990, 12, 12), result["key1"]);
            Assert.AreEqual(new DateTime(1990, 10, 12), result["key2"]);
        }
示例#8
0
        public void TestResolveDictionary_WithGuessIntStringKeyStringValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddNumber("Int32", 10).AddString("Value", "value 1"))
                           .Add(new XmlObject("MyItem")
                                .AddNumber("Int32", 20).AddString("Value", "value 2"));

            var result = service.ToDictionary(typeof(Dictionary <string, string>), xmlArray) as Dictionary <string, string>;

            Assert.AreEqual("value 1", result["10"]);
            Assert.AreEqual("value 2", result["20"]);
        }
示例#9
0
        public void TestResolveDictionary_WithIntKeyGuessDoubleStringValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddNumber("Int32", 10).AddNumber("Value", 1.5))
                           .Add(new XmlObject("MyItem")
                                .AddNumber("Int32", 20).AddNumber("Value", 2.5));

            var result = service.ToDictionary(typeof(Dictionary <int, string>), xmlArray) as Dictionary <int, string>;

            Assert.AreEqual("1.5", result[10]);
            Assert.AreEqual("2.5", result[20]);
        }
示例#10
0
        public void TestResolveDictionary_WithIntKeyBoolValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddNumber("Int32", 10).AddBool("Value", true))
                           .Add(new XmlObject("MyItem")
                                .AddNumber("Int32", 20).AddBool("Value", false));

            var result = service.ToDictionary(typeof(Dictionary <int, bool>), xmlArray) as Dictionary <int, bool>;

            Assert.AreEqual(true, result[10]);
            Assert.AreEqual(false, result[20]);
        }
示例#11
0
        public void TestResolveDictionary_WithStringKeyEnumValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key1").AddString("Value", "Other"))
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key2").AddString("Value", "Default"));

            var result = service.ToDictionary(typeof(Dictionary <string, MyEnum>), xmlArray) as Dictionary <string, MyEnum>;

            Assert.AreEqual(MyEnum.Other, result["key1"]);
            Assert.AreEqual(MyEnum.Default, result["key2"]);
        }
示例#12
0
        public void TestResolveDictionary_WithStringKeyStringValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key1").AddString("String", "value 1"))
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key2").AddString("String", "value 2"));

            var result = service.ToDictionary(typeof(Dictionary <string, string>), xmlArray) as Dictionary <string, string>;

            Assert.AreEqual("value 1", result["key1"]);
            Assert.AreEqual("value 2", result["key2"]);
        }
示例#13
0
        public void TestResolveDictionary_WithStringKeyGuidValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key1").AddString("Value", "344ac1a2-9613-44d7-b64c-8d45b4585176"))
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key2").AddString("Value", "344ac1a2-9613-44d7-b64c-8d45b4585178"));

            var result = service.ToDictionary(typeof(Dictionary <string, Guid>), xmlArray) as Dictionary <string, Guid>;

            Assert.AreEqual(new Guid("344ac1a2-9613-44d7-b64c-8d45b4585176"), result["key1"]);
            Assert.AreEqual(new Guid("344ac1a2-9613-44d7-b64c-8d45b4585178"), result["key2"]);
        }
示例#14
0
        public void TestResolveDictionary_WithArrayOfArray_Fail()
        {
            bool failed = false;

            var service  = this.GetService();
            var xmlArray = new XmlArray("Array")
                           .Add(new XmlArray("MyArray"));

            try
            {
                var result = service.ToDictionary(typeof(Dictionary <int, string>), xmlArray) as Dictionary <int, string>;
            }
            catch (Exception)
            {
                failed = true;
            }

            Assert.IsTrue(failed);
        }
示例#15
0
        public void TestResolveDictionary_WithObjectButWith2Values_Success()
        {
            bool failed = false;

            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem").AddNumber("Int32", 10).AddString("String", "value 1"));

            try
            {
                var result = service.ToDictionary(typeof(Dictionary <int, string>), xmlArray) as Dictionary <int, string>;
            }
            catch (Exception)
            {
                failed = true;
            }

            Assert.IsFalse(failed);
        }
示例#16
0
        public void TestResolveDictionary_WithStringKeyObjectValue()
        {
            var service  = this.GetService();
            var xmlArray = new XmlArray("ArrayOfString")
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key1")
                                .AddObject("User", new XmlObject("User").AddNumber("Id", 1).AddString("UserName", "Marie")))
                           .Add(new XmlObject("MyItem")
                                .AddString("Key", "key2")
                                .AddObject("User", new XmlObject("User").AddNumber("Id", 2).AddString("UserName", "Pat").AddNumber("Age", 20).AddString("Email", "*****@*****.**")));

            var result = service.ToDictionary(typeof(Dictionary <string, User>), xmlArray) as Dictionary <string, User>;

            Assert.AreEqual(1, result["key1"].Id);
            Assert.AreEqual("Marie", result["key1"].UserName);
            Assert.AreEqual(null, result["key1"].Age);
            Assert.AreEqual(null, result["key1"].Email);

            Assert.AreEqual(2, result["key2"].Id);
            Assert.AreEqual("Pat", result["key2"].UserName);
            Assert.AreEqual(20, result["key2"].Age);
            Assert.AreEqual("*****@*****.**", result["key2"].Email);
        }
示例#17
0
        public void TestGuessList_WithPropertyTypeIntAndBool()
        {
            var service = this.GetService();

            var xmlValue = new XmlArray("MyItems")
                           .Add(new XmlObject("MyItem")
                                .AddNumber("MyIntString", 10)
                                .AddNumber("MyDoubleString", 10.5)
                                .AddBool("MyBoolString", true))
                           .Add(new XmlObject("MyItem")
                                .AddNumber("MyIntString", 20)
                                .AddNumber("MyDoubleString", 20.5)
                                .AddBool("MyBoolString", false));

            var result = service.Resolve <List <MyItemGuess> >(xmlValue);

            Assert.AreEqual("10", result[0].MyIntString);
            Assert.AreEqual("10.5", result[0].MyDoubleString);
            Assert.AreEqual("true", result[0].MyBoolString);

            Assert.AreEqual("20", result[1].MyIntString);
            Assert.AreEqual("20.5", result[1].MyDoubleString);
            Assert.AreEqual("false", result[1].MyBoolString);
        }
示例#18
0
        public void TestArrayOfObjectsNullables()
        {
            var service = this.GetService();

            var item = new MyItemNullables
            {
                MyGuid      = new Guid("11ba7957-5afb-4b59-9d9b-c06a18cda5c2"),
                MyInt       = 1,
                MyDouble    = 1.5,
                MyString    = "my value 1",
                MyBool      = true,
                MyEnumValue = MyEnum.Other,
                MyDate      = new DateTime(1990, 12, 12),
                MyObj       = new MyInnerItem {
                    MyInnerString = "my inner value 1"
                },
                MyList = new List <string> {
                    "a1", "b1"
                },
                MyArray = new string[] { "y1", "z1" }
            };

            var item2 = new MyItemNullables
            {
                MyGuid      = new Guid("11ba7957-5afb-4b59-9d9b-c06a18cda5c3"),
                MyInt       = 2,
                MyDouble    = 2.5,
                MyString    = "my value 2",
                MyBool      = false,
                MyEnumValue = MyEnum.Default,
                MyDate      = new DateTime(1990, 10, 12),
                MyObj       = new MyInnerItem {
                    MyInnerString = "my inner value 2"
                },
                MyList = new List <string> {
                    "a2", "b2"
                },
                MyArray = new string[] { "y2", "z2" }
            };

            var xmlArray = new XmlArray("MyItems")
                           .Add(new XmlObject("MyItem")
                                .AddNullable("MyGuid", item.MyGuid)
                                .AddNullable("MyInt", item.MyInt)
                                .AddNullable("MyDouble", item.MyDouble)
                                .AddString("MyString", item.MyString)
                                .AddNullable("MyEnumValue", item.MyEnumValue)
                                .AddNullable("MyDate", item.MyDate)
                                .AddObject("MyObj", XmlValue.CreateObject("MyObj").AddString("MyInnerString", "my inner value 1"))
                                .AddArray("MyList", XmlValue.CreateArray("MyList").Add(new XmlString("String", item.MyList[0])).Add(new XmlString("String", item.MyList[1])))
                                .AddArray("MyArray", XmlValue.CreateArray("MyArray").Add(new XmlString("String", item.MyArray[0])).Add(new XmlString("String", item.MyArray[1]))))
                           .Add(new XmlObject("MyItem")
                                .AddNullable("MyGuid", item2.MyGuid)
                                .AddNullable("MyInt", item2.MyInt)
                                .AddNullable("MyDouble", item2.MyDouble)
                                .AddString("MyString", item2.MyString)
                                .AddNullable("MyEnumValue", item2.MyEnumValue)
                                .AddNullable("MyDate", item2.MyDate)
                                .AddObject("MyObj", XmlValue.CreateObject("MyObj").AddString("MyInnerString", "my inner value 2"))
                                .AddArray("MyList", XmlValue.CreateArray("MyList").Add(new XmlString("String", item2.MyList[0])).Add(new XmlString("String", item2.MyList[0])))
                                .AddArray("MyArray", XmlValue.CreateArray("MyArray").Add(new XmlString("String", item2.MyArray[0])).Add(new XmlString("String", item2.MyArray[1]))));

            var result = service.GetRoot(xmlArray);

            Assert.AreEqual("<MyItems><MyItem><MyGuid>11ba7957-5afb-4b59-9d9b-c06a18cda5c2</MyGuid><MyInt>1</MyInt><MyDouble>1.5</MyDouble><MyString>my value 1</MyString><MyEnumValue>Other</MyEnumValue><MyDate>12/12/1990 00:00:00</MyDate><MyObj><MyInnerString>my inner value 1</MyInnerString></MyObj><MyList><String>a1</String><String>b1</String></MyList><MyArray><String>y1</String><String>z1</String></MyArray></MyItem><MyItem><MyGuid>11ba7957-5afb-4b59-9d9b-c06a18cda5c3</MyGuid><MyInt>2</MyInt><MyDouble>2.5</MyDouble><MyString>my value 2</MyString><MyEnumValue>Default</MyEnumValue><MyDate>12/10/1990 00:00:00</MyDate><MyObj><MyInnerString>my inner value 2</MyInnerString></MyObj><MyList><String>a2</String><String>a2</String></MyList><MyArray><String>y2</String><String>z2</String></MyArray></MyItem></MyItems>", result);
        }
示例#19
0
        public void TestArrayOfNullablesNull()
        {
            var service = this.GetService();

            Int16?[] MyInt16 = new Int16?[] { 10, null };
            Int32?[] MyInt32 = new Int32?[] { 10, null };
            Int64?[] MyInt64 = new Int64?[] { 10, null };

            Byte?[]  MyByte  = new Byte?[] { 201, null };
            SByte?[] MySByte = new SByte?[] { -102, null };

            UInt16?[] MyUInt16 = new UInt16?[] { 10, null };
            UInt32?[] MyUInt32 = new UInt32?[] { 10, null };
            UInt64?[] MyUInt64 = new UInt64?[] { 10, null };

            Decimal?[] MyDec    = new Decimal?[] { 10.5M, null };
            Double?[]  MyDouble = new Double?[] { 10.5, null };
            Single?[]  MySingle = new Single?[] { 10.5F, null };

            var xmlInt16 = new XmlArray("ArrayOfInt16").Add(XmlValue.CreateNullable("Int16", MyInt16[0])).Add(XmlValue.CreateNullable("Int16", MyInt16[1]));
            var xmlInt32 = new XmlArray("ArrayOfInt32").Add(XmlValue.CreateNullable("Int32", MyInt32[0])).Add(XmlValue.CreateNullable("Int32", MyInt32[1]));
            var xmlInt64 = new XmlArray("ArrayOfInt64").Add(XmlValue.CreateNullable("Int64", MyInt32[0])).Add(XmlValue.CreateNullable("Int64", MyInt64[1]));

            var xmlByte  = new XmlArray("ArrayOfByte").Add(XmlValue.CreateNullable("Byte", MyByte[0])).Add(XmlValue.CreateNullable("Byte", MyByte[1]));
            var xmlSByte = new XmlArray("ArrayOfSByte").Add(XmlValue.CreateNullable("SByte", MySByte[0])).Add(XmlValue.CreateNullable("SByte", MySByte[1]));

            var xmlUInt16 = new XmlArray("ArrayOfUInt16").Add(XmlValue.CreateNullable("UInt16", MyInt16[0])).Add(XmlValue.CreateNullable("UInt16", MyInt16[1]));
            var xmlUInt32 = new XmlArray("ArrayOfUInt32").Add(XmlValue.CreateNullable("UInt32", MyInt32[0])).Add(XmlValue.CreateNullable("UInt32", MyInt32[1]));
            var xmlUInt64 = new XmlArray("ArrayOfUInt64").Add(XmlValue.CreateNullable("UInt64", MyInt32[0])).Add(XmlValue.CreateNullable("UInt64", MyInt64[1]));

            var xmlMyDec    = new XmlArray("ArrayOfDecimal").Add(XmlValue.CreateNullable("Decimal", MyDec[0])).Add(XmlValue.CreateNullable("Decimal", MyDec[1]));
            var xmlMyDouble = new XmlArray("ArrayOfDouble").Add(XmlValue.CreateNullable("Double", MyDouble[0])).Add(XmlValue.CreateNullable("Double", MyDouble[1]));
            var xmlMySingle = new XmlArray("ArrayOfSingle").Add(XmlValue.CreateNullable("Single", MySingle[0])).Add(XmlValue.CreateNullable("Single", MySingle[1]));

            var resultInt16 = service.GetRoot(xmlInt16);
            var resultInt32 = service.GetRoot(xmlInt32);
            var resultInt64 = service.GetRoot(xmlInt64);

            var resultByte  = service.GetRoot(xmlByte);
            var resultSByte = service.GetRoot(xmlSByte);

            var resultUInt16 = service.GetRoot(xmlUInt16);
            var resultUInt32 = service.GetRoot(xmlUInt32);
            var resultUInt64 = service.GetRoot(xmlUInt64);

            var resultMyDec    = service.GetRoot(xmlMyDec);
            var resultMyDouble = service.GetRoot(xmlMyDouble);
            var resultMySingle = service.GetRoot(xmlMySingle);

            Assert.AreEqual("<ArrayOfInt16 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Int16>10</Int16><Int16 xsi:nil=\"true\" /></ArrayOfInt16>", resultInt16);
            Assert.AreEqual("<ArrayOfInt32 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Int32>10</Int32><Int32 xsi:nil=\"true\" /></ArrayOfInt32>", resultInt32);
            Assert.AreEqual("<ArrayOfInt64 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Int64>10</Int64><Int64 xsi:nil=\"true\" /></ArrayOfInt64>", resultInt64);

            Assert.AreEqual("<ArrayOfByte xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Byte>201</Byte><Byte xsi:nil=\"true\" /></ArrayOfByte>", resultByte);
            Assert.AreEqual("<ArrayOfSByte xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><SByte>-102</SByte><SByte xsi:nil=\"true\" /></ArrayOfSByte>", resultSByte);

            Assert.AreEqual("<ArrayOfUInt16 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><UInt16>10</UInt16><UInt16 xsi:nil=\"true\" /></ArrayOfUInt16>", resultUInt16);
            Assert.AreEqual("<ArrayOfUInt32 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><UInt32>10</UInt32><UInt32 xsi:nil=\"true\" /></ArrayOfUInt32>", resultUInt32);
            Assert.AreEqual("<ArrayOfUInt64 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><UInt64>10</UInt64><UInt64 xsi:nil=\"true\" /></ArrayOfUInt64>", resultUInt64);

            Assert.AreEqual("<ArrayOfDecimal xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Decimal>10.5</Decimal><Decimal xsi:nil=\"true\" /></ArrayOfDecimal>", resultMyDec);
            Assert.AreEqual("<ArrayOfDouble xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Double>10.5</Double><Double xsi:nil=\"true\" /></ArrayOfDouble>", resultMyDouble);
            Assert.AreEqual("<ArrayOfSingle xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Single>10.5</Single><Single xsi:nil=\"true\" /></ArrayOfSingle>", resultMySingle);
        }
示例#20
0
        public void TestArrayOfNullables()
        {
            var service = this.GetService();

            Int16?[] MyInt16 = new Int16?[] { 10, 20 };
            Int32?[] MyInt32 = new Int32?[] { 10, 20 };
            Int64?[] MyInt64 = new Int64?[] { 10, 20 };

            Byte?[]  MyByte  = new Byte?[] { 201, 202 };
            SByte?[] MySByte = new SByte?[] { -102, 101 };

            UInt16?[] MyUInt16 = new UInt16?[] { 10, 20 };
            UInt32?[] MyUInt32 = new UInt32?[] { 10, 20 };
            UInt64?[] MyUInt64 = new UInt64?[] { 10, 20 };

            Decimal?[] MyDec    = new Decimal?[] { 10.5M, 11.5M };
            Double?[]  MyDouble = new Double?[] { 10.5, 11.5 };
            Single?[]  MySingle = new Single?[] { 10.5F, 11.5F };

            var xmlInt16 = new XmlArray("ArrayOfInt16").Add(XmlValue.CreateNullable("Int16", MyInt16[0])).Add(XmlValue.CreateNullable("Int16", MyInt16[1]));
            var xmlInt32 = new XmlArray("ArrayOfInt32").Add(XmlValue.CreateNullable("Int32", MyInt32[0])).Add(XmlValue.CreateNullable("Int32", MyInt32[1]));
            var xmlInt64 = new XmlArray("ArrayOfInt64").Add(XmlValue.CreateNullable("Int64", MyInt32[0])).Add(XmlValue.CreateNullable("Int64", MyInt64[1]));

            var xmlByte  = new XmlArray("ArrayOfByte").Add(XmlValue.CreateNullable("Byte", MyByte[0])).Add(XmlValue.CreateNullable("Byte", MyByte[1]));
            var xmlSByte = new XmlArray("ArrayOfSByte").Add(XmlValue.CreateNullable("SByte", MySByte[0])).Add(XmlValue.CreateNullable("SByte", MySByte[1]));

            var xmlUInt16 = new XmlArray("ArrayOfUInt16").Add(XmlValue.CreateNullable("UInt16", MyInt16[0])).Add(XmlValue.CreateNullable("UInt16", MyInt16[1]));
            var xmlUInt32 = new XmlArray("ArrayOfUInt32").Add(XmlValue.CreateNullable("UInt32", MyInt32[0])).Add(XmlValue.CreateNullable("UInt32", MyInt32[1]));
            var xmlUInt64 = new XmlArray("ArrayOfUInt64").Add(XmlValue.CreateNullable("UInt64", MyInt32[0])).Add(XmlValue.CreateNullable("UInt64", MyInt64[1]));

            var xmlMyDec    = new XmlArray("ArrayOfDecimal").Add(XmlValue.CreateNullable("Decimal", MyDec[0])).Add(XmlValue.CreateNullable("Decimal", MyDec[1]));
            var xmlMyDouble = new XmlArray("ArrayOfDouble").Add(XmlValue.CreateNullable("Double", MyDouble[0])).Add(XmlValue.CreateNullable("Double", MyDouble[1]));
            var xmlMySingle = new XmlArray("ArrayOfSingle").Add(XmlValue.CreateNullable("Single", MySingle[0])).Add(XmlValue.CreateNullable("Single", MySingle[1]));

            var resultInt16 = service.GetRoot(xmlInt16);
            var resultInt32 = service.GetRoot(xmlInt32);
            var resultInt64 = service.GetRoot(xmlInt64);

            var resultByte  = service.GetRoot(xmlByte);
            var resultSByte = service.GetRoot(xmlSByte);

            var resultUInt16 = service.GetRoot(xmlUInt16);
            var resultUInt32 = service.GetRoot(xmlUInt32);
            var resultUInt64 = service.GetRoot(xmlUInt64);

            var resultMyDec    = service.GetRoot(xmlMyDec);
            var resultMyDouble = service.GetRoot(xmlMyDouble);
            var resultMySingle = service.GetRoot(xmlMySingle);

            Assert.AreEqual("<ArrayOfInt16><Int16>10</Int16><Int16>20</Int16></ArrayOfInt16>", resultInt16);
            Assert.AreEqual("<ArrayOfInt32><Int32>10</Int32><Int32>20</Int32></ArrayOfInt32>", resultInt32);
            Assert.AreEqual("<ArrayOfInt64><Int64>10</Int64><Int64>20</Int64></ArrayOfInt64>", resultInt64);

            Assert.AreEqual("<ArrayOfByte><Byte>201</Byte><Byte>202</Byte></ArrayOfByte>", resultByte);
            Assert.AreEqual("<ArrayOfSByte><SByte>-102</SByte><SByte>101</SByte></ArrayOfSByte>", resultSByte);

            Assert.AreEqual("<ArrayOfUInt16><UInt16>10</UInt16><UInt16>20</UInt16></ArrayOfUInt16>", resultUInt16);
            Assert.AreEqual("<ArrayOfUInt32><UInt32>10</UInt32><UInt32>20</UInt32></ArrayOfUInt32>", resultUInt32);
            Assert.AreEqual("<ArrayOfUInt64><UInt64>10</UInt64><UInt64>20</UInt64></ArrayOfUInt64>", resultUInt64);

            Assert.AreEqual("<ArrayOfDecimal><Decimal>10.5</Decimal><Decimal>11.5</Decimal></ArrayOfDecimal>", resultMyDec);
            Assert.AreEqual("<ArrayOfDouble><Double>10.5</Double><Double>11.5</Double></ArrayOfDouble>", resultMyDouble);
            Assert.AreEqual("<ArrayOfSingle><Single>10.5</Single><Single>11.5</Single></ArrayOfSingle>", resultMySingle);
        }
示例#21
0
        public void TestArrayOfObjects()
        {
            var service = this.GetService();

            var item = new MyItem
            {
                MyGuid      = new Guid("11ba7957-5afb-4b59-9d9b-c06a18cda5c2"),
                MyInt       = 1,
                MyDouble    = 1.5,
                MyString    = "my value 1",
                MyBool      = true,
                MyEnumValue = MyEnum.Other,
                MyDate      = new DateTime(1990, 12, 12),
                MyObj       = new MyInnerItem {
                    MyInnerString = "my inner value 1"
                },
                MyList = new List <string> {
                    "a1", "b1"
                },
                MyArray = new string[] { "y1", "z1" }
            };

            var item2 = new MyItem
            {
                MyGuid      = new Guid("11ba7957-5afb-4b59-9d9b-c06a18cda5c3"),
                MyInt       = 2,
                MyDouble    = 2.5,
                MyString    = "my value 2",
                MyBool      = false,
                MyEnumValue = MyEnum.Default,
                MyDate      = new DateTime(1990, 10, 12),
                MyObj       = new MyInnerItem {
                    MyInnerString = "my inner value 2"
                },
                MyList = new List <string> {
                    "a2", "b2"
                },
                MyArray = new string[] { "y2", "z2" }
            };

            var xmlArray = new XmlArray("MyItems")
                           .Add(new XmlObject("MyItem")
                                .AddString("MyGuid", item.MyGuid.ToString())
                                .AddNumber("MyInt", item.MyInt)
                                .AddNumber("MyDouble", item.MyDouble)
                                .AddBool("MyBool", item.MyBool)
                                .AddString("MyString", item.MyString)
                                .AddString("MyEnumValue", item.MyEnumValue.ToString())
                                .AddString("MyDate", item.MyDate.ToString())
                                .AddObject("MyObj", XmlValue.CreateObject("MyObj").AddString("MyInnerString", "my inner value 1"))
                                .AddArray("MyList", XmlValue.CreateArray("MyList").Add(new XmlString("String", item.MyList[0])).Add(new XmlString("String", item.MyList[1])))
                                .AddArray("MyArray", XmlValue.CreateArray("MyArray").Add(new XmlString("String", item.MyArray[0])).Add(new XmlString("String", item.MyArray[1]))))
                           .Add(new XmlObject("MyItem")
                                .AddString("MyGuid", item2.MyGuid.ToString())
                                .AddNumber("MyInt", item2.MyInt)
                                .AddNumber("MyDouble", item2.MyDouble)
                                .AddString("MyString", item2.MyString)
                                .AddString("MyEnumValue", item2.MyEnumValue.ToString())
                                .AddString("MyDate", item2.MyDate.ToString())
                                .AddObject("MyObj", XmlValue.CreateObject("MyObj").AddString("MyInnerString", "my inner value 2"))
                                .AddArray("MyList", XmlValue.CreateArray("MyList").Add(new XmlString("String", item2.MyList[0])).Add(new XmlString("String", item2.MyList[1])))
                                .AddArray("MyArray", XmlValue.CreateArray("MyArray").Add(new XmlString("String", item2.MyArray[0])).Add(new XmlString("String", item2.MyArray[1]))));

            var results = service.Resolve <List <MyItem> >(xmlArray);

            var result = results[0];

            Assert.IsNotNull(result);
            Assert.AreEqual(new Guid("11ba7957-5afb-4b59-9d9b-c06a18cda5c2"), result.MyGuid);
            Assert.AreEqual(1, result.MyInt);
            Assert.AreEqual(1.5, result.MyDouble);
            Assert.AreEqual("my value 1", result.MyString);
            Assert.AreEqual(true, result.MyBool);
            Assert.AreEqual(MyEnum.Other, result.MyEnumValue);
            Assert.AreEqual(new DateTime(1990, 12, 12), result.MyDate);
            Assert.AreEqual("my inner value 1", result.MyObj.MyInnerString);
            Assert.AreEqual(2, result.MyList.Count);
            Assert.AreEqual("a1", result.MyList[0]);
            Assert.AreEqual("b1", result.MyList[1]);
            Assert.AreEqual(2, result.MyArray.Length);
            Assert.AreEqual("y1", result.MyArray[0]);
            Assert.AreEqual("z1", result.MyArray[1]);

            var result2 = results[1];

            Assert.IsNotNull(result2);
            Assert.AreEqual(new Guid("11ba7957-5afb-4b59-9d9b-c06a18cda5c3"), result2.MyGuid);
            Assert.AreEqual(2, result2.MyInt);
            Assert.AreEqual(2.5, result2.MyDouble);
            Assert.AreEqual("my value 2", result2.MyString);
            Assert.AreEqual(false, result2.MyBool);
            Assert.AreEqual(MyEnum.Default, result2.MyEnumValue);
            Assert.AreEqual(new DateTime(1990, 10, 12), result2.MyDate);
            Assert.AreEqual("my inner value 2", result2.MyObj.MyInnerString);
            Assert.AreEqual(2, result2.MyList.Count);
            Assert.AreEqual("a2", result2.MyList[0]);
            Assert.AreEqual("b2", result2.MyList[1]);
            Assert.AreEqual(2, result2.MyArray.Length);
            Assert.AreEqual("y2", result2.MyArray[0]);
            Assert.AreEqual("z2", result2.MyArray[1]);
        }