public void RecursiveArrayMemberTest() { Type parsedType, parsedArrayType; string xml = @"<?xml version=""1.0"" ?> <value> <struct> <member> <name>Level</name> <value>1</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-1</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-1-1</value> </member> <member> <name>childExamples</name> <value> <array> <data> </data> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-1-2</value> </member> <member> <name>childExamples</name> <value> <array> <data> </data> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-2</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-2-1</value> </member> <member> <name>childExamples</name> <value> <array> <data> </data> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-2-2</value> </member> <member> <name>childExamples</name> <value> <array> <data> </data> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value>"; object obj = Utils.Parse(xml, typeof(RecursiveArrayMember), MappingAction.Error, out parsedType, out parsedArrayType); RecursiveArrayMember ret = (RecursiveArrayMember)obj; }
public void RecursiveArrayMemberTest() { Stream stm = new MemoryStream(); var req = new XmlRpcRequest(); var example = new RecursiveArrayMember { Level = "1", childExamples = new[] { new RecursiveArrayMember { Level = "1-1", childExamples = new[] { new RecursiveArrayMember { Level = "1-1-1", childExamples = new RecursiveArrayMember[] {} }, new RecursiveArrayMember { Level = "1-1-2", childExamples = new RecursiveArrayMember[] {} } } }, new RecursiveArrayMember { Level = "1-2", childExamples = new[] { new RecursiveArrayMember { Level = "1-2-1", childExamples = new RecursiveArrayMember[] {} }, new RecursiveArrayMember { Level = "1-2-2", childExamples = new RecursiveArrayMember[] {} } } } } }; req.args = new Object[] { example }; req.method = "Foo"; var ser = new XmlRpcSerializer(); ser.UseStringTag = false; ser.SerializeRequest(stm, req); stm.Position = 0; TextReader tr = new StreamReader(stm); var reqstr = tr.ReadToEnd(); Assert.AreEqual( @"<?xml version=""1.0""?> <methodCall> <methodName>Foo</methodName> <params> <param> <value> <struct> <member> <name>Level</name> <value>1</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-1</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-1-1</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-1-2</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-2</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-2-1</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-2-2</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> </param> </params> </methodCall>", reqstr); }
public void RecursiveArrayMemberTest() { Stream stm = new MemoryStream(); XmlRpcRequest req = new XmlRpcRequest(); var example = new RecursiveArrayMember { Level = "1", childExamples = new RecursiveArrayMember[] { new RecursiveArrayMember { Level = "1-1", childExamples = new RecursiveArrayMember[] { new RecursiveArrayMember { Level = "1-1-1", childExamples = new RecursiveArrayMember[] { } }, new RecursiveArrayMember { Level = "1-1-2", childExamples = new RecursiveArrayMember[] { } } } }, new RecursiveArrayMember { Level = "1-2", childExamples = new RecursiveArrayMember[] { new RecursiveArrayMember { Level = "1-2-1", childExamples = new RecursiveArrayMember[] { } }, new RecursiveArrayMember { Level = "1-2-2", childExamples = new RecursiveArrayMember[] { } } } } } }; req.args = new Object[] { example }; req.method = "Foo"; XmlRpcSerializer ser = new XmlRpcSerializer(); ser.UseStringTag = false; ser.SerializeRequest(stm, req); stm.Position = 0; TextReader tr = new StreamReader(stm); string reqstr = tr.ReadToEnd(); Assert.AreEqual( @"<?xml version=""1.0""?> <methodCall> <methodName>Foo</methodName> <params> <param> <value> <struct> <member> <name>Level</name> <value>1</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-1</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-1-1</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-1-2</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-2</value> </member> <member> <name>childExamples</name> <value> <array> <data> <value> <struct> <member> <name>Level</name> <value>1-2-1</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> <value> <struct> <member> <name>Level</name> <value>1-2-2</value> </member> <member> <name>childExamples</name> <value> <array> <data /> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> </param> </params> </methodCall>", reqstr); }