PageRenderTime 36ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/mcs/class/System.Xaml/Test/System.Xaml/XamlReaderTestBase.cs

https://bitbucket.org/danipen/mono
C# | 3389 lines | 2446 code | 704 blank | 239 comment | 153 complexity | 47fabac2cc80dcb4c3eeab8e829b35f8 MD5 | raw file
Possible License(s): Unlicense, Apache-2.0, LGPL-2.0, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0, GPL-2.0
  1. //
  2. // Copyright (C) 2010 Novell Inc. http://novell.com
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining
  5. // a copy of this software and associated documentation files (the
  6. // "Software"), to deal in the Software without restriction, including
  7. // without limitation the rights to use, copy, modify, merge, publish,
  8. // distribute, sublicense, and/or sell copies of the Software, and to
  9. // permit persons to whom the Software is furnished to do so, subject to
  10. // the following conditions:
  11. //
  12. // The above copyright notice and this permission notice shall be
  13. // included in all copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  19. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  20. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  21. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  22. //
  23. using System;
  24. using System.Collections;
  25. using System.Collections.Generic;
  26. using System.ComponentModel;
  27. using System.IO;
  28. using System.Linq;
  29. using System.Reflection;
  30. using System.Windows.Markup;
  31. using System.Xaml;
  32. using System.Xaml.Schema;
  33. using System.Xml;
  34. using NUnit.Framework;
  35. using CategoryAttribute = NUnit.Framework.CategoryAttribute;
  36. // Some test result remarks:
  37. // - TypeExtension: [ConstructorArgument] -> PositionalParameters
  38. // - StaticExtension: almost identical to TypeExtension
  39. // - Reference: [ConstructorArgument], [ContentProperty] -> only ordinal member.
  40. // - ArrayExtension: [ConstrutorArgument], [ContentProperty] -> no PositionalParameters, Items.
  41. // - NullExtension: no member.
  42. // - MyExtension: [ConstructorArgument] -> only ordinal members...hmm?
  43. namespace MonoTests.System.Xaml
  44. {
  45. public partial class XamlReaderTestBase
  46. {
  47. protected void Read_String (XamlReader r)
  48. {
  49. Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
  50. Assert.IsNull (r.Member, "#2");
  51. Assert.IsNull (r.Namespace, "#3");
  52. Assert.IsNull (r.Member, "#4");
  53. Assert.IsNull (r.Type, "#5");
  54. Assert.IsNull (r.Value, "#6");
  55. Assert.IsTrue (r.Read (), "#11");
  56. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  57. Assert.IsNotNull (r.Namespace, "#13");
  58. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  59. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  60. Assert.IsTrue (r.Read (), "#21");
  61. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  62. Assert.IsNotNull (r.Type, "#23");
  63. Assert.AreEqual (new XamlType (typeof (string), r.SchemaContext), r.Type, "#23-2");
  64. Assert.IsNull (r.Namespace, "#25");
  65. if (r is XamlXmlReader)
  66. ReadBase (r);
  67. Assert.IsTrue (r.Read (), "#31");
  68. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  69. Assert.IsNotNull (r.Member, "#33");
  70. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#33-2");
  71. Assert.IsNull (r.Type, "#34");
  72. Assert.IsTrue (r.Read (), "#41");
  73. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  74. Assert.AreEqual ("foo", r.Value, "#43");
  75. Assert.IsNull (r.Member, "#44");
  76. Assert.IsTrue (r.Read (), "#51");
  77. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  78. Assert.IsNull (r.Type, "#53");
  79. Assert.IsNull (r.Member, "#54");
  80. Assert.IsTrue (r.Read (), "#61");
  81. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  82. Assert.IsNull (r.Type, "#63");
  83. Assert.IsFalse (r.Read (), "#71");
  84. Assert.IsTrue (r.IsEof, "#72");
  85. }
  86. protected void WriteNullMemberAsObject (XamlReader r, Action validateNullInstance)
  87. {
  88. Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
  89. Assert.IsTrue (r.Read (), "#6");
  90. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
  91. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#7-2");
  92. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#7-3");
  93. Assert.IsTrue (r.Read (), "#11");
  94. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  95. Assert.AreEqual ("x", r.Namespace.Prefix, "#12-2");
  96. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#12-3");
  97. Assert.IsTrue (r.Read (), "#16");
  98. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#17");
  99. var xt = new XamlType (typeof (TestClass4), r.SchemaContext);
  100. Assert.AreEqual (xt, r.Type, "#17-2");
  101. // Assert.IsTrue (r.Instance is TestClass4, "#17-3");
  102. Assert.AreEqual (2, xt.GetAllMembers ().Count, "#17-4");
  103. if (r is XamlXmlReader)
  104. ReadBase (r);
  105. Assert.IsTrue (r.Read (), "#21");
  106. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
  107. Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#22-2");
  108. Assert.IsTrue (r.Read (), "#26");
  109. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#27");
  110. Assert.AreEqual (XamlLanguage.Null, r.Type, "#27-2");
  111. if (validateNullInstance != null)
  112. validateNullInstance ();
  113. Assert.IsTrue (r.Read (), "#31");
  114. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#32");
  115. Assert.IsTrue (r.Read (), "#36");
  116. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#37");
  117. Assert.IsTrue (r.Read (), "#41");
  118. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#42");
  119. Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#42-2");
  120. Assert.IsTrue (r.Read (), "#43");
  121. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#43-2");
  122. Assert.AreEqual (XamlLanguage.Null, r.Type, "#43-3");
  123. if (validateNullInstance != null)
  124. validateNullInstance ();
  125. Assert.IsTrue (r.Read (), "#44");
  126. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#44-2");
  127. Assert.IsTrue (r.Read (), "#46");
  128. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#47");
  129. Assert.IsTrue (r.Read (), "#51");
  130. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#52");
  131. Assert.IsFalse (r.Read (), "#56");
  132. Assert.IsTrue (r.IsEof, "#57");
  133. }
  134. protected void StaticMember (XamlReader r)
  135. {
  136. Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
  137. Assert.IsTrue (r.Read (), "#6");
  138. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
  139. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#7-2");
  140. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#7-3");
  141. Assert.IsTrue (r.Read (), "#11");
  142. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  143. Assert.AreEqual ("x", r.Namespace.Prefix, "#12-2");
  144. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#12-3");
  145. Assert.IsTrue (r.Read (), "#16");
  146. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#17");
  147. var xt = new XamlType (typeof (TestClass5), r.SchemaContext);
  148. Assert.AreEqual (xt, r.Type, "#17-2");
  149. // Assert.IsTrue (r.Instance is TestClass5, "#17-3");
  150. Assert.AreEqual (2, xt.GetAllMembers ().Count, "#17-4");
  151. Assert.IsTrue (xt.GetAllMembers ().Any (xm => xm.Name == "Bar"), "#17-5");
  152. Assert.IsTrue (xt.GetAllMembers ().Any (xm => xm.Name == "Baz"), "#17-6");
  153. if (r is XamlXmlReader)
  154. ReadBase (r);
  155. Assert.IsTrue (r.Read (), "#21");
  156. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
  157. Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#22-2");
  158. Assert.IsTrue (r.Read (), "#26");
  159. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#27");
  160. Assert.AreEqual (XamlLanguage.Null, r.Type, "#27-2");
  161. // Assert.IsNull (r.Instance, "#27-3");
  162. Assert.IsTrue (r.Read (), "#31");
  163. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#32");
  164. Assert.IsTrue (r.Read (), "#36");
  165. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#37");
  166. // static Foo is not included in GetAllXembers() return value.
  167. // ReadOnly is not included in GetAllMembers() return value neither.
  168. // nonpublic Baz is a member, but does not appear in the reader.
  169. Assert.IsTrue (r.Read (), "#51");
  170. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#52");
  171. Assert.IsFalse (r.Read (), "#56");
  172. Assert.IsTrue (r.IsEof, "#57");
  173. }
  174. protected void Skip (XamlReader r)
  175. {
  176. r.Skip ();
  177. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  178. r.Skip ();
  179. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2");
  180. r.Skip ();
  181. Assert.IsTrue (r.IsEof, "#3");
  182. }
  183. protected void Skip2 (XamlReader r)
  184. {
  185. r.Read (); // NamespaceDeclaration
  186. r.Read (); // Type
  187. if (r is XamlXmlReader)
  188. ReadBase (r);
  189. r.Read (); // Member (Initialization)
  190. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#1");
  191. r.Skip ();
  192. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#2");
  193. r.Skip ();
  194. Assert.IsTrue (r.IsEof, "#3");
  195. }
  196. protected void Read_XmlDocument (XamlReader r)
  197. {
  198. for (int i = 0; i < 3; i++) {
  199. r.Read ();
  200. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1-" + i);
  201. }
  202. r.Read ();
  203. Assert.AreEqual (new XamlType (typeof (XmlDocument), r.SchemaContext), r.Type, "#2");
  204. r.Read ();
  205. var l = new List<XamlMember> ();
  206. while (r.NodeType == XamlNodeType.StartMember) {
  207. // It depends on XmlDocument's implenentation details. It fails on mono only because XmlDocument.SchemaInfo overrides both getter and setter.
  208. //for (int i = 0; i < 5; i++) {
  209. // Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-" + i);
  210. l.Add (r.Member);
  211. r.Skip ();
  212. }
  213. Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Value"), "#4-1");
  214. Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "InnerXml"), "#4-2");
  215. Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Prefix"), "#4-3");
  216. Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "PreserveWhitespace"), "#4-4");
  217. Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Schemas"), "#4-5");
  218. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#5");
  219. Assert.IsFalse (r.Read (), "#6");
  220. }
  221. protected void Read_NonPrimitive (XamlReader r)
  222. {
  223. Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
  224. Assert.IsTrue (r.Read (), "#6");
  225. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
  226. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#7-2");
  227. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#7-3");
  228. Assert.IsTrue (r.Read (), "#11");
  229. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  230. Assert.AreEqual ("x", r.Namespace.Prefix, "#12-2");
  231. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#12-3");
  232. Assert.IsTrue (r.Read (), "#16");
  233. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#17");
  234. var xt = new XamlType (typeof (TestClass3), r.SchemaContext);
  235. Assert.AreEqual (xt, r.Type, "#17-2");
  236. // Assert.IsTrue (r.Instance is TestClass3, "#17-3");
  237. if (r is XamlXmlReader)
  238. ReadBase (r);
  239. Assert.IsTrue (r.Read (), "#21");
  240. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
  241. Assert.AreEqual (xt.GetMember ("Nested"), r.Member, "#22-2");
  242. Assert.IsTrue (r.Read (), "#26");
  243. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#27");
  244. Assert.AreEqual (XamlLanguage.Null, r.Type, "#27-2");
  245. // Assert.IsNull (r.Instance, "#27-3");
  246. Assert.IsTrue (r.Read (), "#31");
  247. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#32");
  248. Assert.IsTrue (r.Read (), "#36");
  249. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#37");
  250. Assert.IsTrue (r.Read (), "#41");
  251. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#42");
  252. Assert.IsFalse (r.Read (), "#46");
  253. Assert.IsTrue (r.IsEof, "#47");
  254. }
  255. protected void Read_TypeOrTypeExtension (XamlReader r, Action validateInstance, XamlMember ctorArgMember)
  256. {
  257. Assert.IsTrue (r.Read (), "#11");
  258. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  259. Assert.IsNotNull (r.Namespace, "#13");
  260. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  261. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  262. // Assert.IsNull (r.Instance, "#14");
  263. Assert.IsTrue (r.Read (), "#21");
  264. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  265. Assert.IsNotNull (r.Type, "#23");
  266. Assert.AreEqual (XamlLanguage.Type, r.Type, "#23-2");
  267. Assert.IsNull (r.Namespace, "#25");
  268. if (validateInstance != null)
  269. validateInstance ();
  270. if (r is XamlXmlReader)
  271. ReadBase (r);
  272. Assert.IsTrue (r.Read (), "#31");
  273. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  274. Assert.IsNotNull (r.Member, "#33");
  275. Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
  276. Assert.IsNull (r.Type, "#34");
  277. // Assert.IsNull (r.Instance, "#35");
  278. Assert.IsTrue (r.Read (), "#41");
  279. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  280. Assert.IsNotNull (r.Value, "#43");
  281. Assert.AreEqual ("x:Int32", r.Value, "#43-2");
  282. Assert.IsNull (r.Member, "#44");
  283. // Assert.IsNull (r.Instance, "#45");
  284. Assert.IsTrue (r.Read (), "#51");
  285. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  286. Assert.IsNull (r.Type, "#53");
  287. Assert.IsNull (r.Member, "#54");
  288. // Assert.IsNull (r.Instance, "#55");
  289. Assert.IsTrue (r.Read (), "#61");
  290. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  291. Assert.IsNull (r.Type, "#63");
  292. Assert.IsFalse (r.Read (), "#71");
  293. Assert.IsTrue (r.IsEof, "#72");
  294. }
  295. protected void Read_TypeOrTypeExtension2 (XamlReader r, Action validateInstance, XamlMember ctorArgMember)
  296. {
  297. Assert.IsTrue (r.Read (), "#11");
  298. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  299. var defns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  300. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#13-2");
  301. Assert.AreEqual (defns, r.Namespace.Namespace, "#13-3:" + r.Namespace.Prefix);
  302. Assert.IsTrue (r.Read (), "#16");
  303. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#17");
  304. Assert.IsNotNull (r.Namespace, "#18");
  305. Assert.AreEqual ("x", r.Namespace.Prefix, "#18-2");
  306. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#18-3:" + r.Namespace.Prefix);
  307. Assert.IsTrue (r.Read (), "#21");
  308. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  309. Assert.AreEqual (new XamlType (typeof (TypeExtension), r.SchemaContext), r.Type, "#23-2");
  310. if (validateInstance != null)
  311. validateInstance ();
  312. if (r is XamlXmlReader)
  313. ReadBase (r);
  314. Assert.IsTrue (r.Read (), "#31");
  315. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  316. Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
  317. Assert.IsTrue (r.Read (), "#41");
  318. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  319. Assert.AreEqual ("TestClass1", r.Value, "#43-2");
  320. Assert.IsTrue (r.Read (), "#51");
  321. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  322. Assert.IsTrue (r.Read (), "#61");
  323. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  324. Assert.IsFalse (r.Read (), "#71");
  325. Assert.IsTrue (r.IsEof, "#72");
  326. }
  327. protected void Read_Reference (XamlReader r)
  328. {
  329. Assert.IsTrue (r.Read (), "#11");
  330. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  331. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  332. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  333. Assert.IsTrue (r.Read (), "#21");
  334. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  335. var xt = new XamlType (typeof (Reference), r.SchemaContext);
  336. Assert.AreEqual (xt, r.Type, "#23-2");
  337. // Assert.IsTrue (r.Instance is Reference, "#26");
  338. Assert.IsNotNull (XamlLanguage.Type.SchemaContext, "#23-3");
  339. Assert.IsNotNull (r.SchemaContext, "#23-4");
  340. Assert.AreNotEqual (XamlLanguage.Type.SchemaContext, r.SchemaContext, "#23-5");
  341. Assert.AreNotEqual (XamlLanguage.Reference.SchemaContext, xt.SchemaContext, "#23-6");
  342. Assert.AreEqual (XamlLanguage.Reference, xt, "#23-7");
  343. if (r is XamlXmlReader)
  344. ReadBase (r);
  345. Assert.IsTrue (r.Read (), "#31");
  346. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  347. // unlike TypeExtension there is no PositionalParameters.
  348. Assert.AreEqual (xt.GetMember ("Name"), r.Member, "#33-2");
  349. // It is a ContentProperty (besides [ConstructorArgument])
  350. Assert.IsTrue (r.Read (), "#41");
  351. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  352. Assert.AreEqual ("FooBar", r.Value, "#43-2");
  353. Assert.IsTrue (r.Read (), "#51");
  354. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  355. Assert.IsTrue (r.Read (), "#61");
  356. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  357. Assert.IsFalse (r.Read (), "#71");
  358. Assert.IsTrue (r.IsEof, "#72");
  359. }
  360. protected void Read_NullOrNullExtension (XamlReader r, Action validateInstance)
  361. {
  362. Assert.IsTrue (r.Read (), "#11");
  363. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  364. Assert.IsNotNull (r.Namespace, "#13");
  365. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  366. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  367. // Assert.IsNull (r.Instance, "#14");
  368. Assert.IsTrue (r.Read (), "#21");
  369. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  370. Assert.AreEqual (new XamlType (typeof (NullExtension), r.SchemaContext), r.Type, "#23-2");
  371. if (validateInstance != null)
  372. validateInstance ();
  373. if (r is XamlXmlReader)
  374. ReadBase (r);
  375. Assert.IsTrue (r.Read (), "#61");
  376. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  377. Assert.IsFalse (r.Read (), "#71");
  378. Assert.IsTrue (r.IsEof, "#72");
  379. }
  380. // almost identical to TypeExtension (only type/instance difference)
  381. protected void Read_StaticExtension (XamlReader r, XamlMember ctorArgMember)
  382. {
  383. Assert.IsTrue (r.Read (), "#11");
  384. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  385. Assert.IsNotNull (r.Namespace, "#13");
  386. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  387. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  388. // Assert.IsNull (r.Instance, "#14");
  389. Assert.IsTrue (r.Read (), "#21");
  390. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  391. Assert.AreEqual (new XamlType (typeof (StaticExtension), r.SchemaContext), r.Type, "#23-2");
  392. // Assert.IsTrue (r.Instance is StaticExtension, "#26");
  393. if (r is XamlXmlReader)
  394. ReadBase (r);
  395. Assert.IsTrue (r.Read (), "#31");
  396. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  397. Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
  398. Assert.IsTrue (r.Read (), "#41");
  399. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  400. Assert.AreEqual ("FooBar", r.Value, "#43-2");
  401. Assert.IsTrue (r.Read (), "#51");
  402. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  403. Assert.IsTrue (r.Read (), "#61");
  404. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  405. Assert.IsFalse (r.Read (), "#71");
  406. Assert.IsTrue (r.IsEof, "#72");
  407. }
  408. protected void Read_ListInt32 (XamlReader r, Action validateInstance, List<int> obj)
  409. {
  410. Assert.IsTrue (r.Read (), "ns#1-1");
  411. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  412. var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
  413. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
  414. Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
  415. Assert.IsTrue (r.Read (), "#11");
  416. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  417. Assert.IsNotNull (r.Namespace, "#13");
  418. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  419. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  420. Assert.IsTrue (r.Read (), "#21");
  421. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  422. var xt = new XamlType (typeof (List<int>), r.SchemaContext);
  423. Assert.AreEqual (xt, r.Type, "#23");
  424. Assert.IsTrue (xt.IsCollection, "#27");
  425. if (validateInstance != null)
  426. validateInstance ();
  427. // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
  428. if (r is XamlXmlReader)
  429. ReadBase (r);
  430. Assert.IsTrue (r.Read (), "#31");
  431. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  432. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
  433. Assert.IsTrue (r.Read (), "#41");
  434. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  435. // The value is implementation details, not testable.
  436. //Assert.AreEqual ("3", r.Value, "#43");
  437. Assert.IsTrue (r.Read (), "#51");
  438. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  439. if (obj.Count > 0) { // only when items exist.
  440. Assert.IsTrue (r.Read (), "#72");
  441. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  442. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  443. string [] values = {"5", "-3", "2147483647", "0"};
  444. for (int i = 0; i < 4; i++) {
  445. Assert.IsTrue (r.Read (), i + "#73");
  446. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  447. Assert.IsTrue (r.Read (), i + "#74");
  448. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  449. Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
  450. Assert.IsTrue (r.Read (), i + "#75");
  451. Assert.IsNotNull (r.Value, i + "#75-2");
  452. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  453. Assert.IsTrue (r.Read (), i + "#74");
  454. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  455. Assert.IsTrue (r.Read (), i + "#75");
  456. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
  457. }
  458. Assert.IsTrue (r.Read (), "#81");
  459. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  460. } // end of "if count > 0".
  461. Assert.IsTrue (r.Read (), "#87");
  462. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
  463. Assert.IsFalse (r.Read (), "#89");
  464. }
  465. protected void Read_ListType (XamlReader r, bool isObjectReader)
  466. {
  467. Assert.IsTrue (r.Read (), "ns#1-1");
  468. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  469. var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
  470. var defns2 = "clr-namespace:System;assembly=mscorlib";
  471. var defns3 = "clr-namespace:System.Xaml;assembly=System.Xaml";
  472. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
  473. Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
  474. Assert.IsTrue (r.Read (), "ns#2-1");
  475. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  476. Assert.IsNotNull (r.Namespace, "ns#2-3");
  477. Assert.AreEqual ("s", r.Namespace.Prefix, "ns#2-3-2");
  478. Assert.AreEqual (defns2, r.Namespace.Namespace, "ns#2-3-3");
  479. Assert.IsTrue (r.Read (), "ns#3-1");
  480. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
  481. Assert.IsNotNull (r.Namespace, "ns#3-3");
  482. Assert.AreEqual ("sx", r.Namespace.Prefix, "ns#3-3-2");
  483. Assert.AreEqual (defns3, r.Namespace.Namespace, "ns#3-3-3");
  484. Assert.IsTrue (r.Read (), "#11");
  485. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  486. Assert.IsNotNull (r.Namespace, "#13");
  487. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  488. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  489. Assert.IsTrue (r.Read (), "#21");
  490. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  491. var xt = new XamlType (typeof (List<Type>), r.SchemaContext);
  492. Assert.AreEqual (xt, r.Type, "#23");
  493. Assert.IsTrue (xt.IsCollection, "#27");
  494. if (r is XamlXmlReader)
  495. ReadBase (r);
  496. Assert.IsTrue (r.Read (), "#31");
  497. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  498. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
  499. Assert.IsTrue (r.Read (), "#41");
  500. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  501. Assert.AreEqual ("2", r.Value, "#43");
  502. Assert.IsTrue (r.Read (), "#51");
  503. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  504. Assert.IsTrue (r.Read (), "#72");
  505. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  506. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  507. string [] values = {"x:Int32", "Dictionary(s:Type, sx:XamlType)"};
  508. for (int i = 0; i < 2; i++) {
  509. Assert.IsTrue (r.Read (), i + "#73");
  510. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  511. Assert.IsTrue (r.Read (), i + "#74");
  512. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  513. // Here XamlObjectReader and XamlXmlReader significantly differs. (Lucky we can make this test conditional so simply)
  514. if (isObjectReader)
  515. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, i + "#74-3");
  516. else
  517. Assert.AreEqual (XamlLanguage.Type.GetMember ("Type"), r.Member, i + "#74-3");
  518. Assert.IsTrue (r.Read (), i + "#75");
  519. Assert.IsNotNull (r.Value, i + "#75-2");
  520. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  521. Assert.IsTrue (r.Read (), i + "#74");
  522. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  523. Assert.IsTrue (r.Read (), i + "#75");
  524. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
  525. }
  526. Assert.IsTrue (r.Read (), "#81");
  527. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  528. Assert.IsTrue (r.Read (), "#87");
  529. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
  530. Assert.IsFalse (r.Read (), "#89");
  531. }
  532. protected void Read_ListArray (XamlReader r)
  533. {
  534. Assert.IsTrue (r.Read (), "ns#1-1");
  535. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  536. var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
  537. var defns2 = "clr-namespace:System;assembly=mscorlib";
  538. var defns3 = "clr-namespace:System.Xaml;assembly=System.Xaml";
  539. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
  540. Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
  541. Assert.IsTrue (r.Read (), "ns#2-1");
  542. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  543. Assert.IsNotNull (r.Namespace, "ns#2-3");
  544. Assert.AreEqual ("s", r.Namespace.Prefix, "ns#2-3-2");
  545. Assert.AreEqual (defns2, r.Namespace.Namespace, "ns#2-3-3");
  546. Assert.IsTrue (r.Read (), "#11");
  547. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  548. Assert.IsNotNull (r.Namespace, "#13");
  549. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  550. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  551. Assert.IsTrue (r.Read (), "#21");
  552. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  553. var xt = new XamlType (typeof (List<Array>), r.SchemaContext);
  554. Assert.AreEqual (xt, r.Type, "#23");
  555. Assert.IsTrue (xt.IsCollection, "#27");
  556. if (r is XamlXmlReader)
  557. ReadBase (r);
  558. Assert.IsTrue (r.Read (), "#31");
  559. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  560. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
  561. Assert.IsTrue (r.Read (), "#41");
  562. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  563. Assert.AreEqual ("2", r.Value, "#43");
  564. Assert.IsTrue (r.Read (), "#51");
  565. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  566. Assert.IsTrue (r.Read (), "#72");
  567. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  568. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  569. string [] values = {"x:Int32", "x:String"};
  570. for (int i = 0; i < 2; i++) {
  571. Assert.IsTrue (r.Read (), i + "#73");
  572. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  573. Assert.AreEqual (XamlLanguage.Array, r.Type, i + "#73-3");
  574. Assert.IsTrue (r.Read (), i + "#74");
  575. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  576. Assert.AreEqual (XamlLanguage.Array.GetMember ("Type"), r.Member, i + "#74-3");
  577. Assert.IsTrue (r.Read (), i + "#75");
  578. Assert.IsNotNull (r.Value, i + "#75-2");
  579. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  580. Assert.IsTrue (r.Read (), i + "#74");
  581. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  582. Assert.IsTrue (r.Read (), i + "#75");
  583. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#75-2");
  584. Assert.AreEqual (XamlLanguage.Array.GetMember ("Items"), r.Member, i + "#75-3");
  585. Assert.IsTrue (r.Read (), i + "#75-4");
  586. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, i + "#75-5");
  587. Assert.IsTrue (r.Read (), i + "#75-7");
  588. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#75-8");
  589. Assert.AreEqual (XamlLanguage.Items, r.Member, i + "#75-9");
  590. for (int j = 0; j < 3; j++) {
  591. Assert.IsTrue (r.Read (), i + "#76-" + j);
  592. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#76-2"+ "-" + j);
  593. Assert.IsTrue (r.Read (), i + "#76-3"+ "-" + j);
  594. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#76-4"+ "-" + j);
  595. Assert.IsTrue (r.Read (), i + "#76-5"+ "-" + j);
  596. Assert.AreEqual (XamlNodeType.Value, r.NodeType, i + "#76-6"+ "-" + j);
  597. Assert.IsTrue (r.Read (), i + "#76-7"+ "-" + j);
  598. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#76-8"+ "-" + j);
  599. Assert.IsTrue (r.Read (), i + "#76-9"+ "-" + j);
  600. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#76-10"+ "-" + j);
  601. }
  602. Assert.IsTrue (r.Read (), i + "#77");
  603. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#77-2");
  604. Assert.IsTrue (r.Read (), i + "#78");
  605. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#78-2");
  606. Assert.IsTrue (r.Read (), i + "#79");
  607. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#79-2");
  608. Assert.IsTrue (r.Read (), i + "#80");
  609. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#80-2");
  610. }
  611. Assert.IsTrue (r.Read (), "#81");
  612. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  613. Assert.IsTrue (r.Read (), "#87");
  614. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
  615. Assert.IsFalse (r.Read (), "#89");
  616. }
  617. protected void Read_ArrayList (XamlReader r)
  618. {
  619. Assert.IsTrue (r.Read (), "ns#1-1");
  620. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  621. var defns = "clr-namespace:System.Collections;assembly=mscorlib";
  622. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
  623. Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
  624. Assert.IsTrue (r.Read (), "#11");
  625. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  626. Assert.IsNotNull (r.Namespace, "#13");
  627. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  628. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  629. Assert.IsTrue (r.Read (), "#21");
  630. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  631. var xt = new XamlType (typeof (ArrayList), r.SchemaContext);
  632. Assert.AreEqual (xt, r.Type, "#23");
  633. // Assert.AreEqual (obj, r.Instance, "#26");
  634. Assert.IsTrue (xt.IsCollection, "#27");
  635. if (r is XamlXmlReader)
  636. ReadBase (r);
  637. // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
  638. Assert.IsTrue (r.Read (), "#31");
  639. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  640. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
  641. Assert.IsTrue (r.Read (), "#41");
  642. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  643. // The value is implementation details, not testable.
  644. //Assert.AreEqual ("3", r.Value, "#43");
  645. Assert.IsTrue (r.Read (), "#51");
  646. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  647. Assert.IsTrue (r.Read (), "#72");
  648. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  649. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  650. string [] values = {"5", "-3", "0"};
  651. for (int i = 0; i < 3; i++) {
  652. Assert.IsTrue (r.Read (), i + "#73");
  653. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  654. Assert.IsTrue (r.Read (), i + "#74");
  655. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  656. Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
  657. Assert.IsTrue (r.Read (), i + "#75");
  658. Assert.IsNotNull (r.Value, i + "#75-2");
  659. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  660. Assert.IsTrue (r.Read (), i + "#74");
  661. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  662. Assert.IsTrue (r.Read (), i + "#75");
  663. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
  664. }
  665. Assert.IsTrue (r.Read (), "#81");
  666. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  667. Assert.IsTrue (r.Read (), "#87");
  668. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
  669. Assert.IsFalse (r.Read (), "#89");
  670. }
  671. protected void Read_ArrayOrArrayExtensionOrMyArrayExtension (XamlReader r, Action validateInstance, Type extType)
  672. {
  673. if (extType == typeof (MyArrayExtension)) {
  674. Assert.IsTrue (r.Read (), "#1");
  675. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#2");
  676. Assert.IsNotNull (r.Namespace, "#3");
  677. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#3-2");
  678. }
  679. Assert.IsTrue (r.Read (), "#11");
  680. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  681. Assert.IsNotNull (r.Namespace, "#13");
  682. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  683. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  684. Assert.IsTrue (r.Read (), "#21");
  685. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  686. var xt = new XamlType (extType, r.SchemaContext);
  687. Assert.AreEqual (xt, r.Type, "#23");
  688. if (validateInstance != null)
  689. validateInstance ();
  690. if (r is XamlXmlReader)
  691. ReadBase (r);
  692. // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
  693. Assert.IsTrue (r.Read (), "#31");
  694. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  695. Assert.AreEqual (xt.GetMember ("Type"), r.Member, "#33");
  696. Assert.IsTrue (r.Read (), "#41");
  697. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  698. Assert.AreEqual ("x:Int32", r.Value, "#43");
  699. Assert.IsTrue (r.Read (), "#51");
  700. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  701. Assert.IsTrue (r.Read (), "#61");
  702. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
  703. Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
  704. Assert.IsTrue (r.Read (), "#71");
  705. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "#71-2");
  706. Assert.IsNull (r.Type, "#71-3");
  707. Assert.IsNull (r.Member, "#71-4");
  708. Assert.IsNull (r.Value, "#71-5");
  709. Assert.IsTrue (r.Read (), "#72");
  710. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  711. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  712. string [] values = {"5", "-3", "0"};
  713. for (int i = 0; i < 3; i++) {
  714. Assert.IsTrue (r.Read (), i + "#73");
  715. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  716. Assert.IsTrue (r.Read (), i + "#74");
  717. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  718. Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
  719. Assert.IsTrue (r.Read (), i + "#75");
  720. Assert.IsNotNull (r.Value, i + "#75-2");
  721. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  722. Assert.IsTrue (r.Read (), i + "#74");
  723. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  724. Assert.IsTrue (r.Read (), i + "#75");
  725. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
  726. }
  727. Assert.IsTrue (r.Read (), "#81");
  728. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  729. Assert.IsTrue (r.Read (), "#83");
  730. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#84"); // GetObject
  731. Assert.IsTrue (r.Read (), "#85");
  732. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#86"); // ArrayExtension.Items
  733. Assert.IsTrue (r.Read (), "#87");
  734. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ArrayExtension
  735. Assert.IsFalse (r.Read (), "#89");
  736. }
  737. // It gives Type member, not PositionalParameters... and no Items member here.
  738. protected void Read_ArrayExtension2 (XamlReader r)
  739. {
  740. Assert.IsTrue (r.Read (), "#11");
  741. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  742. Assert.IsNotNull (r.Namespace, "#13");
  743. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  744. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  745. // Assert.IsNull (r.Instance, "#14");
  746. Assert.IsTrue (r.Read (), "#21");
  747. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  748. var xt = new XamlType (typeof (ArrayExtension), r.SchemaContext);
  749. Assert.AreEqual (xt, r.Type, "#23-2");
  750. // Assert.IsTrue (r.Instance is ArrayExtension, "#26");
  751. if (r is XamlXmlReader)
  752. ReadBase (r);
  753. Assert.IsTrue (r.Read (), "#31");
  754. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  755. Assert.AreEqual (xt.GetMember ("Type"), r.Member, "#33-2");
  756. Assert.IsTrue (r.Read (), "#41");
  757. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  758. Assert.AreEqual ("x:Int32", r.Value, "#43-2");
  759. Assert.IsTrue (r.Read (), "#51");
  760. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  761. Assert.IsTrue (r.Read (), "#61");
  762. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
  763. Assert.IsFalse (r.Read (), "#71");
  764. Assert.IsTrue (r.IsEof, "#72");
  765. }
  766. protected void Read_CustomMarkupExtension (XamlReader r)
  767. {
  768. r.Read (); // ns
  769. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  770. r.Read (); // ns
  771. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1-2");
  772. r.Read ();
  773. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
  774. Assert.IsFalse (r.IsEof, "#1");
  775. var xt = r.Type;
  776. if (r is XamlXmlReader)
  777. ReadBase (r);
  778. r.Read ();
  779. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#2-1");
  780. Assert.IsFalse (r.IsEof, "#2-2");
  781. Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#2-3");
  782. Assert.IsTrue (r.Read (), "#2-4");
  783. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#2-5");
  784. Assert.AreEqual ("v2", r.Value, "#2-6");
  785. Assert.IsTrue (r.Read (), "#2-7");
  786. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#2-8");
  787. r.Read ();
  788. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-1");
  789. Assert.IsFalse (r.IsEof, "#3-2");
  790. Assert.AreEqual (xt.GetMember ("Baz"), r.Member, "#3-3");
  791. Assert.IsTrue (r.Read (), "#3-4");
  792. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#3-5");
  793. Assert.AreEqual ("v7", r.Value, "#3-6");
  794. Assert.IsTrue (r.Read (), "#3-7");
  795. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#3-8");
  796. r.Read ();
  797. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#4-1");
  798. Assert.IsFalse (r.IsEof, "#4-2");
  799. Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#4-3");
  800. Assert.IsTrue (r.Read (), "#4-4");
  801. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#4-5");
  802. Assert.AreEqual ("x:Int32", r.Value, "#4-6");
  803. Assert.IsTrue (r.Read (), "#4-7");
  804. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#4-8");
  805. Assert.IsTrue (r.Read (), "#5");
  806. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#5-2");
  807. Assert.IsFalse (r.Read (), "#6");
  808. }
  809. protected void Read_CustomMarkupExtension2 (XamlReader r)
  810. {
  811. r.Read (); // ns
  812. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  813. r.Read (); // note that there wasn't another NamespaceDeclaration.
  814. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
  815. var xt = r.Type;
  816. Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension2)), xt, "#2");
  817. if (r is XamlXmlReader)
  818. ReadBase (r);
  819. Assert.IsTrue (r.Read (), "#3");
  820. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
  821. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
  822. Assert.IsTrue (r.Read (), "#5");
  823. Assert.AreEqual ("MonoTests.System.Xaml.MyExtension2", r.Value, "#6");
  824. Assert.IsTrue (r.Read (), "#7"); // EndMember
  825. Assert.IsTrue (r.Read (), "#8"); // EndObject
  826. Assert.IsFalse (r.Read (), "#9");
  827. }
  828. protected void Read_CustomMarkupExtension3 (XamlReader r)
  829. {
  830. r.Read (); // ns
  831. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  832. r.Read (); // note that there wasn't another NamespaceDeclaration.
  833. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
  834. var xt = r.Type;
  835. Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension3)), xt, "#2");
  836. if (r is XamlXmlReader)
  837. ReadBase (r);
  838. Assert.IsTrue (r.Read (), "#3");
  839. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
  840. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
  841. Assert.IsTrue (r.Read (), "#5");
  842. Assert.AreEqual ("MonoTests.System.Xaml.MyExtension3", r.Value, "#6");
  843. Assert.IsTrue (r.Read (), "#7"); // EndMember
  844. Assert.IsTrue (r.Read (), "#8"); // EndObject
  845. Assert.IsFalse (r.Read (), "#9");
  846. }
  847. protected void Read_CustomMarkupExtension4 (XamlReader r)
  848. {
  849. r.Read (); // ns
  850. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  851. r.Read (); // note that there wasn't another NamespaceDeclaration.
  852. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
  853. var xt = r.Type;
  854. Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension4)), xt, "#2");
  855. if (r is XamlXmlReader)
  856. ReadBase (r);
  857. Assert.IsTrue (r.Read (), "#3");
  858. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
  859. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
  860. Assert.IsTrue (r.Read (), "#5");
  861. Assert.AreEqual ("MonoTests.System.Xaml.MyExtension4", r.Value, "#6");
  862. Assert.IsTrue (r.Read (), "#7"); // EndMember
  863. Assert.IsTrue (r.Read (), "#8"); // EndObject
  864. Assert.IsFalse (r.Read (), "#9");
  865. }
  866. protected void Read_CustomMarkupExtension5 (XamlReader r)
  867. {
  868. r.Read (); // ns
  869. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  870. r.Read (); // note that there wasn't another NamespaceDeclaration.
  871. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
  872. var xt = r.Type;
  873. Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension5)), xt, "#2");
  874. if (r is XamlXmlReader)
  875. ReadBase (r);
  876. Assert.IsTrue (r.Read (), "#3");
  877. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
  878. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#4");
  879. Assert.IsTrue (r.Read (), "#5");
  880. Assert.AreEqual ("foo", r.Value, "#6");
  881. Assert.IsTrue (r.Read (), "#7");
  882. Assert.AreEqual ("bar", r.Value, "#8");
  883. Assert.IsTrue (r.Read (), "#9");
  884. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#10");
  885. Assert.IsTrue (r.Read (), "#11");
  886. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#12");
  887. Assert.IsFalse (r.Read (), "#13");
  888. }
  889. protected void Read_CustomMarkupExtension6 (XamlReader r)
  890. {
  891. r.Read (); // ns
  892. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
  893. r.Read (); // note that there wasn't another NamespaceDeclaration.
  894. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
  895. var xt = r.Type;
  896. Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension6)), xt, "#2");
  897. if (r is XamlXmlReader)
  898. ReadBase (r);
  899. Assert.IsTrue (r.Read (), "#3");
  900. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
  901. Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#4"); // this is the difference between MyExtension5 and MyExtension6: it outputs constructor arguments as normal members
  902. Assert.IsTrue (r.Read (), "#5");
  903. Assert.AreEqual ("foo", r.Value, "#6");
  904. Assert.IsTrue (r.Read (), "#7"); // EndMember
  905. Assert.IsTrue (r.Read (), "#8"); // EndObject
  906. Assert.IsFalse (r.Read (), "#9");
  907. }
  908. protected void Read_ArgumentAttributed (XamlReader r, object obj)
  909. {
  910. Read_CommonClrType (r, obj, new KeyValuePair<string,string> ("x", XamlLanguage.Xaml2006Namespace));
  911. if (r is XamlXmlReader)
  912. ReadBase (r);
  913. var args = Read_AttributedArguments_String (r, new string [] {"arg1", "arg2"});
  914. Assert.AreEqual ("foo", args [0], "#1");
  915. Assert.AreEqual ("bar", args [1], "#2");
  916. }
  917. protected void Read_Dictionary (XamlReader r)
  918. {
  919. Assert.IsTrue (r.Read (), "ns#1-1");
  920. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  921. Assert.IsNotNull (r.Namespace, "ns#1-3");
  922. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
  923. Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "ns#1-5");
  924. Assert.IsTrue (r.Read (), "ns#2-1");
  925. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  926. Assert.IsNotNull (r.Namespace, "ns#2-3");
  927. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  928. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  929. Assert.IsTrue (r.Read (), "so#1-1");
  930. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  931. var xt = new XamlType (typeof (Dictionary<string,object>), r.SchemaContext);
  932. Assert.AreEqual (xt, r.Type, "so#1-3");
  933. // Assert.AreEqual (obj, r.Instance, "so#1-4");
  934. if (r is XamlXmlReader)
  935. ReadBase (r);
  936. Assert.IsTrue (r.Read (), "smitems#1");
  937. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
  938. Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
  939. for (int i = 0; i < 2; i++) {
  940. // start of an item
  941. Assert.IsTrue (r.Read (), "soi#1-1." + i);
  942. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#1-2." + i);
  943. var xt2 = new XamlType (typeof (double), r.SchemaContext);
  944. Assert.AreEqual (xt2, r.Type, "soi#1-3." + i);
  945. Assert.IsTrue (r.Read (), "smi#1-1." + i);
  946. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#1-2." + i);
  947. Assert.AreEqual (XamlLanguage.Key, r.Member, "smi#1-3." + i);
  948. Assert.IsTrue (r.Read (), "svi#1-1." + i);
  949. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#1-2." + i);
  950. Assert.AreEqual (i == 0 ? "Foo" : "Bar", r.Value, "svi#1-3." + i);
  951. Assert.IsTrue (r.Read (), "emi#1-1." + i);
  952. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#1-2." + i);
  953. Assert.IsTrue (r.Read (), "smi#2-1." + i);
  954. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#2-2." + i);
  955. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "smi#2-3." + i);
  956. Assert.IsTrue (r.Read (), "svi#2-1." + i);
  957. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#2-2." + i);
  958. Assert.AreEqual (i == 0 ? "5" : "-6.5", r.Value, "svi#2-3." + i); // converted to string(!)
  959. Assert.IsTrue (r.Read (), "emi#2-1." + i);
  960. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#2-2." + i);
  961. Assert.IsTrue (r.Read (), "eoi#1-1." + i);
  962. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#1-2." + i);
  963. // end of an item
  964. }
  965. Assert.IsTrue (r.Read (), "emitems#1");
  966. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emitems#2"); // XamlLanguage.Items
  967. Assert.IsTrue (r.Read (), "eo#1-1");
  968. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2"); // Dictionary
  969. Assert.IsFalse (r.Read (), "end");
  970. }
  971. protected void Read_Dictionary2 (XamlReader r, XamlMember ctorArgMember)
  972. {
  973. Assert.IsTrue (r.Read (), "ns#1-1");
  974. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  975. Assert.IsNotNull (r.Namespace, "ns#1-3");
  976. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
  977. Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "ns#1-5");
  978. Assert.IsTrue (r.Read (), "ns#2-1");
  979. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  980. Assert.IsNotNull (r.Namespace, "ns#2-3");
  981. Assert.AreEqual ("s", r.Namespace.Prefix, "ns#2-4");
  982. Assert.AreEqual ("clr-namespace:System;assembly=mscorlib", r.Namespace.Namespace, "ns#2-5");
  983. Assert.IsTrue (r.Read (), "ns#3-1");
  984. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
  985. Assert.IsNotNull (r.Namespace, "ns#3-3");
  986. Assert.AreEqual ("sx", r.Namespace.Prefix, "ns#3-4");
  987. Assert.AreEqual ("clr-namespace:System.Xaml;assembly=System.Xaml", r.Namespace.Namespace, "ns#3-5");
  988. Assert.IsTrue (r.Read (), "ns#4-1");
  989. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#4-2");
  990. Assert.IsNotNull (r.Namespace, "ns#4-3");
  991. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#4-4");
  992. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#4-5");
  993. Assert.IsTrue (r.Read (), "so#1-1");
  994. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  995. var xt = new XamlType (typeof (Dictionary<string,Type>), r.SchemaContext);
  996. Assert.AreEqual (xt, r.Type, "so#1-3");
  997. // Assert.AreEqual (obj, r.Instance, "so#1-4");
  998. if (r is XamlXmlReader)
  999. ReadBase (r);
  1000. Assert.IsTrue (r.Read (), "smitems#1");
  1001. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
  1002. Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
  1003. for (int i = 0; i < 2; i++) {
  1004. // start of an item
  1005. Assert.IsTrue (r.Read (), "soi#1-1." + i);
  1006. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#1-2." + i);
  1007. var xt2 = XamlLanguage.Type;
  1008. Assert.AreEqual (xt2, r.Type, "soi#1-3." + i);
  1009. if (r is XamlObjectReader) {
  1010. Read_Dictionary2_ConstructorArgument (r, ctorArgMember, i);
  1011. Read_Dictionary2_Key (r, i);
  1012. } else {
  1013. Read_Dictionary2_Key (r, i);
  1014. Read_Dictionary2_ConstructorArgument (r, ctorArgMember, i);
  1015. }
  1016. Assert.IsTrue (r.Read (), "eoi#1-1." + i);
  1017. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#1-2." + i);
  1018. // end of an item
  1019. }
  1020. Assert.IsTrue (r.Read (), "emitems#1");
  1021. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emitems#2"); // XamlLanguage.Items
  1022. Assert.IsTrue (r.Read (), "eo#1-1");
  1023. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2"); // Dictionary
  1024. Assert.IsFalse (r.Read (), "end");
  1025. }
  1026. void Read_Dictionary2_ConstructorArgument (XamlReader r, XamlMember ctorArgMember, int i)
  1027. {
  1028. Assert.IsTrue (r.Read (), "smi#1-1." + i);
  1029. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#1-2." + i);
  1030. Assert.AreEqual (ctorArgMember, r.Member, "smi#1-3." + i);
  1031. Assert.IsTrue (r.Read (), "svi#1-1." + i);
  1032. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#1-2." + i);
  1033. Assert.AreEqual (i == 0 ? "x:Int32" : "Dictionary(s:Type, sx:XamlType)", r.Value, "svi#1-3." + i);
  1034. Assert.IsTrue (r.Read (), "emi#1-1." + i);
  1035. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#1-2." + i);
  1036. }
  1037. void Read_Dictionary2_Key (XamlReader r, int i)
  1038. {
  1039. Assert.IsTrue (r.Read (), "smi#2-1." + i);
  1040. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#2-2." + i);
  1041. Assert.AreEqual (XamlLanguage.Key, r.Member, "smi#2-3." + i);
  1042. Assert.IsTrue (r.Read (), "svi#2-1." + i);
  1043. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#2-2." + i);
  1044. Assert.AreEqual (i == 0 ? "Foo" : "Bar", r.Value, "svi#2-3." + i);
  1045. Assert.IsTrue (r.Read (), "emi#2-1." + i);
  1046. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#2-2." + i);
  1047. }
  1048. protected void PositionalParameters1 (XamlReader r)
  1049. {
  1050. // ns1 > T:PositionalParametersClass1 > M:_PositionalParameters > foo > 5 > EM:_PositionalParameters > ET:PositionalParametersClass1
  1051. Assert.IsTrue (r.Read (), "ns#1-1");
  1052. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1053. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1054. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
  1055. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1056. Assert.IsTrue (r.Read (), "so#1-1");
  1057. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1058. var xt = new XamlType (typeof (PositionalParametersClass1), r.SchemaContext);
  1059. Assert.AreEqual (xt, r.Type, "so#1-3");
  1060. // Assert.AreEqual (obj, r.Instance, "so#1-4");
  1061. if (r is XamlXmlReader)
  1062. ReadBase (r);
  1063. Assert.IsTrue (r.Read (), "sposprm#1");
  1064. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
  1065. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sposprm#3");
  1066. Assert.IsTrue (r.Read (), "sva#1-1");
  1067. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#1-2");
  1068. Assert.AreEqual ("foo", r.Value, "sva#1-3");
  1069. Assert.IsTrue (r.Read (), "sva#2-1");
  1070. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#2-2");
  1071. Assert.AreEqual ("5", r.Value, "sva#2-3");
  1072. Assert.IsTrue (r.Read (), "eposprm#1");
  1073. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eposprm#2"); // XamlLanguage.PositionalParameters
  1074. Assert.IsTrue (r.Read (), "eo#1-1");
  1075. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1076. Assert.IsFalse (r.Read (), "end");
  1077. }
  1078. protected void PositionalParameters2 (XamlReader r)
  1079. {
  1080. // ns1 > T:PositionalParametersWrapper > M:Body > T:PositionalParametersClass1 > M:_PositionalParameters > foo > 5 > EM:_PositionalParameters > ET:PositionalParametersClass1
  1081. Assert.IsTrue (r.Read (), "ns#1-1");
  1082. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1083. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1084. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
  1085. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1086. Assert.IsTrue (r.Read (), "so#1-1");
  1087. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1088. var xt = new XamlType (typeof (PositionalParametersWrapper), r.SchemaContext);
  1089. Assert.AreEqual (xt, r.Type, "so#1-3");
  1090. // Assert.AreEqual (obj, r.Instance, "so#1-4");
  1091. if (r is XamlXmlReader)
  1092. ReadBase (r);
  1093. Assert.IsTrue (r.Read (), "sm#1-1");
  1094. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
  1095. Assert.AreEqual (xt.GetMember ("Body"), r.Member, "sm#1-3");
  1096. xt = new XamlType (typeof (PositionalParametersClass1), r.SchemaContext);
  1097. Assert.IsTrue (r.Read (), "so#2-1");
  1098. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
  1099. Assert.AreEqual (xt, r.Type, "so#2-3");
  1100. // Assert.AreEqual (obj.Body, r.Instance, "so#2-4");
  1101. Assert.IsTrue (r.Read (), "sposprm#1");
  1102. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
  1103. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sposprm#3");
  1104. Assert.IsTrue (r.Read (), "sva#1-1");
  1105. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#1-2");
  1106. Assert.AreEqual ("foo", r.Value, "sva#1-3");
  1107. Assert.IsTrue (r.Read (), "sva#2-1");
  1108. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#2-2");
  1109. Assert.AreEqual ("5", r.Value, "sva#2-3");
  1110. Assert.IsTrue (r.Read (), "eposprm#1");
  1111. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eposprm#2"); // XamlLanguage.PositionalParameters
  1112. Assert.IsTrue (r.Read (), "eo#2-1");
  1113. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  1114. Assert.IsTrue (r.Read (), "em#1-1");
  1115. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eo#1-2");
  1116. Assert.IsTrue (r.Read (), "eo#1-1");
  1117. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1118. Assert.IsFalse (r.Read (), "end");
  1119. }
  1120. protected void ComplexPositionalParameters (XamlReader r)
  1121. {
  1122. Assert.IsTrue (r.Read (), "ns#1-1");
  1123. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1124. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1125. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
  1126. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1127. Assert.IsTrue (r.Read (), "ns#2-1");
  1128. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1129. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1130. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  1131. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  1132. Assert.IsTrue (r.Read (), "so#1-1");
  1133. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1134. var xt = new XamlType (typeof (ComplexPositionalParameterWrapper), r.SchemaContext);
  1135. Assert.AreEqual (xt, r.Type, "so#1-3");
  1136. // Assert.AreEqual (obj, r.Instance, "so#1-4");
  1137. if (r is XamlXmlReader)
  1138. ReadBase (r);
  1139. Assert.IsTrue (r.Read (), "sm#1-1");
  1140. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
  1141. Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sm#1-3");
  1142. xt = r.SchemaContext.GetXamlType (typeof (ComplexPositionalParameterClass));
  1143. Assert.IsTrue (r.Read (), "so#2-1");
  1144. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
  1145. Assert.AreEqual (xt, r.Type, "so#2-3");
  1146. // Assert.AreEqual (obj.Param, r.Instance, "so#2-4");
  1147. Assert.IsTrue (r.Read (), "sarg#1");
  1148. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sarg#2");
  1149. Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sarg#3");
  1150. Assert.IsTrue (r.Read (), "so#3-1");
  1151. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2");
  1152. xt = r.SchemaContext.GetXamlType (typeof (ComplexPositionalParameterValue));
  1153. Assert.AreEqual (xt, r.Type, "so#3-3");
  1154. Assert.IsTrue (r.Read (), "sm#3-1");
  1155. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
  1156. Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "sm#3-3");
  1157. Assert.IsTrue (r.Read (), "v#3-1");
  1158. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#3-2");
  1159. Assert.AreEqual ("foo", r.Value, "v#3-3");
  1160. Assert.IsTrue (r.Read (), "em#3-1");
  1161. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
  1162. Assert.IsTrue (r.Read (), "eo#3-1");
  1163. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
  1164. Assert.IsTrue (r.Read (), "earg#1");
  1165. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "earg#2"); // XamlLanguage.Arguments
  1166. Assert.IsTrue (r.Read (), "eo#2-1");
  1167. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  1168. Assert.IsTrue (r.Read (), "em#1-1");
  1169. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eo#1-2");
  1170. Assert.IsTrue (r.Read (), "eo#1-1");
  1171. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1172. Assert.IsFalse (r.Read (), "end");
  1173. }
  1174. protected void Read_ListWrapper (XamlReader r)
  1175. {
  1176. Assert.IsTrue (r.Read (), "#1");
  1177. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#2");
  1178. Assert.IsNotNull (r.Namespace, "#3");
  1179. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#3-2");
  1180. Assert.IsTrue (r.Read (), "#11");
  1181. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  1182. Assert.IsNotNull (r.Namespace, "#13");
  1183. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  1184. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  1185. Assert.IsTrue (r.Read (), "#21");
  1186. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  1187. var xt = new XamlType (typeof (ListWrapper), r.SchemaContext);
  1188. Assert.AreEqual (xt, r.Type, "#23");
  1189. // Assert.AreEqual (obj, r.Instance, "#26");
  1190. if (r is XamlXmlReader)
  1191. ReadBase (r);
  1192. Assert.IsTrue (r.Read (), "#61");
  1193. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
  1194. Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
  1195. Assert.IsTrue (r.Read (), "#71");
  1196. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "#71-2");
  1197. Assert.IsNull (r.Type, "#71-3");
  1198. Assert.IsNull (r.Member, "#71-4");
  1199. Assert.IsNull (r.Value, "#71-5");
  1200. Assert.IsTrue (r.Read (), "#72");
  1201. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  1202. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  1203. string [] values = {"5", "-3", "0"};
  1204. for (int i = 0; i < 3; i++) {
  1205. Assert.IsTrue (r.Read (), i + "#73");
  1206. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  1207. Assert.IsTrue (r.Read (), i + "#74");
  1208. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  1209. Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
  1210. Assert.IsTrue (r.Read (), i + "#75");
  1211. Assert.IsNotNull (r.Value, i + "#75-2");
  1212. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  1213. Assert.IsTrue (r.Read (), i + "#74");
  1214. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  1215. Assert.IsTrue (r.Read (), i + "#75");
  1216. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
  1217. }
  1218. Assert.IsTrue (r.Read (), "#81");
  1219. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  1220. Assert.IsTrue (r.Read (), "#83");
  1221. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#84"); // GetObject
  1222. Assert.IsTrue (r.Read (), "#85");
  1223. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#86"); // ListWrapper.Items
  1224. Assert.IsTrue (r.Read (), "#87");
  1225. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ListWrapper
  1226. Assert.IsFalse (r.Read (), "#89");
  1227. }
  1228. protected void Read_ListWrapper2 (XamlReader r)
  1229. {
  1230. Assert.IsTrue (r.Read (), "#1");
  1231. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#2");
  1232. Assert.IsNotNull (r.Namespace, "#3");
  1233. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#3-2");
  1234. Assert.IsTrue (r.Read (), "#6");
  1235. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
  1236. Assert.IsNotNull (r.Namespace, "#8");
  1237. Assert.AreEqual ("scg", r.Namespace.Prefix, "#8-2");
  1238. Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "#8-3");
  1239. Assert.IsTrue (r.Read (), "#11");
  1240. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
  1241. Assert.IsNotNull (r.Namespace, "#13");
  1242. Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
  1243. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
  1244. Assert.IsTrue (r.Read (), "#21");
  1245. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
  1246. var xt = new XamlType (typeof (ListWrapper2), r.SchemaContext);
  1247. Assert.AreEqual (xt, r.Type, "#23");
  1248. // Assert.AreEqual (obj, r.Instance, "#26");
  1249. if (r is XamlXmlReader)
  1250. ReadBase (r);
  1251. Assert.IsTrue (r.Read (), "#61");
  1252. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
  1253. Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
  1254. Assert.IsTrue (r.Read (), "#71");
  1255. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#71-2");
  1256. xt = r.SchemaContext.GetXamlType (typeof (List<int>));
  1257. Assert.AreEqual (xt, r.Type, "#71-3");
  1258. Assert.IsNull (r.Member, "#71-4");
  1259. Assert.IsNull (r.Value, "#71-5");
  1260. // Capacity
  1261. Assert.IsTrue (r.Read (), "#31");
  1262. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
  1263. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
  1264. Assert.IsTrue (r.Read (), "#41");
  1265. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
  1266. // The value is implementation details, not testable.
  1267. //Assert.AreEqual ("3", r.Value, "#43");
  1268. Assert.IsTrue (r.Read (), "#51");
  1269. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
  1270. // Items
  1271. Assert.IsTrue (r.Read (), "#72");
  1272. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
  1273. Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
  1274. string [] values = {"5", "-3", "0"};
  1275. for (int i = 0; i < 3; i++) {
  1276. Assert.IsTrue (r.Read (), i + "#73");
  1277. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
  1278. Assert.IsTrue (r.Read (), i + "#74");
  1279. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
  1280. Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
  1281. Assert.IsTrue (r.Read (), i + "#75");
  1282. Assert.IsNotNull (r.Value, i + "#75-2");
  1283. Assert.AreEqual (values [i], r.Value, i + "#73-3");
  1284. Assert.IsTrue (r.Read (), i + "#74");
  1285. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
  1286. Assert.IsTrue (r.Read (), i + "#75");
  1287. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
  1288. }
  1289. Assert.IsTrue (r.Read (), "#81");
  1290. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
  1291. Assert.IsTrue (r.Read (), "#83");
  1292. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#84"); // StartObject(of List<int>)
  1293. Assert.IsTrue (r.Read (), "#85");
  1294. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#86"); // ListWrapper.Items
  1295. Assert.IsTrue (r.Read (), "#87");
  1296. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ListWrapper
  1297. Assert.IsFalse (r.Read (), "#89");
  1298. }
  1299. protected void Read_ContentIncluded (XamlReader r)
  1300. {
  1301. Assert.IsTrue (r.Read (), "ns#1-1");
  1302. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1303. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1304. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
  1305. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1306. Assert.IsTrue (r.Read (), "so#1-1");
  1307. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1308. var xt = new XamlType (typeof (ContentIncludedClass), r.SchemaContext);
  1309. Assert.AreEqual (xt, r.Type, "so#1-3");
  1310. if (r is XamlXmlReader)
  1311. ReadBase (r);
  1312. Assert.IsTrue (r.Read (), "sposprm#1");
  1313. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
  1314. Assert.AreEqual (xt.GetMember ("Content"), r.Member, "sposprm#3");
  1315. Assert.IsTrue (r.Read (), "sva#1-1");
  1316. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#1-2");
  1317. Assert.AreEqual ("foo", r.Value, "sva#1-3");
  1318. Assert.IsTrue (r.Read (), "eposprm#1");
  1319. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eposprm#2");
  1320. Assert.IsTrue (r.Read (), "eo#1-1");
  1321. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1322. Assert.IsFalse (r.Read (), "end");
  1323. }
  1324. protected void Read_PropertyDefinition (XamlReader r)
  1325. {
  1326. Assert.IsTrue (r.Read (), "ns#1-1");
  1327. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1328. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1329. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#1-4");
  1330. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#1-5");
  1331. Assert.IsTrue (r.Read (), "so#1-1");
  1332. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1333. var xt = new XamlType (typeof (PropertyDefinition), r.SchemaContext);
  1334. Assert.AreEqual (xt, r.Type, "so#1-3");
  1335. if (r is XamlXmlReader)
  1336. ReadBase (r);
  1337. Assert.IsTrue (r.Read (), "smod#1");
  1338. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smod#2");
  1339. Assert.AreEqual (xt.GetMember ("Modifier"), r.Member, "smod#3");
  1340. Assert.IsTrue (r.Read (), "vmod#1");
  1341. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmod#2");
  1342. Assert.AreEqual ("protected", r.Value, "vmod#3");
  1343. Assert.IsTrue (r.Read (), "emod#1");
  1344. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#2");
  1345. Assert.IsTrue (r.Read (), "sname#1");
  1346. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sname#2");
  1347. Assert.AreEqual (xt.GetMember ("Name"), r.Member, "sname#3");
  1348. Assert.IsTrue (r.Read (), "vname#1");
  1349. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vname#2");
  1350. Assert.AreEqual ("foo", r.Value, "vname#3");
  1351. Assert.IsTrue (r.Read (), "ename#1");
  1352. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ename#2");
  1353. Assert.IsTrue (r.Read (), "stype#1");
  1354. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "stype#2");
  1355. Assert.AreEqual (xt.GetMember ("Type"), r.Member, "stype#3");
  1356. Assert.IsTrue (r.Read (), "vtype#1");
  1357. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vtype#2");
  1358. Assert.AreEqual ("x:String", r.Value, "vtype#3");
  1359. Assert.IsTrue (r.Read (), "etype#1");
  1360. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "etype#2");
  1361. Assert.IsTrue (r.Read (), "eo#1-1");
  1362. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1363. Assert.IsFalse (r.Read (), "end");
  1364. }
  1365. protected void Read_StaticExtensionWrapper (XamlReader r)
  1366. {
  1367. Assert.IsTrue (r.Read (), "ns#1-1");
  1368. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1369. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1370. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1371. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1372. Assert.IsTrue (r.Read (), "ns#2-1");
  1373. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1374. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1375. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  1376. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  1377. Assert.IsTrue (r.Read (), "so#1-1");
  1378. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1379. var xt = new XamlType (typeof (StaticExtensionWrapper), r.SchemaContext);
  1380. Assert.AreEqual (xt, r.Type, "so#1-3");
  1381. if (r is XamlXmlReader)
  1382. ReadBase (r);
  1383. Assert.IsTrue (r.Read (), "sprm#1");
  1384. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sprm#2");
  1385. Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sprm#3");
  1386. Assert.IsTrue (r.Read (), "so#2-1");
  1387. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
  1388. xt = new XamlType (typeof (StaticExtension), r.SchemaContext);
  1389. Assert.AreEqual (xt, r.Type, "so#2-3");
  1390. Assert.IsTrue (r.Read (), "smbr#1");
  1391. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbr#2");
  1392. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbr#3");
  1393. Assert.IsTrue (r.Read (), "vmbr#1");
  1394. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbr#2");
  1395. Assert.AreEqual ("StaticExtensionWrapper.Foo", r.Value, "vmbr#3");
  1396. Assert.IsTrue (r.Read (), "embr#1");
  1397. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embr#2");
  1398. Assert.IsTrue (r.Read (), "eo#2-1");
  1399. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  1400. Assert.IsTrue (r.Read (), "emod#1-1");
  1401. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#1-2");
  1402. Assert.IsTrue (r.Read (), "eo#1-1");
  1403. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1404. Assert.IsFalse (r.Read (), "end");
  1405. }
  1406. protected void Read_TypeExtensionWrapper (XamlReader r)
  1407. {
  1408. Assert.IsTrue (r.Read (), "ns#1-1");
  1409. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1410. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1411. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1412. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1413. Assert.IsTrue (r.Read (), "ns#2-1");
  1414. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1415. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1416. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  1417. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  1418. Assert.IsTrue (r.Read (), "so#1-1");
  1419. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1420. var xt = new XamlType (typeof (TypeExtensionWrapper), r.SchemaContext);
  1421. Assert.AreEqual (xt, r.Type, "so#1-3");
  1422. if (r is XamlXmlReader)
  1423. ReadBase (r);
  1424. Assert.IsTrue (r.Read (), "sprm#1");
  1425. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sprm#2");
  1426. Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sprm#3");
  1427. Assert.IsTrue (r.Read (), "so#2-1");
  1428. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
  1429. xt = new XamlType (typeof (TypeExtension), r.SchemaContext);
  1430. Assert.AreEqual (xt, r.Type, "so#2-3");
  1431. Assert.IsTrue (r.Read (), "smbr#1");
  1432. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbr#2");
  1433. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbr#3");
  1434. Assert.IsTrue (r.Read (), "vmbr#1");
  1435. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbr#2");
  1436. Assert.AreEqual (String.Empty, r.Value, "vmbr#3");
  1437. Assert.IsTrue (r.Read (), "embr#1");
  1438. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embr#2");
  1439. Assert.IsTrue (r.Read (), "eo#2-1");
  1440. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  1441. Assert.IsTrue (r.Read (), "emod#1-1");
  1442. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#1-2");
  1443. Assert.IsTrue (r.Read (), "eo#1-1");
  1444. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1445. Assert.IsFalse (r.Read (), "end");
  1446. }
  1447. protected void Read_EventContainer (XamlReader r)
  1448. {
  1449. Assert.IsTrue (r.Read (), "ns#1-1");
  1450. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1451. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1452. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1453. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1454. Assert.IsTrue (r.Read (), "so#1-1");
  1455. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1456. var xt = new XamlType (typeof (EventContainer), r.SchemaContext);
  1457. Assert.AreEqual (xt, r.Type, "so#1-3");
  1458. if (r is XamlXmlReader)
  1459. ReadBase (r);
  1460. Assert.IsTrue (r.Read (), "eo#1-1");
  1461. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1462. Assert.IsFalse (r.Read (), "end");
  1463. }
  1464. protected void Read_NamedItems (XamlReader r, bool isObjectReader)
  1465. {
  1466. Assert.IsTrue (r.Read (), "ns#1-1");
  1467. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1468. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1469. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1470. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1471. Assert.IsTrue (r.Read (), "ns#2-1");
  1472. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1473. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1474. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  1475. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  1476. var xt = new XamlType (typeof (NamedItem), r.SchemaContext);
  1477. // foo
  1478. Assert.IsTrue (r.Read (), "so#1-1");
  1479. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1480. Assert.AreEqual (xt, r.Type, "so#1-3");
  1481. if (r is XamlXmlReader)
  1482. ReadBase (r);
  1483. Assert.IsTrue (r.Read (), "sxname#1");
  1484. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sxname#2");
  1485. Assert.AreEqual (XamlLanguage.Name, r.Member, "sxname#3");
  1486. Assert.IsTrue (r.Read (), "vxname#1");
  1487. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vxname#2");
  1488. Assert.AreEqual ("__ReferenceID0", r.Value, "vxname#3");
  1489. Assert.IsTrue (r.Read (), "exname#1");
  1490. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "exname#2");
  1491. Assert.IsTrue (r.Read (), "sname#1");
  1492. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sname#2");
  1493. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sname#3");
  1494. Assert.IsTrue (r.Read (), "vname#1");
  1495. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vname#2");
  1496. Assert.AreEqual ("foo", r.Value, "vname#3");
  1497. Assert.IsTrue (r.Read (), "ename#1");
  1498. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ename#2");
  1499. Assert.IsTrue (r.Read (), "sItems#1");
  1500. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
  1501. Assert.AreEqual (xt.GetMember ("References"), r.Member, "sItems#3");
  1502. Assert.IsTrue (r.Read (), "goc#1-1");
  1503. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "goc#1-2");
  1504. Assert.IsTrue (r.Read (), "smbr#1");
  1505. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbr#2");
  1506. Assert.AreEqual (XamlLanguage.Items, r.Member, "smbr#3");
  1507. // bar
  1508. Assert.IsTrue (r.Read (), "soc#1-1");
  1509. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soc#1-2");
  1510. Assert.AreEqual (xt, r.Type, "soc#1-3");
  1511. Assert.IsTrue (r.Read (), "smbrc#1");
  1512. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrc#2");
  1513. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "smbrc#3");
  1514. Assert.IsTrue (r.Read (), "vmbrc#1");
  1515. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbrc#2");
  1516. Assert.AreEqual ("bar", r.Value, "vmbrc#3");
  1517. Assert.IsTrue (r.Read (), "embrc#1");
  1518. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embrc#2");
  1519. Assert.IsTrue (r.Read (), "sItemsc#1");
  1520. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItemsc#2");
  1521. Assert.AreEqual (xt.GetMember ("References"), r.Member, "sItemsc#3");
  1522. Assert.IsTrue (r.Read (), "god#2-1");
  1523. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "god#2-2");
  1524. Assert.IsTrue (r.Read (), "smbrd#1");
  1525. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrd#2");
  1526. Assert.AreEqual (XamlLanguage.Items, r.Member, "smbrd#3");
  1527. Assert.IsTrue (r.Read (), "sod#1-1");
  1528. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sod#1-2");
  1529. Assert.AreEqual (XamlLanguage.Reference, r.Type, "sod#1-3");
  1530. Assert.IsTrue (r.Read (), "smbrd#1");
  1531. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrd#2");
  1532. if (isObjectReader)
  1533. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbrd#3");
  1534. else
  1535. Assert.AreEqual (XamlLanguage.Reference.GetMember ("Name"), r.Member, "smbrd#3");
  1536. Assert.IsTrue (r.Read (), "vmbrd#1");
  1537. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbrd#2");
  1538. Assert.AreEqual ("__ReferenceID0", r.Value, "vmbrd#3");
  1539. Assert.IsTrue (r.Read (), "embrd#1");
  1540. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embrd#2");
  1541. Assert.IsTrue (r.Read (), "eod#2-1");
  1542. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eod#2-2");
  1543. Assert.IsTrue (r.Read (), "eItemsc#1");
  1544. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItemsc#2");
  1545. Assert.IsTrue (r.Read (), "eoc#2-1");
  1546. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoc#2-2");
  1547. Assert.IsTrue (r.Read (), "emod#1-1");
  1548. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#1-2");
  1549. Assert.IsTrue (r.Read (), "eo#1-1");
  1550. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1551. // baz
  1552. Assert.IsTrue (r.Read (), "so3#1-1");
  1553. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so3#1-2");
  1554. Assert.AreEqual (xt, r.Type, "so3#1-3");
  1555. Assert.IsTrue (r.Read (), "sname3#1");
  1556. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sname3#2");
  1557. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sname3#3");
  1558. Assert.IsTrue (r.Read (), "vname3#1");
  1559. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vname3#2");
  1560. Assert.AreEqual ("baz", r.Value, "vname3#3");
  1561. Assert.IsTrue (r.Read (), "ename3#1");
  1562. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ename3#2");
  1563. Assert.IsTrue (r.Read (), "eo3#1-1");
  1564. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo3#1-2");
  1565. Assert.IsTrue (r.Read (), "em2#1-1");
  1566. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#1-2");
  1567. Assert.IsTrue (r.Read (), "eo2#1-1");
  1568. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo2#1-2");
  1569. Assert.IsTrue (r.Read (), "em#1-1");
  1570. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  1571. Assert.IsTrue (r.Read (), "eo#1-1");
  1572. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1573. Assert.IsFalse (r.Read (), "end");
  1574. }
  1575. protected void Read_NamedItems2 (XamlReader r, bool isObjectReader)
  1576. {
  1577. Assert.IsTrue (r.Read (), "ns#1-1");
  1578. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1579. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1580. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1581. Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
  1582. Assert.IsTrue (r.Read (), "ns#2-1");
  1583. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1584. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1585. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  1586. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  1587. var xt = new XamlType (typeof (NamedItem2), r.SchemaContext);
  1588. // i1
  1589. Assert.IsTrue (r.Read (), "so1#1");
  1590. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so1#2");
  1591. Assert.AreEqual (xt, r.Type, "so1#3");
  1592. if (r is XamlXmlReader)
  1593. ReadBase (r);
  1594. Assert.IsTrue (r.Read (), "sm1#1");
  1595. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  1596. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm1#3");
  1597. Assert.IsTrue (r.Read (), "v1#1");
  1598. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v1#2");
  1599. Assert.AreEqual ("i1", r.Value, "v1#3");
  1600. Assert.IsTrue (r.Read (), "em1#1");
  1601. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em1#2");
  1602. Assert.IsTrue (r.Read (), "srefs1#1");
  1603. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs1#2");
  1604. Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs1#3");
  1605. Assert.IsTrue (r.Read (), "go1#1");
  1606. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go1#2");
  1607. Assert.IsTrue (r.Read (), "sitems1#1");
  1608. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sitems1#2");
  1609. Assert.AreEqual (XamlLanguage.Items, r.Member, "sitems1#3");
  1610. // i2
  1611. Assert.IsTrue (r.Read (), "so2#1-1");
  1612. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so2#1-2");
  1613. Assert.AreEqual (xt, r.Type, "so2#1-3");
  1614. Assert.IsTrue (r.Read (), "sm2#1");
  1615. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
  1616. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm2#3");
  1617. Assert.IsTrue (r.Read (), "v2#1");
  1618. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v2#2");
  1619. Assert.AreEqual ("i2", r.Value, "v2#3");
  1620. Assert.IsTrue (r.Read (), "em2#1");
  1621. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#2");
  1622. Assert.IsTrue (r.Read (), "srefs2#1");
  1623. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs2#2");
  1624. Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs2#3");
  1625. Assert.IsTrue (r.Read (), "go2#1");
  1626. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go2#2");
  1627. Assert.IsTrue (r.Read (), "sItems1#1");
  1628. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems1#2");
  1629. Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems1#3");
  1630. Assert.IsTrue (r.Read (), "so3#1");
  1631. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so3#2");
  1632. Assert.AreEqual (xt, r.Type, "so3#3");
  1633. Assert.IsTrue (r.Read (), "sm3#1");
  1634. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm3#2");
  1635. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm3#3");
  1636. Assert.IsTrue (r.Read (), "v3#1");
  1637. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v3#2");
  1638. Assert.AreEqual ("i3", r.Value, "v3#3");
  1639. Assert.IsTrue (r.Read (), "em3#1");
  1640. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em3#2");
  1641. Assert.IsTrue (r.Read (), "eo3#1");
  1642. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo3#2");
  1643. Assert.IsTrue (r.Read (), "eitems2#1");
  1644. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems2#2");
  1645. Assert.IsTrue (r.Read (), "ego2#1");
  1646. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego2#2");
  1647. Assert.IsTrue (r.Read (), "erefs2#1");
  1648. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs2#2");
  1649. Assert.IsTrue (r.Read (), "eo2#1");
  1650. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo2#2");
  1651. // i4
  1652. Assert.IsTrue (r.Read (), "so4#1");
  1653. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so4#2");
  1654. Assert.AreEqual (xt, r.Type, "so4#3");
  1655. Assert.IsTrue (r.Read (), "sm4#1");
  1656. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm4#2");
  1657. Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm4#3");
  1658. Assert.IsTrue (r.Read (), "v4#1");
  1659. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v4#2");
  1660. Assert.AreEqual ("i4", r.Value, "v4#3");
  1661. Assert.IsTrue (r.Read (), "em4#1");
  1662. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em4#2");
  1663. Assert.IsTrue (r.Read (), "srefs4#1");
  1664. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs4#2");
  1665. Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs4#3");
  1666. Assert.IsTrue (r.Read (), "go4#1");
  1667. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go4#2");
  1668. Assert.IsTrue (r.Read (), "sitems4#1");
  1669. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sitems4#2");
  1670. Assert.AreEqual (XamlLanguage.Items, r.Member, "sitems4#3");
  1671. Assert.IsTrue (r.Read (), "sor1#1");
  1672. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sor1#2");
  1673. Assert.AreEqual (XamlLanguage.Reference, r.Type, "sor1#3");
  1674. Assert.IsTrue (r.Read (), "smr1#1");
  1675. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smr1#2");
  1676. if (isObjectReader)
  1677. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smr1#3");
  1678. else
  1679. Assert.AreEqual (XamlLanguage.Reference.GetMember ("Name"), r.Member, "smr1#3");
  1680. Assert.IsTrue (r.Read (), "vr1#1");
  1681. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vr1#2");
  1682. Assert.AreEqual ("i3", r.Value, "vr1#3");
  1683. Assert.IsTrue (r.Read (), "emr1#1");
  1684. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emr1#2");
  1685. Assert.IsTrue (r.Read (), "eor#1");
  1686. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eor#2");
  1687. Assert.IsTrue (r.Read (), "eitems4#1");
  1688. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems4#2");
  1689. Assert.IsTrue (r.Read (), "ego4#1");
  1690. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego4#2");
  1691. Assert.IsTrue (r.Read (), "erefs4#1");
  1692. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs4#2");
  1693. Assert.IsTrue (r.Read (), "eo4#1-1");
  1694. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo4#1-2");
  1695. Assert.IsTrue (r.Read (), "eitems1#1");
  1696. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems1#2");
  1697. Assert.IsTrue (r.Read (), "ego1#1");
  1698. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego1#2");
  1699. Assert.IsTrue (r.Read (), "erefs1#1");
  1700. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs1#2");
  1701. Assert.IsTrue (r.Read (), "eo1#1");
  1702. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo1#2");
  1703. Assert.IsFalse (r.Read (), "end");
  1704. }
  1705. protected void Read_XmlSerializableWrapper (XamlReader r, bool isObjectReader)
  1706. {
  1707. Assert.IsTrue (r.Read (), "ns#1-1");
  1708. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1709. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1710. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1711. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  1712. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  1713. Assert.IsTrue (r.Read (), "ns#2-1");
  1714. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1715. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1716. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  1717. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  1718. // t:XmlSerializableWrapper
  1719. Assert.IsTrue (r.Read (), "so#1-1");
  1720. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1721. var xt = new XamlType (typeof (XmlSerializableWrapper), r.SchemaContext);
  1722. Assert.AreEqual (xt, r.Type, "so#1-3");
  1723. if (r is XamlXmlReader)
  1724. ReadBase (r);
  1725. // m:Value
  1726. Assert.IsTrue (r.Read (), "sm1#1");
  1727. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  1728. Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm1#3");
  1729. // x:XData
  1730. Assert.IsTrue (r.Read (), "so#2-1");
  1731. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
  1732. Assert.AreEqual (XamlLanguage.XData, r.Type, "so#2-3");
  1733. if (r is XamlObjectReader)
  1734. Assert.IsNull (((XamlObjectReader) r).Instance, "xdata-instance");
  1735. Assert.IsTrue (r.Read (), "sm2#1");
  1736. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
  1737. Assert.AreEqual (XamlLanguage.XData.GetMember ("Text"), r.Member, "sm2#3");
  1738. Assert.IsTrue (r.Read (), "v1#1");
  1739. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v1#2");
  1740. var val = isObjectReader ? "<root />" : "<root xmlns=\"" + assns + "\" />";
  1741. Assert.AreEqual (val, r.Value, "v1#3");
  1742. Assert.IsTrue (r.Read (), "em2#1");
  1743. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#2");
  1744. Assert.IsTrue (r.Read (), "eo#2-1");
  1745. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  1746. Assert.IsTrue (r.Read (), "em1#1");
  1747. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em1#2");
  1748. // /t:XmlSerializableWrapper
  1749. Assert.IsTrue (r.Read (), "eo#1-1");
  1750. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1751. Assert.IsFalse (r.Read (), "end");
  1752. }
  1753. protected void Read_XmlSerializable (XamlReader r)
  1754. {
  1755. Assert.IsTrue (r.Read (), "ns#1-1");
  1756. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1757. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1758. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1759. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  1760. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  1761. // t:XmlSerializable
  1762. Assert.IsTrue (r.Read (), "so#1-1");
  1763. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1764. var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext);
  1765. Assert.AreEqual (xt, r.Type, "so#1-3");
  1766. if (r is XamlXmlReader)
  1767. ReadBase (r);
  1768. // /t:XmlSerializable
  1769. Assert.IsTrue (r.Read (), "eo#1-1");
  1770. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1771. Assert.IsFalse (r.Read (), "end");
  1772. }
  1773. protected void Read_ListXmlSerializable (XamlReader r)
  1774. {
  1775. while (true) {
  1776. r.Read ();
  1777. if (r.Member == XamlLanguage.Items)
  1778. break;
  1779. if (r.IsEof)
  1780. Assert.Fail ("Items did not appear");
  1781. }
  1782. // t:XmlSerializable (yes...it is not XData!)
  1783. Assert.IsTrue (r.Read (), "so#1-1");
  1784. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1785. var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext);
  1786. Assert.AreEqual (xt, r.Type, "so#1-3");
  1787. // /t:XmlSerializable
  1788. Assert.IsTrue (r.Read (), "eo#1-1");
  1789. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1790. r.Close ();
  1791. }
  1792. protected void Read_TypeConverterOnListMember (XamlReader r)
  1793. {
  1794. Assert.IsTrue (r.Read (), "ns#1-1");
  1795. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1796. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1797. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1798. Assert.AreEqual ("http://www.domain.com/path", r.Namespace.Namespace, "ns#1-5");
  1799. // t:TypeOtherAssembly
  1800. Assert.IsTrue (r.Read (), "so#1-1");
  1801. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1802. var xt = new XamlType (typeof (SecondTest.TypeOtherAssembly), r.SchemaContext);
  1803. Assert.AreEqual (xt, r.Type, "so#1-3");
  1804. if (r is XamlXmlReader)
  1805. ReadBase (r);
  1806. // m:Values
  1807. Assert.IsTrue (r.Read (), "sm1#1");
  1808. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  1809. Assert.AreEqual (xt.GetMember ("Values"), r.Member, "sm1#3");
  1810. // x:Value
  1811. Assert.IsTrue (r.Read (), "v#1-1");
  1812. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
  1813. Assert.AreEqual ("1, 2, 3", r.Value, "v#1-3");
  1814. // /m:Values
  1815. Assert.IsTrue (r.Read (), "em#1-1");
  1816. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  1817. // /t:TypeOtherAssembly
  1818. Assert.IsTrue (r.Read (), "eo#1-1");
  1819. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1820. Assert.IsFalse (r.Read (), "end");
  1821. }
  1822. protected void Read_EnumContainer (XamlReader r)
  1823. {
  1824. Assert.IsTrue (r.Read (), "ns#1-1");
  1825. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1826. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1827. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1828. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  1829. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  1830. // t:EnumContainer
  1831. Assert.IsTrue (r.Read (), "so#1-1");
  1832. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1833. var xt = new XamlType (typeof (EnumContainer), r.SchemaContext);
  1834. Assert.AreEqual (xt, r.Type, "so#1-3");
  1835. if (r is XamlXmlReader)
  1836. ReadBase (r);
  1837. // m:EnumProperty
  1838. Assert.IsTrue (r.Read (), "sm1#1");
  1839. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  1840. Assert.AreEqual (xt.GetMember ("EnumProperty"), r.Member, "sm1#3");
  1841. // x:Value
  1842. Assert.IsTrue (r.Read (), "v#1-1");
  1843. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
  1844. Assert.AreEqual ("Two", r.Value, "v#1-3");
  1845. // /m:EnumProperty
  1846. Assert.IsTrue (r.Read (), "em#1-1");
  1847. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  1848. // /t:EnumContainer
  1849. Assert.IsTrue (r.Read (), "eo#1-1");
  1850. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1851. Assert.IsFalse (r.Read (), "end");
  1852. }
  1853. protected void Read_CollectionContentProperty (XamlReader r, bool contentPropertyIsUsed)
  1854. {
  1855. Assert.IsTrue (r.Read (), "ns#1-1");
  1856. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1857. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1858. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1859. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  1860. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  1861. Assert.IsTrue (r.Read (), "ns#2-1");
  1862. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1863. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1864. Assert.AreEqual ("scg", r.Namespace.Prefix, "ns#2-4");
  1865. assns = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
  1866. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#2-5");
  1867. Assert.IsTrue (r.Read (), "ns#3-1");
  1868. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
  1869. Assert.IsNotNull (r.Namespace, "ns#3-3");
  1870. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#3-4");
  1871. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3-5");
  1872. // t:CollectionContentProperty
  1873. Assert.IsTrue (r.Read (), "so#1-1");
  1874. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1875. var xt = new XamlType (typeof (CollectionContentProperty), r.SchemaContext);
  1876. Assert.AreEqual (xt, r.Type, "so#1-3");
  1877. if (r is XamlXmlReader)
  1878. ReadBase (r);
  1879. // m:ListOfItems
  1880. Assert.IsTrue (r.Read (), "sm1#1");
  1881. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  1882. Assert.AreEqual (xt.GetMember ("ListOfItems"), r.Member, "sm1#3");
  1883. // t:CollectionContentProperty
  1884. xt = new XamlType (typeof (List<SimpleClass>), r.SchemaContext);
  1885. Assert.IsTrue (r.Read (), "so#2-1");
  1886. if (contentPropertyIsUsed)
  1887. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "so#2-2.1");
  1888. else {
  1889. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2.2");
  1890. Assert.AreEqual (xt, r.Type, "so#2-3");
  1891. // m:Capacity
  1892. Assert.IsTrue (r.Read (), "sm#2-1");
  1893. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2");
  1894. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#2-3");
  1895. // r.Skip (); // LAMESPEC: .NET then skips to *post* Items node (i.e. at the first TestClass item)
  1896. Assert.IsTrue (r.Read (), "v#1-1");
  1897. Assert.IsTrue (r.Read (), "em#2-1");
  1898. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
  1899. }
  1900. Assert.IsTrue (r.Read (), "sm#3-1");
  1901. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
  1902. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#3-3");
  1903. for (int i = 0; i < 4; i++) {
  1904. // t:SimpleClass
  1905. Assert.IsTrue (r.Read (), "so#3-1." + i);
  1906. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
  1907. xt = new XamlType (typeof (SimpleClass), r.SchemaContext);
  1908. Assert.AreEqual (xt, r.Type, "so#3-3." + i);
  1909. // /t:SimpleClass
  1910. Assert.IsTrue (r.Read (), "eo#3-1");
  1911. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
  1912. }
  1913. // /m:Items
  1914. Assert.IsTrue (r.Read (), "em#3-1");
  1915. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
  1916. // /t:CollectionContentProperty
  1917. Assert.IsTrue (r.Read (), "eo#2-1");
  1918. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  1919. // /m:ListOfItems
  1920. Assert.IsTrue (r.Read (), "em#1-1");
  1921. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  1922. // /t:CollectionContentProperty
  1923. Assert.IsTrue (r.Read (), "eo#1-1");
  1924. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  1925. Assert.IsFalse (r.Read (), "end");
  1926. }
  1927. protected void Read_CollectionContentPropertyX (XamlReader r, bool contentPropertyIsUsed)
  1928. {
  1929. Assert.IsTrue (r.Read (), "ns#1-1");
  1930. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  1931. Assert.IsNotNull (r.Namespace, "ns#1-3");
  1932. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  1933. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  1934. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  1935. Assert.IsTrue (r.Read (), "ns#2-1");
  1936. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  1937. Assert.IsNotNull (r.Namespace, "ns#2-3");
  1938. Assert.AreEqual ("sc", r.Namespace.Prefix, "ns#2-4");
  1939. assns = "clr-namespace:System.Collections;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
  1940. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#2-5");
  1941. Assert.IsTrue (r.Read (), "ns#x-1");
  1942. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#x-2");
  1943. Assert.IsNotNull (r.Namespace, "ns#x-3");
  1944. Assert.AreEqual ("scg", r.Namespace.Prefix, "ns#x-4");
  1945. assns = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
  1946. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#x-5");
  1947. Assert.IsTrue (r.Read (), "ns#3-1");
  1948. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
  1949. Assert.IsNotNull (r.Namespace, "ns#3-3");
  1950. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#3-4");
  1951. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3-5");
  1952. // t:CollectionContentProperty
  1953. Assert.IsTrue (r.Read (), "so#1-1");
  1954. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  1955. var xt = new XamlType (typeof (CollectionContentPropertyX), r.SchemaContext);
  1956. Assert.AreEqual (xt, r.Type, "so#1-3");
  1957. if (r is XamlXmlReader)
  1958. ReadBase (r);
  1959. // m:ListOfItems
  1960. Assert.IsTrue (r.Read (), "sm1#1");
  1961. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  1962. Assert.AreEqual (xt.GetMember ("ListOfItems"), r.Member, "sm1#3");
  1963. // t:List<IEnumerable>
  1964. xt = new XamlType (typeof (List<IEnumerable>), r.SchemaContext);
  1965. Assert.IsTrue (r.Read (), "so#2-1");
  1966. if (false/*contentPropertyIsUsed*/)
  1967. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "so#2-2.1");
  1968. else {
  1969. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2.2");
  1970. Assert.AreEqual (xt, r.Type, "so#2-3");
  1971. // m:Capacity
  1972. Assert.IsTrue (r.Read (), "sm#2-1");
  1973. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2");
  1974. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#2-3");
  1975. // r.Skip (); // LAMESPEC: .NET then skips to *post* Items node (i.e. at the first TestClass item)
  1976. Assert.IsTrue (r.Read (), "v#1-1");
  1977. // /m:Capacity
  1978. Assert.IsTrue (r.Read (), "em#2-1");
  1979. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
  1980. }
  1981. Assert.IsTrue (r.Read (), "sm#3-1");
  1982. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
  1983. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#3-3");
  1984. if (!contentPropertyIsUsed) {
  1985. Assert.IsTrue (r.Read (), "so#x-1");
  1986. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2.2");
  1987. xt = new XamlType (typeof (List<object>), r.SchemaContext);
  1988. Assert.AreEqual (xt, r.Type, "so#x-3");
  1989. // m:Capacity
  1990. Assert.IsTrue (r.Read (), "sm#xx-1");
  1991. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#xx-2");
  1992. Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#xx-3");
  1993. Assert.IsTrue (r.Read (), "v#x-1");
  1994. // /m:Capacity
  1995. Assert.IsTrue (r.Read (), "em#xx-1");
  1996. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#xx-2");
  1997. Assert.IsTrue (r.Read (), "sm#x-1");
  1998. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x-2");
  1999. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#x-3");
  2000. }
  2001. for (int i = 0; i < 4; i++) {
  2002. // t:SimpleClass
  2003. Assert.IsTrue (r.Read (), "so#3-1." + i);
  2004. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
  2005. xt = new XamlType (typeof (SimpleClass), r.SchemaContext);
  2006. Assert.AreEqual (xt, r.Type, "so#3-3." + i);
  2007. // /t:SimpleClass
  2008. Assert.IsTrue (r.Read (), "eo#3-1");
  2009. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
  2010. }
  2011. if (!contentPropertyIsUsed) {
  2012. // /m:Items
  2013. Assert.IsTrue (r.Read (), "em#x-1");
  2014. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
  2015. // /t:List<IEnumerable>
  2016. Assert.IsTrue (r.Read (), "eo#x-1");
  2017. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
  2018. }
  2019. // /m:Items
  2020. Assert.IsTrue (r.Read (), "em#3-1");
  2021. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
  2022. // /t:CollectionContentProperty
  2023. Assert.IsTrue (r.Read (), "eo#2-1");
  2024. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
  2025. // /m:ListOfItems
  2026. Assert.IsTrue (r.Read (), "em#1-1");
  2027. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2028. // /t:CollectionContentProperty
  2029. Assert.IsTrue (r.Read (), "eo#1-1");
  2030. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2031. Assert.IsFalse (r.Read (), "end");
  2032. }
  2033. #region ambient property test
  2034. protected void Read_AmbientPropertyContainer (XamlReader r, bool extensionBased)
  2035. {
  2036. Assert.IsTrue (r.Read (), "ns#1-1");
  2037. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  2038. Assert.IsNotNull (r.Namespace, "ns#1-3");
  2039. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  2040. Assert.AreEqual ("http://www.domain.com/path", r.Namespace.Namespace, "ns#1-5");
  2041. Assert.IsTrue (r.Read (), "ns#2-1");
  2042. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
  2043. Assert.IsNotNull (r.Namespace, "ns#2-3");
  2044. Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
  2045. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
  2046. // t:AmbientPropertyContainer
  2047. Assert.IsTrue (r.Read (), "so#1-1");
  2048. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2049. var xt = new XamlType (typeof (SecondTest.ResourcesDict), r.SchemaContext);
  2050. Assert.AreEqual (xt, r.Type, "so#1-3");
  2051. if (r is XamlXmlReader)
  2052. ReadBase (r);
  2053. // m:Items
  2054. Assert.IsTrue (r.Read (), "sm#1-1");
  2055. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
  2056. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#1-3");
  2057. xt = new XamlType (typeof (SecondTest.TestObject), r.SchemaContext);
  2058. for (int i = 0; i < 2; i++) {
  2059. if (i == 1 && r is XamlObjectReader && extensionBased) {
  2060. ReadReasourceExtension_AmbientPropertyContainer (r, i, extensionBased);
  2061. continue;
  2062. }
  2063. // t:TestObject
  2064. Assert.IsTrue (r.Read (), "so#2-1." + i);
  2065. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2." + i);
  2066. Assert.AreEqual (xt, r.Type, "so#2-3." + i);
  2067. if (!extensionBased) {
  2068. if (i == 0 && r is XamlXmlReader) // order difference between XamlObjectReader and XamlXmlReader ...
  2069. ReadName_AmbientPropertyContainer (r, i);
  2070. ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
  2071. if (i == 0 && r is XamlObjectReader) // order difference between XamlObjectReader and XamlXmlReader ...
  2072. ReadName_AmbientPropertyContainer (r, i);
  2073. }
  2074. if (r is XamlObjectReader && extensionBased) {
  2075. ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
  2076. ReadName_AmbientPropertyContainer (r, i);
  2077. }
  2078. ReadKey_AmbientPropertyContainer (r, i, extensionBased);
  2079. if (extensionBased && i == 1)
  2080. ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
  2081. // /t:TestObject
  2082. Assert.IsTrue (r.Read (), "eo#2-1." + i);
  2083. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2." + i);
  2084. }
  2085. // /m:Items
  2086. Assert.IsTrue (r.Read (), "em#1-1");
  2087. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2088. // /t:AmbientPropertyContainer
  2089. Assert.IsTrue (r.Read (), "eo#1-1");
  2090. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2091. Assert.IsFalse (r.Read (), "end");
  2092. }
  2093. void ReadKey_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
  2094. {
  2095. // m:Key
  2096. Assert.IsTrue (r.Read (), "sm#4-1." + i);
  2097. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#4-2." + i);
  2098. Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#4-3." + i);
  2099. if (!extensionBased || r is XamlObjectReader) {
  2100. // t:String (as it is specific derived type as compared to the key object type in Dictionary<object,object>)
  2101. Assert.IsTrue (r.Read (), "so#5-1." + i);
  2102. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#5-2." + i);
  2103. Assert.AreEqual (XamlLanguage.String, r.Type, "so#5-3." + i);
  2104. Assert.IsTrue (r.Read (), "sm#5-1." + i);
  2105. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#5-2." + i);
  2106. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sm#5-3." + i);
  2107. Assert.IsTrue (r.Read (), "v#5-1." + i);
  2108. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#5-2." + i);
  2109. Assert.IsTrue (r.Read (), "em#5-1." + i);
  2110. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#5-2." + i);
  2111. // /t:String
  2112. Assert.IsTrue (r.Read (), "eo#5-1." + i);
  2113. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#5-2." + i);
  2114. } else {
  2115. // it is in attribute string without type in xml.
  2116. Assert.IsTrue (r.Read (), "v#y-1." + i);
  2117. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2." + i);
  2118. Assert.AreEqual (i == 0 ? "TestDictItem" : "okay", r.Value, "v#y-3." + i);
  2119. }
  2120. // /m:Key
  2121. Assert.IsTrue (r.Read (), "em#4-1." + i);
  2122. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#4-2." + i);
  2123. }
  2124. void ReadName_AmbientPropertyContainer (XamlReader r, int i)
  2125. {
  2126. // m:Name
  2127. Assert.IsTrue (r.Read (), "sm#3-1." + i);
  2128. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2." + i);
  2129. Assert.AreEqual (XamlLanguage.Name, r.Member, "sm#3-3." + i);
  2130. Assert.IsTrue (r.Read (), "v#3-1." + i);
  2131. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#3-2." + i);
  2132. Assert.AreEqual ("__ReferenceID0", r.Value, "v#3-3." + i);
  2133. // /m:Name
  2134. Assert.IsTrue (r.Read (), "em#3-1." + i);
  2135. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2." + i);
  2136. }
  2137. void ReadTestProperty_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
  2138. {
  2139. var xt = new XamlType (typeof (SecondTest.TestObject), r.SchemaContext);
  2140. // m:TestProperty
  2141. Assert.IsTrue (r.Read (), "sm#2-1." + i);
  2142. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2." + i);
  2143. Assert.AreEqual (xt.GetMember ("TestProperty"), r.Member, "sm#2-3." + i);
  2144. if (i == 0) {
  2145. // t:TestObject={x:Null}
  2146. Assert.IsTrue (r.Read (), "so#3-1." + i);
  2147. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
  2148. Assert.AreEqual (XamlLanguage.Null, r.Type, "so#3-3." + i);
  2149. Assert.IsTrue (r.Read (), "eo#3-1." + i);
  2150. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2." + i);
  2151. } else if (extensionBased) {
  2152. ReadReasourceExtension_AmbientPropertyContainer (r, i, extensionBased);
  2153. } else {
  2154. ReadReference_AmbientPropertyContainer (r, i, extensionBased);
  2155. }
  2156. // /m:TestProperty
  2157. Assert.IsTrue (r.Read (), "em#2-1." + i);
  2158. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2." + i);
  2159. }
  2160. void ReadReasourceExtension_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
  2161. {
  2162. // t:ResourceExtension
  2163. var xt = r.SchemaContext.GetXamlType (typeof (SecondTest.ResourceExtension));
  2164. Assert.IsTrue (r.Read (), "so#z-1." + i);
  2165. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#z-2." + i);
  2166. Assert.AreEqual (xt, r.Type, "so#z-2." + i);
  2167. if (r is XamlObjectReader) {
  2168. // m:Arguments
  2169. Assert.IsTrue (r.Read (), "sm#zz-1." + i);
  2170. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#zz-2." + i);
  2171. Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sm#zz-3." + i);
  2172. ReadReference_AmbientPropertyContainer (r, i, extensionBased);
  2173. // /m:Arguments
  2174. Assert.IsTrue (r.Read (), "em#zz-1." + i);
  2175. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#zz-2." + i);
  2176. ReadKey_AmbientPropertyContainer (r, i, extensionBased);
  2177. } else {
  2178. // m:PositionalParameters
  2179. Assert.IsTrue (r.Read (), "sm#z-1." + i);
  2180. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#z-2." + i);
  2181. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sm#z-3." + i);
  2182. Assert.IsTrue (r.Read (), "v#z-1." + i);
  2183. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#z-2." + i);
  2184. // /m:PositionalParameters
  2185. Assert.IsTrue (r.Read (), "em#z-1." + i);
  2186. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#z-2." + i);
  2187. }
  2188. // /t:ResourceExtension
  2189. Assert.IsTrue (r.Read (), "eo#z-1." + i);
  2190. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#z-2." + i);
  2191. }
  2192. void ReadReference_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
  2193. {
  2194. // x:Reference
  2195. Assert.IsTrue (r.Read (), "so#zz2-1." + i);
  2196. Assert.AreEqual (XamlLanguage.Reference, r.Type, "so#zz2-2." + i);
  2197. // posparm
  2198. Assert.IsTrue (r.Read (), "sm#zz2-1." + i);
  2199. Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sm#zz2-3." + i);
  2200. // value
  2201. Assert.IsTrue (r.Read (), "v#zz2-1." + i);
  2202. Assert.AreEqual ("__ReferenceID0", r.Value, "v#zz2-2." + i);
  2203. // /posparm
  2204. Assert.IsTrue (r.Read (), "em#zz2-1." + i);
  2205. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#zz2-2." + i);
  2206. // /x:Reference
  2207. Assert.IsTrue (r.Read (), "eo#zz2-1." + i);
  2208. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#zz2-2." + i);
  2209. }
  2210. #endregion
  2211. protected void Read_NullableContainer (XamlReader r)
  2212. {
  2213. Assert.IsTrue (r.Read (), "ns#1-1");
  2214. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  2215. Assert.IsNotNull (r.Namespace, "ns#1-3");
  2216. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  2217. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  2218. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  2219. // t:NullableContainer
  2220. Assert.IsTrue (r.Read (), "so#1-1");
  2221. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2222. var xt = new XamlType (typeof (NullableContainer), r.SchemaContext);
  2223. Assert.AreEqual (xt, r.Type, "so#1-3");
  2224. if (r is XamlXmlReader)
  2225. ReadBase (r);
  2226. // m:TestProp
  2227. Assert.IsTrue (r.Read (), "sm1#1");
  2228. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  2229. Assert.AreEqual (xt.GetMember ("TestProp"), r.Member, "sm1#3");
  2230. // x:Value
  2231. Assert.IsTrue (r.Read (), "v#1-1");
  2232. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
  2233. Assert.AreEqual ("5", r.Value, "v#1-3");
  2234. // /m:TestProp
  2235. Assert.IsTrue (r.Read (), "em#1-1");
  2236. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2237. // /t:NullableContainer
  2238. Assert.IsTrue (r.Read (), "eo#1-1");
  2239. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2240. Assert.IsFalse (r.Read (), "end");
  2241. }
  2242. protected void Read_DirectListContainer (XamlReader r)
  2243. {
  2244. var assns1 = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  2245. var assns2 = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
  2246. ReadNamespace (r, String.Empty, assns1, "ns#1");
  2247. ReadNamespace (r, "scg", assns2, "ns#2");
  2248. ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#3");
  2249. // t:DirectListContainer
  2250. Assert.IsTrue (r.Read (), "so#1-1");
  2251. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2252. var xt = new XamlType (typeof (DirectListContainer), r.SchemaContext);
  2253. Assert.AreEqual (xt, r.Type, "so#1-3");
  2254. if (r is XamlXmlReader)
  2255. ReadBase (r);
  2256. // m:Items
  2257. Assert.IsTrue (r.Read (), "sm1#1");
  2258. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  2259. Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm1#3");
  2260. // GetObject
  2261. Assert.IsTrue (r.Read (), "go#1");
  2262. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
  2263. // m:Items(GetObject)
  2264. Assert.IsTrue (r.Read (), "sm2#1");
  2265. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
  2266. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm2#3");
  2267. xt = r.SchemaContext.GetXamlType (typeof (DirectListContent));
  2268. for (int i = 0; i < 3; i++) {
  2269. // t:DirectListContent
  2270. Assert.IsTrue (r.Read (), "so#x-1." + i);
  2271. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
  2272. Assert.AreEqual (xt, r.Type, "so#x-3." + i);
  2273. // m:Value
  2274. Assert.IsTrue (r.Read (), "sm#x1");
  2275. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
  2276. Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm#x3");
  2277. // x:Value
  2278. Assert.IsTrue (r.Read (), "v#x-1");
  2279. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
  2280. Assert.AreEqual ("Hello" + (i + 1), r.Value, "v#x-3");
  2281. // /m:Value
  2282. Assert.IsTrue (r.Read (), "em#x-1");
  2283. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
  2284. // /t:DirectListContent
  2285. Assert.IsTrue (r.Read (), "eo#x-1");
  2286. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
  2287. }
  2288. // /m:Items(GetObject)
  2289. Assert.IsTrue (r.Read (), "em#2-1");
  2290. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
  2291. // /GetObject
  2292. Assert.IsTrue (r.Read (), "ego#2-1");
  2293. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego#2-2");
  2294. // /m:Items
  2295. Assert.IsTrue (r.Read (), "em#1-1");
  2296. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2297. // /t:DirectListContainer
  2298. Assert.IsTrue (r.Read (), "eo#1-1");
  2299. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2300. Assert.IsFalse (r.Read (), "end");
  2301. }
  2302. protected void Read_DirectDictionaryContainer (XamlReader r)
  2303. {
  2304. var assns1 = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  2305. ReadNamespace (r, String.Empty, assns1, "ns#1");
  2306. ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
  2307. // t:DirectDictionaryContainer
  2308. Assert.IsTrue (r.Read (), "so#1-1");
  2309. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2310. var xt = new XamlType (typeof (DirectDictionaryContainer), r.SchemaContext);
  2311. Assert.AreEqual (xt, r.Type, "so#1-3");
  2312. if (r is XamlXmlReader)
  2313. ReadBase (r);
  2314. // m:Items
  2315. Assert.IsTrue (r.Read (), "sm1#1");
  2316. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  2317. Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm1#3");
  2318. // GetObject
  2319. Assert.IsTrue (r.Read (), "go#1");
  2320. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
  2321. // m:Items(GetObject)
  2322. Assert.IsTrue (r.Read (), "sm2#1");
  2323. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
  2324. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm2#3");
  2325. xt = r.SchemaContext.GetXamlType (typeof (int));
  2326. for (int i = 0; i < 3; i++) {
  2327. // t:DirectDictionaryContent
  2328. Assert.IsTrue (r.Read (), "so#x-1." + i);
  2329. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
  2330. Assert.AreEqual (xt, r.Type, "so#x-3." + i);
  2331. // m:Key
  2332. Assert.IsTrue (r.Read (), "sm#y1");
  2333. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2");
  2334. Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3");
  2335. // x:Value
  2336. Assert.IsTrue (r.Read (), "v#y-1");
  2337. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2");
  2338. Assert.AreEqual (((EnumValueType) i).ToString ().ToLower (), r.Value, "v#y-3");
  2339. // /m:Key
  2340. Assert.IsTrue (r.Read (), "em#y-1");
  2341. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2");
  2342. // m:Value
  2343. Assert.IsTrue (r.Read (), "sm#x1");
  2344. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
  2345. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sm#x3");
  2346. // x:Value
  2347. Assert.IsTrue (r.Read (), "v#x-1");
  2348. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
  2349. Assert.AreEqual ("" + (i + 2) * 10, r.Value, "v#x-3");
  2350. // /m:Value
  2351. Assert.IsTrue (r.Read (), "em#x-1");
  2352. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
  2353. // /t:DirectDictionaryContent
  2354. Assert.IsTrue (r.Read (), "eo#x-1");
  2355. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
  2356. }
  2357. // /m:Items(GetObject)
  2358. Assert.IsTrue (r.Read (), "em#2-1");
  2359. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
  2360. // /GetObject
  2361. Assert.IsTrue (r.Read (), "ego#2-1");
  2362. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego#2-2");
  2363. // /m:Items
  2364. Assert.IsTrue (r.Read (), "em#1-1");
  2365. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2366. // /t:DirectDictionaryContainer
  2367. Assert.IsTrue (r.Read (), "eo#1-1");
  2368. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2369. Assert.IsFalse (r.Read (), "end");
  2370. }
  2371. protected void Read_DirectDictionaryContainer2 (XamlReader r)
  2372. {
  2373. ReadNamespace (r, String.Empty, "http://www.domain.com/path", "ns#1");
  2374. ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
  2375. // t:DirectDictionaryContainer
  2376. Assert.IsTrue (r.Read (), "so#1-1");
  2377. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2378. var xt = new XamlType (typeof (SecondTest.ResourcesDict2), r.SchemaContext);
  2379. Assert.AreEqual (xt, r.Type, "so#1-3");
  2380. if (r is XamlXmlReader)
  2381. ReadBase (r);
  2382. // m:Items
  2383. Assert.IsTrue (r.Read (), "sm1#1");
  2384. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  2385. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm1#3");
  2386. xt = r.SchemaContext.GetXamlType (typeof (SecondTest.TestObject2));
  2387. for (int i = 0; i < 2; i++) {
  2388. // t:TestObject
  2389. Assert.IsTrue (r.Read (), "so#x-1." + i);
  2390. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
  2391. Assert.AreEqual (xt, r.Type, "so#x-3." + i);
  2392. // m:Key
  2393. Assert.IsTrue (r.Read (), "sm#y1");
  2394. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2");
  2395. Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3");
  2396. // value
  2397. Assert.IsTrue (r.Read (), "v#y-1");
  2398. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2");
  2399. Assert.AreEqual (i == 0 ? "1" : "two", r.Value, "v#y-3");
  2400. // /m:Key
  2401. Assert.IsTrue (r.Read (), "em#y-1");
  2402. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2");
  2403. // m:TestProperty
  2404. Assert.IsTrue (r.Read (), "sm#x1");
  2405. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
  2406. Assert.AreEqual (xt.GetMember ("TestProperty"), r.Member, "sm#x3");
  2407. // x:Value
  2408. Assert.IsTrue (r.Read (), "v#x-1");
  2409. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
  2410. Assert.AreEqual (i == 0 ? "1" : "two", r.Value, "v#x-3");
  2411. // /m:TestProperty
  2412. Assert.IsTrue (r.Read (), "em#x-1");
  2413. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
  2414. // /t:TestObject
  2415. Assert.IsTrue (r.Read (), "eo#x-1");
  2416. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
  2417. }
  2418. // /m:Items
  2419. Assert.IsTrue (r.Read (), "em#1-1");
  2420. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2421. // /t:DirectDictionaryContainer
  2422. Assert.IsTrue (r.Read (), "eo#1-1");
  2423. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2424. Assert.IsFalse (r.Read (), "end");
  2425. }
  2426. protected void Read_ContentPropertyContainer (XamlReader r)
  2427. {
  2428. ReadNamespace (r, String.Empty, "http://www.domain.com/path", "ns#1");
  2429. ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
  2430. // 1:: t:ContentPropertyContainer
  2431. Assert.IsTrue (r.Read (), "so#1-1");
  2432. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2433. var xt = new XamlType (typeof (SecondTest.ContentPropertyContainer), r.SchemaContext);
  2434. Assert.AreEqual (xt, r.Type, "so#1-3");
  2435. if (r is XamlXmlReader)
  2436. ReadBase (r);
  2437. // 2:: m:Items
  2438. Assert.IsTrue (r.Read (), "sm1#1");
  2439. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
  2440. Assert.AreEqual (XamlLanguage.Items, r.Member, "sm1#3");
  2441. xt = r.SchemaContext.GetXamlType (typeof (SecondTest.SimpleType));
  2442. for (int i = 0; i < 2; i++) {
  2443. // 3:: t:SimpleType
  2444. Assert.IsTrue (r.Read (), "so#x-1" + "." + i);
  2445. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2" + "." + i);
  2446. Assert.AreEqual (xt, r.Type, "so#x-3" + "." + i);
  2447. // 4:: m:Key
  2448. Assert.IsTrue (r.Read (), "sm#y1" + "." + i);
  2449. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2" + "." + i);
  2450. Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3" + "." + i);
  2451. // 4:: value
  2452. Assert.IsTrue (r.Read (), "v#y-1" + "." + i);
  2453. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2" + "." + i);
  2454. Assert.AreEqual (i == 0 ? "one" : "two", r.Value, "v#y-3" + "." + i);
  2455. // 4:: /m:Key
  2456. Assert.IsTrue (r.Read (), "em#y-1" + "." + i);
  2457. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2" + "." + i);
  2458. if (i == 0) {
  2459. // 4-2:: m:Items(ContentProperty)
  2460. Assert.IsTrue (r.Read (), "sm#x1" + "." + i);
  2461. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2" + "." + i);
  2462. Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm#x3" + "." + i);
  2463. // 5:: GetObject
  2464. Assert.IsTrue (r.Read (), "go#z-1" + "." + i);
  2465. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#z-2" + "." + i);
  2466. // 6:: m:Items(GetObject)
  2467. Assert.IsTrue (r.Read (), "smz#1" + "." + i);
  2468. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smz#2" + "." + i);
  2469. Assert.AreEqual (XamlLanguage.Items, r.Member, "smz#3" + "." + i);
  2470. for (int j = 0; j < 2; j++) {
  2471. // 7:: t:SimpleType
  2472. Assert.IsTrue (r.Read (), "soi#x-1" + "." + i + "-" + j);
  2473. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#x-2" + "." + i + "-" + j);
  2474. Assert.AreEqual (xt, r.Type, "soi#z-3" + "." + i + "-" + j);
  2475. // 7:: /t:SimpleType
  2476. Assert.IsTrue (r.Read (), "eoi#x-1" + "." + i + "-" + j);
  2477. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#x-2" + "." + i + "-" + j);
  2478. }
  2479. // 6:: /m:Items(GetObject)
  2480. Assert.IsTrue (r.Read (), "emz#x-1" + "." + i);
  2481. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emz#x-2" + "." + i);
  2482. // 5:: /GetObject
  2483. Assert.IsTrue (r.Read (), "eo#z-1" + "." + i);
  2484. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#z-2" + "." + i);
  2485. // 4:: /m:Items(ContentProperty)
  2486. Assert.IsTrue (r.Read (), "em#x1" + "." + i);
  2487. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x2" + "." + i);
  2488. // 4-2:: m:NonContentItems
  2489. Assert.IsTrue (r.Read (), "smv#1" + "." + i);
  2490. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smv#2" + "." + i);
  2491. Assert.AreEqual (xt.GetMember ("NonContentItems"), r.Member, "smv#3" + "." + i);
  2492. // 5-2:: GetObject
  2493. Assert.IsTrue (r.Read (), "go#z-1" + "." + i);
  2494. Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#v-2" + "." + i);
  2495. // 6-2:: m:Items
  2496. Assert.IsTrue (r.Read (), "smw#1" + "." + i);
  2497. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smw#2" + "." + i);
  2498. Assert.AreEqual (XamlLanguage.Items, r.Member, "smw#3" + "." + i);
  2499. for (int j = 0; j < 2; j++) {
  2500. // 7-2:: t:SimpleType
  2501. Assert.IsTrue (r.Read (), "soi2#x-1" + "." + i + "-" + j);
  2502. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi2#x-2" + "." + i + "-" + j);
  2503. Assert.AreEqual (xt, r.Type, "soi2#z-3" + "." + i + "-" + j);
  2504. // 7-2:: /t:SimpleType
  2505. Assert.IsTrue (r.Read (), "eoi2#x-1" + "." + i + "-" + j);
  2506. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi2#x-2" + "." + i + "-" + j);
  2507. }
  2508. // 6-2:: /m:Items
  2509. Assert.IsTrue (r.Read (), "emw#1" + "." + i);
  2510. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emw#2" + "." + i);
  2511. // 5-2:: /GetObject
  2512. Assert.IsTrue (r.Read (), "eo#v-1" + "." + i);
  2513. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#v-2" + "." + i);
  2514. // 4-2:: /m:NonContentItems
  2515. Assert.IsTrue (r.Read (), "emv#1" + "." + i);
  2516. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emv#2" + "." + i);
  2517. }
  2518. // 3:: /t:SimpleType
  2519. Assert.IsTrue (r.Read (), "eo#x-1" + "." + i);
  2520. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2" + "." + i);
  2521. }
  2522. // 2:: /m:Items
  2523. Assert.IsTrue (r.Read (), "em#1-1");
  2524. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
  2525. // 1:: /t:ContentPropertyContainer
  2526. Assert.IsTrue (r.Read (), "eo#1-1");
  2527. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2528. Assert.IsFalse (r.Read (), "end");
  2529. }
  2530. protected void Read_AttachedProperty (XamlReader r)
  2531. {
  2532. var at = new XamlType (typeof (Attachable), r.SchemaContext);
  2533. Assert.IsTrue (r.Read (), "ns#1-1");
  2534. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
  2535. Assert.IsNotNull (r.Namespace, "ns#1-3");
  2536. Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
  2537. var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
  2538. Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
  2539. // t:AttachedWrapper
  2540. Assert.IsTrue (r.Read (), "so#1-1");
  2541. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
  2542. var xt = new XamlType (typeof (AttachedWrapper), r.SchemaContext);
  2543. Assert.AreEqual (xt, r.Type, "so#1-3");
  2544. if (r is XamlXmlReader)
  2545. ReadBase (r);
  2546. ReadAttachedProperty (r, at.GetAttachableMember ("Foo"), "x", "x");
  2547. // m:Value
  2548. Assert.IsTrue (r.Read (), "sm#2-1");
  2549. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#sm#2-2");
  2550. Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm#2-3");
  2551. // t:Attached
  2552. Assert.IsTrue (r.Read (), "so#2-1");
  2553. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#so#2-2");
  2554. Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (Attached)), r.Type, "so#2-3");
  2555. ReadAttachedProperty (r, at.GetAttachableMember ("Foo"), "y", "y");
  2556. Assert.IsTrue (r.Read (), "eo#2-1");
  2557. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#eo#2-2");
  2558. // /m:Value
  2559. Assert.IsTrue (r.Read (), "em#2-1");
  2560. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#em#2-2");
  2561. // /t:AttachedWrapper
  2562. Assert.IsTrue (r.Read (), "eo#1-1");
  2563. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
  2564. Assert.IsFalse (r.Read (), "end");
  2565. }
  2566. void ReadAttachedProperty (XamlReader r, XamlMember xm, string value, string label)
  2567. {
  2568. Assert.IsTrue (r.Read (), label + "#1-1");
  2569. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, label + "#1-2");
  2570. Assert.AreEqual (xm, r.Member, label + "#1-3");
  2571. Assert.IsTrue (r.Read (), label + "#2-1");
  2572. Assert.AreEqual (XamlNodeType.Value, r.NodeType, label + "#2-2");
  2573. Assert.AreEqual (value, r.Value, label + "2-3");
  2574. Assert.IsTrue (r.Read (), label + "#3-1");
  2575. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, label + "#3-2");
  2576. }
  2577. protected void Read_CommonXamlPrimitive (object obj)
  2578. {
  2579. var r = new XamlObjectReader (obj);
  2580. Read_CommonXamlType (r);
  2581. Read_Initialization (r, obj);
  2582. }
  2583. // from StartMember of Initialization to EndMember
  2584. protected string Read_Initialization (XamlReader r, object comparableValue)
  2585. {
  2586. Assert.IsTrue (r.Read (), "init#1");
  2587. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "init#2");
  2588. Assert.IsNotNull (r.Member, "init#3");
  2589. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "init#3-2");
  2590. Assert.IsTrue (r.Read (), "init#4");
  2591. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "init#5");
  2592. Assert.AreEqual (typeof (string), r.Value.GetType (), "init#6");
  2593. string ret = (string) r.Value;
  2594. if (comparableValue != null)
  2595. Assert.AreEqual (comparableValue.ToString (), r.Value, "init#6-2");
  2596. Assert.IsTrue (r.Read (), "init#7");
  2597. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "init#8");
  2598. return ret;
  2599. }
  2600. protected object [] Read_AttributedArguments_String (XamlReader r, string [] argNames) // valid only for string arguments.
  2601. {
  2602. object [] ret = new object [argNames.Length];
  2603. Assert.IsTrue (r.Read (), "attarg.Arguments.Start1");
  2604. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "attarg.Arguments.Start2");
  2605. Assert.IsNotNull (r.Member, "attarg.Arguments.Start3");
  2606. Assert.AreEqual (XamlLanguage.Arguments, r.Member, "attarg.Arguments.Start4");
  2607. for (int i = 0; i < argNames.Length; i++) {
  2608. string arg = argNames [i];
  2609. Assert.IsTrue (r.Read (), "attarg.ArgStartObject1." + arg);
  2610. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "attarg.ArgStartObject2." + arg);
  2611. Assert.AreEqual (typeof (string), r.Type.UnderlyingType, "attarg.ArgStartObject3." + arg);
  2612. Assert.IsTrue (r.Read (), "attarg.ArgStartMember1." + arg);
  2613. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "attarg.ArgStartMember2." + arg);
  2614. Assert.AreEqual (XamlLanguage.Initialization, r.Member, "attarg.ArgStartMember3." + arg); // (as the argument is string here by definition)
  2615. Assert.IsTrue (r.Read (), "attarg.ArgValue1." + arg);
  2616. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "attarg.ArgValue2." + arg);
  2617. Assert.AreEqual (typeof (string), r.Value.GetType (), "attarg.ArgValue3." + arg);
  2618. ret [i] = r.Value;
  2619. Assert.IsTrue (r.Read (), "attarg.ArgEndMember1." + arg);
  2620. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "attarg.ArgEndMember2." + arg);
  2621. Assert.IsTrue (r.Read (), "attarg.ArgEndObject1." + arg);
  2622. Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "attarg.ArgEndObject2." + arg);
  2623. }
  2624. Assert.IsTrue (r.Read (), "attarg.Arguments.End1");
  2625. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "attarg.Arguments.End2");
  2626. return ret;
  2627. }
  2628. // from initial to StartObject
  2629. protected void Read_CommonXamlType (XamlObjectReader r)
  2630. {
  2631. Read_CommonXamlType (r, delegate {
  2632. Assert.IsNull (r.Instance, "ct#4");
  2633. });
  2634. }
  2635. protected void Read_CommonXamlType (XamlReader r, Action validateInstance)
  2636. {
  2637. Assert.IsTrue (r.Read (), "ct#1");
  2638. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#2");
  2639. Assert.IsNotNull (r.Namespace, "ct#3");
  2640. Assert.AreEqual ("x", r.Namespace.Prefix, "ct#3-2");
  2641. Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ct#3-3");
  2642. if (validateInstance != null)
  2643. validateInstance ();
  2644. Assert.IsTrue (r.Read (), "ct#5");
  2645. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#6");
  2646. }
  2647. // from initial to StartObject
  2648. protected void Read_CommonClrType (XamlReader r, object obj, params KeyValuePair<string,string> [] additionalNamespaces)
  2649. {
  2650. Assert.IsTrue (r.Read (), "ct#1");
  2651. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#2");
  2652. Assert.IsNotNull (r.Namespace, "ct#3");
  2653. Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ct#3-2");
  2654. Assert.AreEqual ("clr-namespace:" + obj.GetType ().Namespace + ";assembly=" + obj.GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ct#3-3");
  2655. foreach (var kvp in additionalNamespaces) {
  2656. Assert.IsTrue (r.Read (), "ct#4." + kvp.Key);
  2657. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#5." + kvp.Key);
  2658. Assert.IsNotNull (r.Namespace, "ct#6." + kvp.Key);
  2659. Assert.AreEqual (kvp.Key, r.Namespace.Prefix, "ct#6-2." + kvp.Key);
  2660. Assert.AreEqual (kvp.Value, r.Namespace.Namespace, "ct#6-3." + kvp.Key);
  2661. }
  2662. Assert.IsTrue (r.Read (), "ct#7");
  2663. Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#8");
  2664. }
  2665. protected void ReadBase (XamlReader r)
  2666. {
  2667. Assert.IsTrue (r.Read (), "sbase#1");
  2668. Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
  2669. Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
  2670. Assert.IsTrue (r.Read (), "vbase#1");
  2671. Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
  2672. Assert.IsTrue (r.Value is string, "vbase#3");
  2673. Assert.IsTrue (r.Read (), "ebase#1");
  2674. Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
  2675. }
  2676. void ReadNamespace (XamlReader r, string prefix, string ns, string label)
  2677. {
  2678. Assert.IsTrue (r.Read (), label + "-1");
  2679. Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, label + "-2");
  2680. Assert.IsNotNull (r.Namespace, label + "-3");
  2681. Assert.AreEqual (prefix, r.Namespace.Prefix, label + "-4");
  2682. Assert.AreEqual (ns, r.Namespace.Namespace, label + "-5");
  2683. }
  2684. }
  2685. }