DeserializeTests.cs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  1. //
  2. // System.Xml.DeserializationTests
  3. //
  4. // Author:
  5. // Atsushi Enomoto <[email protected]>
  6. //
  7. // (C) 2003 Atsushi Enomoto
  8. //
  9. //
  10. using System;
  11. using System.Globalization;
  12. using System.IO;
  13. using System.Xml;
  14. using System.Xml.Serialization;
  15. using NUnit.Framework;
  16. using MonoTests.System.Xml.TestClasses;
  17. namespace MonoTests.System.XmlSerialization
  18. {
  19. public class Sample
  20. {
  21. public string Text;
  22. public string [] ArrayText;
  23. }
  24. [TestFixture]
  25. public class DeserializationTests
  26. {
  27. const string XmlSchemaNamespace = "http://www.w3.org/2001/XMLSchema";
  28. const string XmlSchemaInstanceNamespace = "http://www.w3.org/2001/XMLSchema-instance";
  29. const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/";
  30. const string WsdlTypesNamespace = "http://microsoft.com/wsdl/types/";
  31. const string ANamespace = "some:urn";
  32. const string AnotherNamespace = "another:urn";
  33. object result;
  34. private object Deserialize (Type t, string xml)
  35. {
  36. StringReader sr = new StringReader (xml);
  37. XmlReader xr = new XmlTextReader (sr);
  38. return Deserialize (t, xr);
  39. }
  40. private object DeserializeEncoded (Type t, string xml)
  41. {
  42. StringReader sr = new StringReader (xml);
  43. XmlReader xr = new XmlTextReader (sr);
  44. return DeserializeEncoded (t, xr);
  45. }
  46. private object Deserialize (Type t, XmlReader xr)
  47. {
  48. XmlSerializer ser = new XmlSerializer (t);
  49. result = ser.Deserialize (xr);
  50. return result;
  51. }
  52. private object DeserializeEncoded (Type t, XmlReader xr)
  53. {
  54. SoapReflectionImporter im = new SoapReflectionImporter ();
  55. XmlTypeMapping tm = im.ImportTypeMapping (t);
  56. XmlSerializer ser = new XmlSerializer (tm);
  57. result = ser.Deserialize (xr);
  58. return result;
  59. }
  60. [Test]
  61. public void SimpleDeserialize ()
  62. {
  63. Deserialize (typeof (Sample), "<Sample><Text>Test.</Text></Sample>");
  64. Assert.AreEqual (typeof (Sample), result.GetType ());
  65. Sample sample = result as Sample;
  66. Assert.AreEqual ("Test.", sample.Text);
  67. }
  68. [Test]
  69. public void DeserializeInt ()
  70. {
  71. Deserialize (typeof (int), "<int>10</int>");
  72. Assert.AreEqual (typeof (int), result.GetType ());
  73. Assert.AreEqual (10, result);
  74. }
  75. [Test]
  76. public void DeserializeSimpleArray ()
  77. {
  78. Deserialize (typeof (Sample), "<Sample><ArrayText><string>Test1</string><string>Test2</string></ArrayText></Sample>");
  79. Assert.AreEqual (typeof (Sample), result.GetType ());
  80. Sample sample = result as Sample;
  81. Assert.AreEqual ("Test1", sample.ArrayText[0]);
  82. Assert.AreEqual ("Test2", sample.ArrayText[1]);
  83. }
  84. [Test]
  85. public void DeserializeEmptyEnum ()
  86. {
  87. Field f = Deserialize (typeof (Field), "<field modifiers=\"\" />") as Field;
  88. Assert.AreEqual (MapModifiers.Public, f.Modifiers);
  89. }
  90. [Test]
  91. public void DeserializePrivateCollection ()
  92. {
  93. MemoryStream ms = new MemoryStream ();
  94. Container c = new Container();
  95. c.Items.Add(1);
  96. XmlSerializer serializer = new XmlSerializer(typeof(Container));
  97. serializer.Serialize(ms, c);
  98. ms.Position = 0;
  99. c = (Container) serializer.Deserialize (ms);
  100. Assert.AreEqual (1, c.Items[0]);
  101. }
  102. [Test]
  103. [Category("NotDotNet")]
  104. [ExpectedException (typeof (InvalidOperationException))]
  105. public void DeserializeEmptyPrivateCollection ()
  106. {
  107. MemoryStream ms = new MemoryStream ();
  108. Container2 c = new Container2(true);
  109. c.Items.Add(1);
  110. XmlSerializer serializer = new XmlSerializer(typeof(Container2));
  111. serializer.Serialize(ms, c);
  112. ms.Position = 0;
  113. c = (Container2) serializer.Deserialize (ms);
  114. }
  115. [Test]
  116. [Category("NotDotNet")]
  117. public void DeserializeArrayReferences ()
  118. {
  119. string s = "<Sample xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">";
  120. s += "<ArrayText xmlns:n3=\"http://schemas.xmlsoap.org/soap/encoding/\" xsi:type=\"n3:Array\" n3:arrayType=\"xsd:string[2]\">";
  121. s += "<item href=\"#id-606830706\"></item>";
  122. s += "<item xsi:type=\"xsd:string\">Hola</item>";
  123. s += "</ArrayText>";
  124. s += "<string id=\"id-606830706\" xsi:type=\"xsd:string\">Adeu</string>";
  125. s += "</Sample>";
  126. DeserializeEncoded (typeof(Sample), s);
  127. }
  128. [Test]
  129. public void TestDeserializeXmlNodeArray ()
  130. {
  131. object ob = Deserialize (typeof(object), "<anyType at=\"1\"><elem1/><elem2/></anyType>");
  132. Assert.IsTrue (ob is XmlNode[], "Is node array");
  133. XmlNode[] nods = (XmlNode[]) ob;
  134. Assert.AreEqual (3, nods.Length, "lengh");
  135. Assert.IsTrue (nods[0] is XmlAttribute, "#1");
  136. Assert.AreEqual ("at", ((XmlAttribute) nods[0]).LocalName, "#2");
  137. Assert.AreEqual ("1", ((XmlAttribute) nods[0]).Value, "#3");
  138. Assert.IsTrue (nods[1] is XmlElement, "#4");
  139. Assert.AreEqual ("elem1", ((XmlElement) nods[1]).LocalName, "#5");
  140. Assert.IsTrue (nods[2] is XmlElement, "#6");
  141. Assert.AreEqual ("elem2", ((XmlElement) nods[2]).LocalName, "#7");
  142. }
  143. [Test]
  144. public void TestDeserializeXmlElement ()
  145. {
  146. object ob = Deserialize (typeof(XmlElement), "<elem/>");
  147. Assert.IsTrue (ob is XmlElement, "#1");
  148. Assert.AreEqual ("elem", ((XmlElement) ob).LocalName, "#2");
  149. }
  150. [Test]
  151. public void TestDeserializeXmlCDataSection ()
  152. {
  153. CDataContainer c = (CDataContainer) Deserialize (typeof(CDataContainer), "<CDataContainer xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><cdata><![CDATA[data section contents]]></cdata></CDataContainer>");
  154. Assert.IsNotNull (c.cdata, "#1");
  155. Assert.AreEqual ("data section contents", c.cdata.Value, "#2");
  156. }
  157. [Test]
  158. public void TestDeserializeXmlNode ()
  159. {
  160. NodeContainer c = (NodeContainer) Deserialize (typeof(NodeContainer), "<NodeContainer xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><node>text</node></NodeContainer>");
  161. Assert.IsTrue (c.node is XmlText, "#1");
  162. Assert.AreEqual ("text", c.node.Value, "#2");
  163. }
  164. [Test]
  165. public void TestDeserializeChoices ()
  166. {
  167. Choices ch = (Choices) Deserialize (typeof(Choices), "<Choices><ChoiceZero>choice text</ChoiceZero></Choices>");
  168. Assert.AreEqual ("choice text", ch.MyChoice, "#A1");
  169. Assert.AreEqual (ItemChoiceType.ChoiceZero, ch.ItemType, "#A2");
  170. ch = (Choices) Deserialize (typeof(Choices), "<Choices><ChoiceOne>choice text</ChoiceOne></Choices>");
  171. Assert.AreEqual ("choice text", ch.MyChoice, "#B1");
  172. Assert.AreEqual (ItemChoiceType.StrangeOne, ch.ItemType, "#B2");
  173. ch = (Choices) Deserialize (typeof(Choices), "<Choices><ChoiceTwo>choice text</ChoiceTwo></Choices>");
  174. Assert.AreEqual ("choice text", ch.MyChoice, "#C1");
  175. Assert.AreEqual (ItemChoiceType.ChoiceTwo, ch.ItemType, "#C2");
  176. }
  177. [Test]
  178. public void TestDeserializeNamesWithSpaces ()
  179. {
  180. TestSpace ts = (TestSpace) Deserialize (typeof(TestSpace), "<Type_x0020_with_x0020_space xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' Attribute_x0020_with_x0020_space='5'><Element_x0020_with_x0020_space>4</Element_x0020_with_x0020_space></Type_x0020_with_x0020_space>");
  181. Assert.AreEqual (4, ts.elem, "#1");
  182. Assert.AreEqual (5, ts.attr, "#2");
  183. }
  184. [Test]
  185. public void TestDeserializeDefaults ()
  186. {
  187. ListDefaults d2 = (ListDefaults) Deserialize (typeof(ListDefaults), "<root/>");
  188. Assert.IsNotNull (d2.list2, "#A1");
  189. Assert.IsNull (d2.list3, "#A2");
  190. Assert.IsNull (d2.list4, "#A3");
  191. Assert.IsNotNull (d2.list5, "#A4");
  192. Assert.IsNotNull (d2.ed, "#A5");
  193. Assert.IsNotNull (d2.str, "#A6");
  194. d2 = (ListDefaults) Deserialize (typeof(ListDefaults), "<root></root>");
  195. Assert.IsNotNull (d2.list2, "#B1");
  196. Assert.IsNull (d2.list3, "#B2");
  197. Assert.IsNull (d2.list4, "#B3");
  198. Assert.IsNotNull (d2.list5, "#B4");
  199. Assert.IsNotNull (d2.ed, "#B5");
  200. Assert.IsNotNull (d2.str, "#B6");
  201. }
  202. [Test]
  203. public void TestDeserializeChoiceArray ()
  204. {
  205. CompositeValueType v = (CompositeValueType) Deserialize (typeof(CompositeValueType), "<?xml version=\"1.0\" encoding=\"utf-16\"?><CompositeValueType xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><In>1</In><Es>2</Es></CompositeValueType>");
  206. Assert.IsNotNull (v.Items, "#1");
  207. Assert.IsNotNull (v.ItemsElementName, "#2");
  208. Assert.AreEqual (2, v.Items.Length, "#3");
  209. Assert.AreEqual (2, v.ItemsElementName.Length, "#4");
  210. Assert.AreEqual (1, v.Items[0], "#5");
  211. Assert.AreEqual (2, v.Items[1], "#6");
  212. Assert.AreEqual (ItemsChoiceType.In, v.ItemsElementName[0], "#7");
  213. Assert.AreEqual (ItemsChoiceType.Es, v.ItemsElementName[1], "#8");
  214. }
  215. [Test]
  216. public void TestDeserializeCollection ()
  217. {
  218. string s0 = "";
  219. s0+=" <ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  220. s0+=" <Entity Name='node1'/>";
  221. s0+=" <Entity Name='node2'/>";
  222. s0+=" </ArrayOfEntity>";
  223. EntityCollection col = (EntityCollection) Deserialize (typeof(EntityCollection), s0);
  224. Assert.IsNotNull (col, "#1");
  225. Assert.AreEqual (2, col.Count, "#2");
  226. Assert.IsNull (col[0].Parent, "#3");
  227. Assert.IsNull (col[1].Parent, "#4");
  228. }
  229. [Test]
  230. public void TestDeserializeEmptyCollection ()
  231. {
  232. string s1 = "";
  233. s1+=" <ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  234. EntityCollection col = (EntityCollection) Deserialize (typeof(EntityCollection), s1);
  235. Assert.IsNotNull (col, "#A1");
  236. Assert.AreEqual (0, col.Count, "#A2");
  237. string s1_1 = "";
  238. s1_1+=" <ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  239. s1_1+=" </ArrayOfEntity>";
  240. col = (EntityCollection) Deserialize (typeof(EntityCollection), s1_1);
  241. Assert.IsNotNull (col, "#B1");
  242. Assert.AreEqual (0, col.Count, "#B2");
  243. }
  244. [Test]
  245. public void TestDeserializeNilCollectionIsNotNull ()
  246. {
  247. string s2 = "";
  248. s2+=" <ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true'/>";
  249. EntityCollection col = (EntityCollection) Deserialize (typeof(EntityCollection), s2);
  250. Assert.IsNotNull (col, "#1");
  251. Assert.AreEqual (0, col.Count, "#2");
  252. }
  253. [Test]
  254. public void TestDeserializeObjectCollections ()
  255. {
  256. string s3 = "";
  257. s3+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  258. s3+=" <Collection1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  259. s3+=" <Entity Name='node1'/>";
  260. s3+=" <Entity Name='node2'/>";
  261. s3+=" </Collection1>";
  262. s3+=" <Collection2 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  263. s3+=" <Entity Name='node1'/>";
  264. s3+=" <Entity Name='node2'/>";
  265. s3+=" </Collection2>";
  266. s3+=" <Collection3 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  267. s3+=" <Entity Name='node1'/>";
  268. s3+=" <Entity Name='node2'/>";
  269. s3+=" </Collection3>";
  270. s3+=" <Collection4 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  271. s3+=" <Entity Name='node1'/>";
  272. s3+=" <Entity Name='node2'/>";
  273. s3+=" </Collection4>";
  274. s3+="</Container>";
  275. EntityContainer cont = (EntityContainer) Deserialize (typeof(EntityContainer), s3);
  276. Assert.IsNotNull (cont, "#A1");
  277. Assert.IsNotNull (cont.Collection1, "#B1");
  278. Assert.AreEqual (2, cont.Collection1.Count, "#B2");
  279. Assert.AreEqual ("assigned", cont.Collection1.Container, "#B3");
  280. Assert.AreEqual ("assigned", cont.Collection1[0].Parent, "#B4");
  281. Assert.AreEqual ("assigned", cont.Collection1[1].Parent, "#B5");
  282. Assert.IsNotNull (cont.Collection2, "#C1");
  283. Assert.AreEqual (2, cont.Collection2.Count, "#C2");
  284. Assert.AreEqual ("assigned", cont.Collection2.Container, "#C3");
  285. Assert.AreEqual ("assigned", cont.Collection2[0].Parent, "#C4");
  286. Assert.AreEqual ("assigned", cont.Collection2[1].Parent, "#C5");
  287. Assert.IsNotNull (cont.Collection3, "#D1");
  288. Assert.AreEqual (2, cont.Collection3.Count, "#D2");
  289. Assert.AreEqual ("root", cont.Collection3.Container, "#D3");
  290. Assert.AreEqual ("root", cont.Collection3[0].Parent, "#D4");
  291. Assert.AreEqual ("root", cont.Collection3[1].Parent, "#D5");
  292. Assert.IsNotNull (cont.Collection4, "#E1");
  293. Assert.AreEqual (2, cont.Collection4.Count, "#E2");
  294. Assert.AreEqual ("root", cont.Collection4.Container, "#E3");
  295. Assert.AreEqual ("root", cont.Collection4[0].Parent, "#E4");
  296. Assert.AreEqual ("root", cont.Collection4[1].Parent, "#E5");
  297. }
  298. [Test]
  299. public void TestDeserializeEmptyObjectCollections ()
  300. {
  301. string s4 = "";
  302. s4+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  303. s4+="</Container>";
  304. EntityContainer cont = (EntityContainer) Deserialize (typeof(EntityContainer), s4);
  305. Assert.IsNotNull (cont, "#A1");
  306. Assert.IsNotNull (cont.Collection1, "#B1");
  307. Assert.AreEqual (0, cont.Collection1.Count, "#B2");
  308. Assert.AreEqual ("assigned", cont.Collection1.Container, "#B3");
  309. Assert.IsNotNull (cont.Collection2, "#C1");
  310. Assert.AreEqual (0, cont.Collection2.Count, "#C2");
  311. Assert.AreEqual ("assigned", cont.Collection2.Container, "#C3");
  312. Assert.IsNotNull (cont.Collection3, "#D1");
  313. Assert.AreEqual (0, cont.Collection3.Count, "#D2");
  314. Assert.AreEqual ("root", cont.Collection3.Container, "#D3");
  315. Assert.IsNotNull (cont.Collection4, "#E1");
  316. Assert.AreEqual (0, cont.Collection4.Count, "#E2");
  317. Assert.AreEqual ("root", cont.Collection4.Container, "#E3");
  318. }
  319. [Test]
  320. public void TestDeserializeObjectNilCollectionsAreNotNull ()
  321. {
  322. string s5 = "";
  323. s5+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  324. s5+=" <Collection1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  325. s5+=" <Collection2 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  326. s5+=" <Collection3 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  327. s5+=" <Collection4 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  328. s5+="</Container>";
  329. EntityContainer cont = (EntityContainer) Deserialize (typeof(EntityContainer), s5);
  330. Assert.IsNotNull (cont, "#A1");
  331. Assert.IsNotNull (cont.Collection1, "#B1");
  332. Assert.AreEqual (0, cont.Collection1.Count, "#B2");
  333. Assert.AreEqual ("assigned", cont.Collection1.Container, "#B3");
  334. Assert.IsNotNull (cont.Collection2, "#C1");
  335. Assert.AreEqual (0, cont.Collection2.Count, "#C2");
  336. Assert.AreEqual ("assigned", cont.Collection2.Container, "#C3");
  337. Assert.IsNotNull (cont.Collection3, "#D1");
  338. Assert.AreEqual (0, cont.Collection3.Count, "#D2");
  339. Assert.AreEqual ("root", cont.Collection3.Container, "#D3");
  340. Assert.IsNotNull (cont.Collection4, "#E1");
  341. Assert.AreEqual (0, cont.Collection4.Count, "#E2");
  342. Assert.AreEqual ("root", cont.Collection4.Container, "#E3");
  343. }
  344. [Test]
  345. public void TestDeserializeObjectEmptyCollections ()
  346. {
  347. string s6 = "";
  348. s6+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  349. s6+=" <Collection1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  350. s6+=" <Collection2 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  351. s6+=" <Collection3 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  352. s6+=" <Collection4 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  353. s6+="</Container>";
  354. EntityContainer cont = (EntityContainer) Deserialize (typeof(EntityContainer), s6);
  355. Assert.IsNotNull (cont, "#A1");
  356. Assert.IsNotNull (cont.Collection1, "#B1");
  357. Assert.AreEqual (0, cont.Collection1.Count, "#B2");
  358. Assert.AreEqual ("assigned", cont.Collection1.Container, "#B3");
  359. Assert.IsNotNull (cont.Collection2, "#C1");
  360. Assert.AreEqual (0, cont.Collection2.Count, "#C2");
  361. Assert.AreEqual ("assigned", cont.Collection2.Container, "#C3");
  362. Assert.IsNotNull (cont.Collection3, "#D1");
  363. Assert.AreEqual (0, cont.Collection3.Count, "#D2");
  364. Assert.AreEqual ("root", cont.Collection3.Container, "#D3");
  365. Assert.IsNotNull (cont.Collection4, "#E1");
  366. Assert.AreEqual (0, cont.Collection4.Count, "#E2");
  367. Assert.AreEqual ("root", cont.Collection4.Container, "#E3");
  368. }
  369. [Test]
  370. public void TestDeserializeObjectEmptyArrays ()
  371. {
  372. string s6 = "";
  373. s6+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  374. s6+=" <Collection1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  375. s6+=" <Collection2 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  376. s6+=" <Collection3 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  377. s6+=" <Collection4 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  378. s6+="</Container>";
  379. ArrayEntityContainer cont = (ArrayEntityContainer) Deserialize (typeof(ArrayEntityContainer), s6);
  380. Assert.IsNotNull (cont, "#A1");
  381. Assert.IsNotNull (cont.Collection1, "#B1");
  382. Assert.AreEqual (0, cont.Collection1.Length, "#B2");
  383. Assert.IsNotNull (cont.Collection2, "#C1");
  384. Assert.AreEqual (0, cont.Collection2.Length, "#C2");
  385. Assert.IsNotNull (cont.Collection3, "#D1");
  386. Assert.AreEqual (0, cont.Collection3.Length, "#D2");
  387. Assert.IsNotNull (cont.Collection4, "#E1");
  388. Assert.AreEqual (0, cont.Collection4.Length, "#E2");
  389. }
  390. [Test]
  391. public void TestDeserializeEmptyObjectArrays ()
  392. {
  393. string s4 = "";
  394. s4+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  395. s4+="</Container>";
  396. ArrayEntityContainer cont = (ArrayEntityContainer) Deserialize (typeof(ArrayEntityContainer), s4);
  397. Assert.IsNotNull (cont, "#A1");
  398. Assert.IsNull (cont.Collection1, "#B1");
  399. Assert.IsNull (cont.Collection2, "#B2");
  400. Assert.IsNotNull (cont.Collection3, "#C1");
  401. Assert.AreEqual (0, cont.Collection3.Length, "#C2");
  402. Assert.IsNotNull (cont.Collection4, "#D1");
  403. Assert.AreEqual (0, cont.Collection4.Length, "#D2");
  404. }
  405. [Test]
  406. public void TestDeserializeObjectNilArrays ()
  407. {
  408. string s5 = "";
  409. s5+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  410. s5+=" <Collection1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  411. s5+=" <Collection2 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  412. s5+=" <Collection3 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  413. s5+=" <Collection4 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true' />";
  414. s5+="</Container>";
  415. ArrayEntityContainer cont = (ArrayEntityContainer) Deserialize (typeof(ArrayEntityContainer), s5);
  416. Assert.IsNotNull (cont, "#A1");
  417. Assert.IsNull (cont.Collection1, "#B1");
  418. Assert.IsNull (cont.Collection2, "#B2");
  419. Assert.IsNull (cont.Collection3, "#B3");
  420. Assert.IsNotNull (cont.Collection4, "#C1");
  421. Assert.AreEqual (0, cont.Collection4.Length, "#C2");
  422. }
  423. [Test]
  424. public void TestDeserializeEmptyArray ()
  425. {
  426. string s1 = "";
  427. s1+="<ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />";
  428. Entity[] col = (Entity[]) Deserialize (typeof(Entity[]), s1);
  429. Assert.IsNotNull (col, "#A1");
  430. Assert.AreEqual (0, col.Length, "#A2");
  431. string s1_1 = "";
  432. s1_1+=" <ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  433. s1_1+=" </ArrayOfEntity>";
  434. col = (Entity[]) Deserialize (typeof(Entity[]), s1_1);
  435. Assert.IsNotNull (col, "#B1");
  436. Assert.AreEqual (0, col.Length, "#B2");
  437. }
  438. [Test]
  439. public void TestDeserializeNilArray ()
  440. {
  441. string s2 = "";
  442. s2 += "<ArrayOfEntity xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true'/>";
  443. Entity[] col = (Entity[]) Deserialize (typeof(Entity[]), s2);
  444. Assert.IsNull (col, "#1");
  445. }
  446. [Test]
  447. public void TestDeserializeObjectWithReadonlyCollection ()
  448. {
  449. string s3 = "";
  450. s3+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  451. s3+=" <Collection1>";
  452. s3+=" <Entity Name='node1'/>";
  453. s3+=" <Entity Name='node2'/>";
  454. s3+=" </Collection1>";
  455. s3+="</Container>";
  456. ObjectWithReadonlyCollection cont = (ObjectWithReadonlyCollection) Deserialize (typeof(ObjectWithReadonlyCollection), s3);
  457. Assert.IsNotNull (cont, "#1");
  458. Assert.IsNotNull (cont.Collection1, "#2");
  459. Assert.AreEqual (2, cont.Collection1.Count, "#3");
  460. Assert.AreEqual ("root", cont.Collection1.Container, "#4");
  461. Assert.AreEqual ("root", cont.Collection1[0].Parent, "#5");
  462. Assert.AreEqual ("root", cont.Collection1[1].Parent, "#6");
  463. }
  464. [Test]
  465. [ExpectedException (typeof(InvalidOperationException))]
  466. public void TestDeserializeObjectWithReadonlyNulCollection ()
  467. {
  468. string s3 = "";
  469. s3+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  470. s3+=" <Collection1>";
  471. s3+=" <Entity Name='node1'/>";
  472. s3+=" <Entity Name='node2'/>";
  473. s3+=" </Collection1>";
  474. s3+="</Container>";
  475. Deserialize (typeof(ObjectWithReadonlyNulCollection), s3);
  476. }
  477. [Test]
  478. public void TestDeserializeObjectWithReadonlyArray ()
  479. {
  480. string s3 = "";
  481. s3+="<Container xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
  482. s3+=" <Collection1>";
  483. s3+=" <Entity Name='node1'/>";
  484. s3+=" <Entity Name='node2'/>";
  485. s3+=" </Collection1>";
  486. s3+="</Container>";
  487. ObjectWithReadonlyArray cont = (ObjectWithReadonlyArray) Deserialize (typeof(ObjectWithReadonlyArray), s3);
  488. Assert.IsNotNull (cont, "#1");
  489. Assert.IsNotNull (cont.Collection1, "#2");
  490. Assert.AreEqual (0, cont.Collection1.Length, "#3");
  491. }
  492. [Test]
  493. [Category ("NotWorking")]
  494. public void TestDeserialize_EnumDefaultValue ()
  495. {
  496. EnumDefaultValue e;
  497. e = (EnumDefaultValue) Deserialize (typeof (EnumDefaultValue), "<EnumDefaultValue />");
  498. Assert.AreEqual (0, (int) e, "#1");
  499. e = (EnumDefaultValue) Deserialize (typeof (EnumDefaultValue), "<EnumDefaultValue>e3</EnumDefaultValue>");
  500. Assert.AreEqual (EnumDefaultValue.e3, e, "#2");
  501. e = (EnumDefaultValue) Deserialize (typeof (EnumDefaultValue), "<EnumDefaultValue>e1 e2</EnumDefaultValue>");
  502. Assert.AreEqual (EnumDefaultValue.e3, e, "#3");
  503. e = (EnumDefaultValue) Deserialize (typeof (EnumDefaultValue), "<EnumDefaultValue>e1 e2</EnumDefaultValue>");
  504. Assert.AreEqual (EnumDefaultValue.e1 | EnumDefaultValue.e2, e, "#4");
  505. }
  506. [Test]
  507. [Category ("NotWorking")]
  508. public void TestDeserialize_EnumDefaultValueNF ()
  509. {
  510. EnumDefaultValueNF e;
  511. e = (EnumDefaultValueNF) Deserialize (typeof (EnumDefaultValueNF), "<EnumDefaultValueNF>e3</EnumDefaultValueNF>");
  512. Assert.AreEqual (EnumDefaultValueNF.e3, e, "#A1");
  513. try {
  514. Deserialize (typeof (EnumDefaultValueNF), "<EnumDefaultValueNF />");
  515. Assert.Fail ("#B1");
  516. } catch (InvalidOperationException ex) {
  517. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
  518. Assert.IsNotNull (ex.InnerException, "#B3");
  519. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#B4");
  520. Assert.IsNotNull (ex.InnerException.Message, "#B5");
  521. Assert.IsTrue (ex.InnerException.Message.IndexOf ("''") != -1, "#B6");
  522. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (EnumDefaultValueNF).Name) != -1, "#B7");
  523. }
  524. try {
  525. Deserialize (typeof (EnumDefaultValueNF), "<EnumDefaultValueNF>e1 e3</EnumDefaultValueNF>");
  526. Assert.Fail ("#C1");
  527. } catch (InvalidOperationException ex) {
  528. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
  529. Assert.IsNotNull (ex.InnerException, "#C3");
  530. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#C4");
  531. Assert.IsNotNull (ex.InnerException.Message, "#C5");
  532. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'e1 e3'") != -1, "#C6");
  533. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (EnumDefaultValueNF).Name) != -1, "#C7");
  534. }
  535. try {
  536. Deserialize (typeof (EnumDefaultValueNF), "<EnumDefaultValueNF> e3</EnumDefaultValueNF>");
  537. Assert.Fail ("#D1");
  538. } catch (InvalidOperationException ex) {
  539. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
  540. Assert.IsNotNull (ex.InnerException, "#D3");
  541. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#D4");
  542. Assert.IsNotNull (ex.InnerException.Message, "#D5");
  543. Assert.IsTrue (ex.InnerException.Message.IndexOf ("' e3'") != -1, "#D6");
  544. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (EnumDefaultValueNF).Name) != -1, "#D7");
  545. }
  546. try {
  547. Deserialize (typeof (EnumDefaultValueNF), "<EnumDefaultValueNF> </EnumDefaultValueNF>");
  548. Assert.Fail ("#E1");
  549. } catch (InvalidOperationException ex) {
  550. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
  551. Assert.IsNotNull (ex.InnerException, "#E3");
  552. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#E4");
  553. Assert.IsNotNull (ex.InnerException.Message, "#E5");
  554. Assert.IsTrue (ex.InnerException.Message.IndexOf ("' '") != -1, "#E6");
  555. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (EnumDefaultValueNF).Name) != -1, "#E7");
  556. }
  557. try {
  558. Deserialize (typeof (EnumDefaultValueNF), "<EnumDefaultValueNF>1</EnumDefaultValueNF>");
  559. Assert.Fail ("#F1");
  560. } catch (InvalidOperationException ex) {
  561. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
  562. Assert.IsNotNull (ex.InnerException, "#F3");
  563. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#F4");
  564. Assert.IsNotNull (ex.InnerException.Message, "#F5");
  565. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'1'") != -1, "#F6");
  566. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (EnumDefaultValueNF).Name) != -1, "#F7");
  567. }
  568. }
  569. [Test]
  570. [Category ("NotWorking")]
  571. public void TestDeserialize_FlagEnum ()
  572. {
  573. FlagEnum e;
  574. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum />");
  575. Assert.AreEqual (0, (int) e, "#A1");
  576. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum>one</FlagEnum>");
  577. Assert.AreEqual (FlagEnum.e1, e, "#A2");
  578. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum>one two</FlagEnum>");
  579. Assert.AreEqual (FlagEnum.e1 | FlagEnum.e2, e, "#A3");
  580. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum>one two four</FlagEnum>");
  581. Assert.AreEqual (FlagEnum.e1 | FlagEnum.e2 | FlagEnum.e4, e, "#A4");
  582. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum> two four </FlagEnum>");
  583. Assert.AreEqual (FlagEnum.e2 | FlagEnum.e4, e, "#A5");
  584. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum>two four two</FlagEnum>");
  585. Assert.AreEqual (FlagEnum.e2 | FlagEnum.e4, e, "#A6");
  586. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum>two four two one four two one</FlagEnum>");
  587. Assert.AreEqual (FlagEnum.e1 | FlagEnum.e2 | FlagEnum.e4, e, "#A7");
  588. e = (FlagEnum) Deserialize (typeof (FlagEnum), "<FlagEnum></FlagEnum>");
  589. Assert.AreEqual (0, (int) e, "#A8");
  590. try {
  591. Deserialize (typeof (FlagEnum), "<FlagEnum>1</FlagEnum>");
  592. Assert.Fail ("#B1");
  593. } catch (InvalidOperationException ex) {
  594. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
  595. Assert.IsNotNull (ex.InnerException, "#B3");
  596. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#B4");
  597. Assert.IsNotNull (ex.InnerException.Message, "#B5");
  598. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'1'") != -1, "#B6");
  599. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (FlagEnum).FullName) != -1, "#B7");
  600. }
  601. try {
  602. Deserialize (typeof (FlagEnum), "<FlagEnum>one,two</FlagEnum>");
  603. Assert.Fail ("#C1");
  604. } catch (InvalidOperationException ex) {
  605. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
  606. Assert.IsNotNull (ex.InnerException, "#C3");
  607. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#C4");
  608. Assert.IsNotNull (ex.InnerException.Message, "#C5");
  609. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'one,two'") != -1, "#C6");
  610. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (FlagEnum).FullName) != -1, "#C7");
  611. }
  612. try {
  613. Deserialize (typeof (FlagEnum), "<FlagEnum>one something</FlagEnum>");
  614. Assert.Fail ("#D1");
  615. } catch (InvalidOperationException ex) {
  616. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
  617. Assert.IsNotNull (ex.InnerException, "#D3");
  618. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#D4");
  619. Assert.IsNotNull (ex.InnerException.Message, "#D5");
  620. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'something'") != -1, "#D6");
  621. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (FlagEnum).FullName) != -1, "#D7");
  622. }
  623. }
  624. [Test]
  625. [Category ("NotWorking")]
  626. public void TestDeserialize_ZeroFlagEnum ()
  627. {
  628. ZeroFlagEnum e;
  629. e = (ZeroFlagEnum) Deserialize (typeof (ZeroFlagEnum), "<ZeroFlagEnum />");
  630. Assert.AreEqual (ZeroFlagEnum.e0, e, "#A1");
  631. e = (ZeroFlagEnum) Deserialize (typeof (ZeroFlagEnum), "<ZeroFlagEnum></ZeroFlagEnum>");
  632. Assert.AreEqual (ZeroFlagEnum.e0, e, "#A2");
  633. try {
  634. Deserialize (typeof (ZeroFlagEnum), "<ZeroFlagEnum>four</ZeroFlagEnum>");
  635. Assert.Fail ("#B1");
  636. } catch (InvalidOperationException ex) {
  637. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
  638. Assert.IsNotNull (ex.InnerException, "#B3");
  639. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#B4");
  640. Assert.IsNotNull (ex.InnerException.Message, "#B5");
  641. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'four'") != -1, "#B6");
  642. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (ZeroFlagEnum).FullName) != -1, "#B7");
  643. }
  644. try {
  645. Deserialize (typeof (ZeroFlagEnum), "<ZeroFlagEnum> o&lt;n&gt;e four </ZeroFlagEnum>");
  646. Assert.Fail ("#C1");
  647. } catch (InvalidOperationException ex) {
  648. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
  649. Assert.IsNotNull (ex.InnerException, "#C3");
  650. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#C4");
  651. Assert.IsNotNull (ex.InnerException.Message, "#C5");
  652. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'four'") != -1, "#C6");
  653. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (ZeroFlagEnum).FullName) != -1, "#C7");
  654. }
  655. try {
  656. Deserialize (typeof (ZeroFlagEnum), "<ZeroFlagEnum>four o&lt;n&gt;e</ZeroFlagEnum>");
  657. Assert.Fail ("#D1");
  658. } catch (InvalidOperationException ex) {
  659. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
  660. Assert.IsNotNull (ex.InnerException, "#D3");
  661. Assert.AreEqual (typeof (InvalidOperationException), ex.InnerException.GetType (), "#D4");
  662. Assert.IsNotNull (ex.InnerException.Message, "#D5");
  663. Assert.IsTrue (ex.InnerException.Message.IndexOf ("'four'") != -1, "#D6");
  664. Assert.IsTrue (ex.InnerException.Message.IndexOf (typeof (ZeroFlagEnum).FullName) != -1, "#D7");
  665. }
  666. }
  667. [Test]
  668. public void TestDeserialize_PrimitiveTypesContainer ()
  669. {
  670. Deserialize (typeof (PrimitiveTypesContainer), string.Format (CultureInfo.InvariantCulture,
  671. "<?xml version='1.0' encoding='utf-16'?>" +
  672. "<PrimitiveTypesContainer xmlns:xsd='{0}' xmlns:xsi='{1}' xmlns='{2}'>" +
  673. "<Number xsi:type='xsd:int'>2004</Number>" +
  674. "<Name xsi:type='xsd:string'>some name</Name>" +
  675. "<Index xsi:type='xsd:unsignedByte'>56</Index>" +
  676. "<Password xsi:type='xsd:base64Binary'>8w8=</Password>" +
  677. "<PathSeparatorCharacter xmlns:q1='{3}' xsi:type='q1:char'>47</PathSeparatorCharacter>" +
  678. "</PrimitiveTypesContainer>", XmlSchemaNamespace,
  679. XmlSchemaInstanceNamespace, ANamespace, WsdlTypesNamespace));
  680. Assert.AreEqual (typeof (PrimitiveTypesContainer), result.GetType (), "#A1");
  681. PrimitiveTypesContainer deserialized = (PrimitiveTypesContainer) result;
  682. Assert.AreEqual (2004, deserialized.Number, "#A2");
  683. Assert.AreEqual ("some name", deserialized.Name, "#A3");
  684. Assert.AreEqual ((byte) 56, deserialized.Index, "#A4");
  685. Assert.AreEqual (new byte[] { 243, 15 }, deserialized.Password, "#A5");
  686. Assert.AreEqual ('/', deserialized.PathSeparatorCharacter, "#A6");
  687. DeserializeEncoded (typeof (PrimitiveTypesContainer), string.Format (CultureInfo.InvariantCulture,
  688. "<?xml version='1.0' encoding='utf-16'?>" +
  689. "<q1:PrimitiveTypesContainer xmlns:xsd='{0}' xmlns:xsi='{1}' id='id1' xmlns:q1='{2}'>" +
  690. "<Number xsi:type='xsd:int'>2004</Number>" +
  691. "<Name xsi:type='xsd:string'>some name</Name>" +
  692. "<Index xsi:type='xsd:unsignedByte'>56</Index>" +
  693. "<Password xsi:type='xsd:base64Binary'>8w8=</Password>" +
  694. "<PathSeparatorCharacter xmlns:q1='{3}' xsi:type='q1:char'>47</PathSeparatorCharacter>" +
  695. "</q1:PrimitiveTypesContainer>", XmlSchemaNamespace,
  696. XmlSchemaInstanceNamespace, AnotherNamespace, WsdlTypesNamespace));
  697. Assert.AreEqual (typeof (PrimitiveTypesContainer), result.GetType (), "#B1");
  698. deserialized = (PrimitiveTypesContainer) result;
  699. Assert.AreEqual (2004, deserialized.Number, "#B2");
  700. Assert.AreEqual ("some name", deserialized.Name, "#B3");
  701. Assert.AreEqual ((byte) 56, deserialized.Index, "#B4");
  702. Assert.AreEqual (new byte[] { 243, 15 }, deserialized.Password, "#B5");
  703. Assert.AreEqual ('/', deserialized.PathSeparatorCharacter, "#B6");
  704. }
  705. }
  706. }