2 // Copyright (C) 2010 Novell Inc. http://novell.com
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:
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
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.
24 using System.Collections;
25 using System.Collections.Generic;
26 using System.ComponentModel;
29 using System.Reflection;
30 using System.Windows.Markup;
32 using System.Xaml.Schema;
34 using NUnit.Framework;
36 using CategoryAttribute = NUnit.Framework.CategoryAttribute;
38 // Some test result remarks:
39 // - TypeExtension: [ConstructorArgument] -> PositionalParameters
40 // - StaticExtension: almost identical to TypeExtension
41 // - Reference: [ConstructorArgument], [ContentProperty] -> only ordinal member.
42 // - ArrayExtension: [ConstrutorArgument], [ContentProperty] -> no PositionalParameters, Items.
43 // - NullExtension: no member.
44 // - MyExtension: [ConstructorArgument] -> only ordinal members...hmm?
46 namespace MonoTests.System.Xaml
48 public partial class XamlReaderTestBase
50 protected void Read_String (XamlReader r)
52 Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
53 Assert.IsNull (r.Member, "#2");
54 Assert.IsNull (r.Namespace, "#3");
55 Assert.IsNull (r.Member, "#4");
56 Assert.IsNull (r.Type, "#5");
57 Assert.IsNull (r.Value, "#6");
59 Assert.IsTrue (r.Read (), "#11");
60 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
61 Assert.IsNotNull (r.Namespace, "#13");
62 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
63 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
65 Assert.IsTrue (r.Read (), "#21");
66 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
67 Assert.IsNotNull (r.Type, "#23");
68 Assert.AreEqual (new XamlType (typeof (string), r.SchemaContext), r.Type, "#23-2");
69 Assert.IsNull (r.Namespace, "#25");
71 if (r is XamlXmlReader)
74 Assert.IsTrue (r.Read (), "#31");
75 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
76 Assert.IsNotNull (r.Member, "#33");
77 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#33-2");
78 Assert.IsNull (r.Type, "#34");
80 Assert.IsTrue (r.Read (), "#41");
81 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
82 Assert.AreEqual ("foo", r.Value, "#43");
83 Assert.IsNull (r.Member, "#44");
85 Assert.IsTrue (r.Read (), "#51");
86 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
87 Assert.IsNull (r.Type, "#53");
88 Assert.IsNull (r.Member, "#54");
90 Assert.IsTrue (r.Read (), "#61");
91 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
92 Assert.IsNull (r.Type, "#63");
94 Assert.IsFalse (r.Read (), "#71");
95 Assert.IsTrue (r.IsEof, "#72");
98 protected void WriteNullMemberAsObject (XamlReader r, Action validateNullInstance)
100 Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
101 Assert.IsTrue (r.Read (), "#6");
102 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
103 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#7-2");
104 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#7-3");
106 Assert.IsTrue (r.Read (), "#11");
107 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
108 Assert.AreEqual ("x", r.Namespace.Prefix, "#12-2");
109 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#12-3");
111 Assert.IsTrue (r.Read (), "#16");
112 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#17");
113 var xt = new XamlType (typeof (TestClass4), r.SchemaContext);
114 Assert.AreEqual (xt, r.Type, "#17-2");
115 // Assert.IsTrue (r.Instance is TestClass4, "#17-3");
116 Assert.AreEqual (2, xt.GetAllMembers ().Count, "#17-4");
118 if (r is XamlXmlReader)
121 Assert.IsTrue (r.Read (), "#21");
122 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
123 Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#22-2");
125 Assert.IsTrue (r.Read (), "#26");
126 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#27");
127 Assert.AreEqual (XamlLanguage.Null, r.Type, "#27-2");
128 if (validateNullInstance != null)
129 validateNullInstance ();
131 Assert.IsTrue (r.Read (), "#31");
132 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#32");
134 Assert.IsTrue (r.Read (), "#36");
135 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#37");
137 Assert.IsTrue (r.Read (), "#41");
138 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#42");
139 Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#42-2");
141 Assert.IsTrue (r.Read (), "#43");
142 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#43-2");
143 Assert.AreEqual (XamlLanguage.Null, r.Type, "#43-3");
144 if (validateNullInstance != null)
145 validateNullInstance ();
147 Assert.IsTrue (r.Read (), "#44");
148 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#44-2");
150 Assert.IsTrue (r.Read (), "#46");
151 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#47");
153 Assert.IsTrue (r.Read (), "#51");
154 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#52");
156 Assert.IsFalse (r.Read (), "#56");
157 Assert.IsTrue (r.IsEof, "#57");
160 protected void StaticMember (XamlReader r)
162 Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
163 Assert.IsTrue (r.Read (), "#6");
164 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
165 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#7-2");
166 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#7-3");
168 Assert.IsTrue (r.Read (), "#11");
169 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
170 Assert.AreEqual ("x", r.Namespace.Prefix, "#12-2");
171 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#12-3");
173 Assert.IsTrue (r.Read (), "#16");
174 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#17");
175 var xt = new XamlType (typeof (TestClass5), r.SchemaContext);
176 Assert.AreEqual (xt, r.Type, "#17-2");
177 // Assert.IsTrue (r.Instance is TestClass5, "#17-3");
178 Assert.AreEqual (2, xt.GetAllMembers ().Count, "#17-4");
179 Assert.IsTrue (xt.GetAllMembers ().Any (xm => xm.Name == "Bar"), "#17-5");
180 Assert.IsTrue (xt.GetAllMembers ().Any (xm => xm.Name == "Baz"), "#17-6");
182 if (r is XamlXmlReader)
185 Assert.IsTrue (r.Read (), "#21");
186 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
187 Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#22-2");
189 Assert.IsTrue (r.Read (), "#26");
190 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#27");
191 Assert.AreEqual (XamlLanguage.Null, r.Type, "#27-2");
192 // Assert.IsNull (r.Instance, "#27-3");
194 Assert.IsTrue (r.Read (), "#31");
195 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#32");
197 Assert.IsTrue (r.Read (), "#36");
198 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#37");
199 // static Foo is not included in GetAllXembers() return value.
200 // ReadOnly is not included in GetAllMembers() return value neither.
201 // nonpublic Baz is a member, but does not appear in the reader.
203 Assert.IsTrue (r.Read (), "#51");
204 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#52");
206 Assert.IsFalse (r.Read (), "#56");
207 Assert.IsTrue (r.IsEof, "#57");
210 protected void Skip (XamlReader r)
213 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
215 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2");
217 Assert.IsTrue (r.IsEof, "#3");
220 protected void Skip2 (XamlReader r)
222 r.Read (); // NamespaceDeclaration
224 if (r is XamlXmlReader)
226 r.Read (); // Member (Initialization)
227 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#1");
229 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#2");
231 Assert.IsTrue (r.IsEof, "#3");
234 protected void Read_XmlDocument (XamlReader r)
236 for (int i = 0; i < 3; i++) {
238 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1-" + i);
242 Assert.AreEqual (new XamlType (typeof (XmlDocument), r.SchemaContext), r.Type, "#2");
244 var l = new List<XamlMember> ();
245 while (r.NodeType == XamlNodeType.StartMember) {
246 // It depends on XmlDocument's implenentation details. It fails on mono only because XmlDocument.SchemaInfo overrides both getter and setter.
247 //for (int i = 0; i < 5; i++) {
248 // Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-" + i);
252 Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Value"), "#4-1");
253 Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "InnerXml"), "#4-2");
254 Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Prefix"), "#4-3");
255 Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "PreserveWhitespace"), "#4-4");
256 Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Schemas"), "#4-5");
257 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#5");
258 Assert.IsFalse (r.Read (), "#6");
261 protected void Read_NonPrimitive (XamlReader r)
263 Assert.AreEqual (XamlNodeType.None, r.NodeType, "#1");
264 Assert.IsTrue (r.Read (), "#6");
265 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
266 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#7-2");
267 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#7-3");
269 Assert.IsTrue (r.Read (), "#11");
270 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
271 Assert.AreEqual ("x", r.Namespace.Prefix, "#12-2");
272 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#12-3");
274 Assert.IsTrue (r.Read (), "#16");
275 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#17");
276 var xt = new XamlType (typeof (TestClass3), r.SchemaContext);
277 Assert.AreEqual (xt, r.Type, "#17-2");
278 // Assert.IsTrue (r.Instance is TestClass3, "#17-3");
280 if (r is XamlXmlReader)
283 Assert.IsTrue (r.Read (), "#21");
284 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
285 Assert.AreEqual (xt.GetMember ("Nested"), r.Member, "#22-2");
287 Assert.IsTrue (r.Read (), "#26");
288 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#27");
289 Assert.AreEqual (XamlLanguage.Null, r.Type, "#27-2");
290 // Assert.IsNull (r.Instance, "#27-3");
292 Assert.IsTrue (r.Read (), "#31");
293 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#32");
295 Assert.IsTrue (r.Read (), "#36");
296 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#37");
298 Assert.IsTrue (r.Read (), "#41");
299 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#42");
301 Assert.IsFalse (r.Read (), "#46");
302 Assert.IsTrue (r.IsEof, "#47");
305 protected void Read_TypeOrTypeExtension (XamlReader r, Action validateInstance, XamlMember ctorArgMember)
307 Assert.IsTrue (r.Read (), "#11");
308 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
309 Assert.IsNotNull (r.Namespace, "#13");
310 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
311 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
312 // Assert.IsNull (r.Instance, "#14");
314 Assert.IsTrue (r.Read (), "#21");
315 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
316 Assert.IsNotNull (r.Type, "#23");
317 Assert.AreEqual (XamlLanguage.Type, r.Type, "#23-2");
318 Assert.IsNull (r.Namespace, "#25");
319 if (validateInstance != null)
322 if (r is XamlXmlReader)
325 Assert.IsTrue (r.Read (), "#31");
326 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
327 Assert.IsNotNull (r.Member, "#33");
328 Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
329 Assert.IsNull (r.Type, "#34");
330 // Assert.IsNull (r.Instance, "#35");
332 Assert.IsTrue (r.Read (), "#41");
333 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
334 Assert.IsNotNull (r.Value, "#43");
335 Assert.AreEqual ("x:Int32", r.Value, "#43-2");
336 Assert.IsNull (r.Member, "#44");
337 // Assert.IsNull (r.Instance, "#45");
339 Assert.IsTrue (r.Read (), "#51");
340 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
341 Assert.IsNull (r.Type, "#53");
342 Assert.IsNull (r.Member, "#54");
343 // Assert.IsNull (r.Instance, "#55");
345 Assert.IsTrue (r.Read (), "#61");
346 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
347 Assert.IsNull (r.Type, "#63");
349 Assert.IsFalse (r.Read (), "#71");
350 Assert.IsTrue (r.IsEof, "#72");
353 protected void Read_TypeOrTypeExtension2 (XamlReader r, Action validateInstance, XamlMember ctorArgMember)
355 Assert.IsTrue (r.Read (), "#11");
356 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
358 var defns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
360 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#13-2");
361 Assert.AreEqual (defns, r.Namespace.Namespace, "#13-3:" + r.Namespace.Prefix);
363 Assert.IsTrue (r.Read (), "#16");
364 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#17");
365 Assert.IsNotNull (r.Namespace, "#18");
366 Assert.AreEqual ("x", r.Namespace.Prefix, "#18-2");
367 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#18-3:" + r.Namespace.Prefix);
369 Assert.IsTrue (r.Read (), "#21");
370 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
371 Assert.AreEqual (new XamlType (typeof (TypeExtension), r.SchemaContext), r.Type, "#23-2");
372 if (validateInstance != null)
375 if (r is XamlXmlReader)
378 Assert.IsTrue (r.Read (), "#31");
379 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
380 Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
382 Assert.IsTrue (r.Read (), "#41");
383 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
384 Assert.AreEqual ("TestClass1", r.Value, "#43-2");
386 Assert.IsTrue (r.Read (), "#51");
387 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
389 Assert.IsTrue (r.Read (), "#61");
390 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
392 Assert.IsFalse (r.Read (), "#71");
393 Assert.IsTrue (r.IsEof, "#72");
396 protected void Read_Reference (XamlReader r)
398 Assert.IsTrue (r.Read (), "#11");
399 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
400 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
401 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
403 Assert.IsTrue (r.Read (), "#21");
404 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
405 var xt = new XamlType (typeof (Reference), r.SchemaContext);
406 Assert.AreEqual (xt, r.Type, "#23-2");
407 // Assert.IsTrue (r.Instance is Reference, "#26");
408 Assert.IsNotNull (XamlLanguage.Type.SchemaContext, "#23-3");
409 Assert.IsNotNull (r.SchemaContext, "#23-4");
410 Assert.AreNotEqual (XamlLanguage.Type.SchemaContext, r.SchemaContext, "#23-5");
411 Assert.AreNotEqual (XamlLanguage.Reference.SchemaContext, xt.SchemaContext, "#23-6");
412 Assert.AreEqual (XamlLanguage.Reference, xt, "#23-7");
414 if (r is XamlXmlReader)
417 Assert.IsTrue (r.Read (), "#31");
418 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
419 // unlike TypeExtension there is no PositionalParameters.
420 Assert.AreEqual (xt.GetMember ("Name"), r.Member, "#33-2");
422 // It is a ContentProperty (besides [ConstructorArgument])
423 Assert.IsTrue (r.Read (), "#41");
424 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
425 Assert.AreEqual ("FooBar", r.Value, "#43-2");
427 Assert.IsTrue (r.Read (), "#51");
428 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
430 Assert.IsTrue (r.Read (), "#61");
431 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
433 Assert.IsFalse (r.Read (), "#71");
434 Assert.IsTrue (r.IsEof, "#72");
437 protected void Read_NullOrNullExtension (XamlReader r, Action validateInstance)
439 Assert.IsTrue (r.Read (), "#11");
440 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
441 Assert.IsNotNull (r.Namespace, "#13");
442 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
443 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
444 // Assert.IsNull (r.Instance, "#14");
446 Assert.IsTrue (r.Read (), "#21");
447 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
448 Assert.AreEqual (new XamlType (typeof (NullExtension), r.SchemaContext), r.Type, "#23-2");
449 if (validateInstance != null)
452 if (r is XamlXmlReader)
455 Assert.IsTrue (r.Read (), "#61");
456 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
458 Assert.IsFalse (r.Read (), "#71");
459 Assert.IsTrue (r.IsEof, "#72");
462 // almost identical to TypeExtension (only type/instance difference)
463 protected void Read_StaticExtension (XamlReader r, XamlMember ctorArgMember)
465 Assert.IsTrue (r.Read (), "#11");
466 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
467 Assert.IsNotNull (r.Namespace, "#13");
468 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
469 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
470 // Assert.IsNull (r.Instance, "#14");
472 Assert.IsTrue (r.Read (), "#21");
473 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
474 Assert.AreEqual (new XamlType (typeof (StaticExtension), r.SchemaContext), r.Type, "#23-2");
475 // Assert.IsTrue (r.Instance is StaticExtension, "#26");
477 if (r is XamlXmlReader)
480 Assert.IsTrue (r.Read (), "#31");
481 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
482 Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
484 Assert.IsTrue (r.Read (), "#41");
485 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
486 Assert.AreEqual ("FooBar", r.Value, "#43-2");
488 Assert.IsTrue (r.Read (), "#51");
489 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
491 Assert.IsTrue (r.Read (), "#61");
492 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
494 Assert.IsFalse (r.Read (), "#71");
495 Assert.IsTrue (r.IsEof, "#72");
498 protected void Read_ListInt32 (XamlReader r, Action validateInstance, List<int> obj)
500 Assert.IsTrue (r.Read (), "ns#1-1");
501 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
503 var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
505 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
506 Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
508 Assert.IsTrue (r.Read (), "#11");
509 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
510 Assert.IsNotNull (r.Namespace, "#13");
511 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
512 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
514 Assert.IsTrue (r.Read (), "#21");
515 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
516 var xt = new XamlType (typeof (List<int>), r.SchemaContext);
517 Assert.AreEqual (xt, r.Type, "#23");
518 Assert.IsTrue (xt.IsCollection, "#27");
519 if (validateInstance != null)
522 // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
524 if (r is XamlXmlReader)
527 Assert.IsTrue (r.Read (), "#31");
528 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
529 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
531 Assert.IsTrue (r.Read (), "#41");
532 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
533 // The value is implementation details, not testable.
534 //Assert.AreEqual ("3", r.Value, "#43");
536 Assert.IsTrue (r.Read (), "#51");
537 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
539 if (obj.Count > 0) { // only when items exist.
541 Assert.IsTrue (r.Read (), "#72");
542 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
543 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
545 string [] values = {"5", "-3", "2147483647", "0"};
546 for (int i = 0; i < 4; i++) {
547 Assert.IsTrue (r.Read (), i + "#73");
548 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
549 Assert.IsTrue (r.Read (), i + "#74");
550 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
551 Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
552 Assert.IsTrue (r.Read (), i + "#75");
553 Assert.IsNotNull (r.Value, i + "#75-2");
554 Assert.AreEqual (values [i], r.Value, i + "#73-3");
555 Assert.IsTrue (r.Read (), i + "#74");
556 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
557 Assert.IsTrue (r.Read (), i + "#75");
558 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
561 Assert.IsTrue (r.Read (), "#81");
562 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
564 } // end of "if count > 0".
566 Assert.IsTrue (r.Read (), "#87");
567 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
569 Assert.IsFalse (r.Read (), "#89");
572 protected void Read_ListType (XamlReader r, bool isObjectReader)
574 Assert.IsTrue (r.Read (), "ns#1-1");
575 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
577 var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
578 var defns2 = "clr-namespace:System;assembly=mscorlib";
579 var defns3 = "clr-namespace:System.Xaml;assembly=System.Xaml";
581 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
582 Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
584 Assert.IsTrue (r.Read (), "ns#2-1");
585 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
586 Assert.IsNotNull (r.Namespace, "ns#2-3");
587 Assert.AreEqual ("s", r.Namespace.Prefix, "ns#2-3-2");
588 Assert.AreEqual (defns2, r.Namespace.Namespace, "ns#2-3-3");
590 Assert.IsTrue (r.Read (), "ns#3-1");
591 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
592 Assert.IsNotNull (r.Namespace, "ns#3-3");
593 Assert.AreEqual ("sx", r.Namespace.Prefix, "ns#3-3-2");
594 Assert.AreEqual (defns3, r.Namespace.Namespace, "ns#3-3-3");
596 Assert.IsTrue (r.Read (), "#11");
597 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
598 Assert.IsNotNull (r.Namespace, "#13");
599 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
600 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
602 Assert.IsTrue (r.Read (), "#21");
603 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
604 var xt = new XamlType (typeof (List<Type>), r.SchemaContext);
605 Assert.AreEqual (xt, r.Type, "#23");
606 Assert.IsTrue (xt.IsCollection, "#27");
608 if (r is XamlXmlReader)
611 Assert.IsTrue (r.Read (), "#31");
612 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
613 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
615 Assert.IsTrue (r.Read (), "#41");
616 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
617 Assert.AreEqual ("2", r.Value, "#43");
619 Assert.IsTrue (r.Read (), "#51");
620 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
622 Assert.IsTrue (r.Read (), "#72");
623 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
624 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
626 string [] values = {"x:Int32", "Dictionary(s:Type, sx:XamlType)"};
627 for (int i = 0; i < 2; i++) {
628 Assert.IsTrue (r.Read (), i + "#73");
629 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
630 Assert.IsTrue (r.Read (), i + "#74");
631 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
632 // Here XamlObjectReader and XamlXmlReader significantly differs. (Lucky we can make this test conditional so simply)
634 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, i + "#74-3");
636 Assert.AreEqual (XamlLanguage.Type.GetMember ("Type"), r.Member, i + "#74-3");
637 Assert.IsTrue (r.Read (), i + "#75");
638 Assert.IsNotNull (r.Value, i + "#75-2");
639 Assert.AreEqual (values [i], r.Value, i + "#73-3");
640 Assert.IsTrue (r.Read (), i + "#74");
641 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
642 Assert.IsTrue (r.Read (), i + "#75");
643 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
646 Assert.IsTrue (r.Read (), "#81");
647 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
649 Assert.IsTrue (r.Read (), "#87");
650 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
652 Assert.IsFalse (r.Read (), "#89");
655 protected void Read_ListArray (XamlReader r)
657 Assert.IsTrue (r.Read (), "ns#1-1");
658 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
660 var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
661 var defns2 = "clr-namespace:System;assembly=mscorlib";
662 var defns3 = "clr-namespace:System.Xaml;assembly=System.Xaml";
664 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
665 Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
667 Assert.IsTrue (r.Read (), "ns#2-1");
668 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
669 Assert.IsNotNull (r.Namespace, "ns#2-3");
670 Assert.AreEqual ("s", r.Namespace.Prefix, "ns#2-3-2");
671 Assert.AreEqual (defns2, r.Namespace.Namespace, "ns#2-3-3");
673 Assert.IsTrue (r.Read (), "#11");
674 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
675 Assert.IsNotNull (r.Namespace, "#13");
676 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
677 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
679 Assert.IsTrue (r.Read (), "#21");
680 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
681 var xt = new XamlType (typeof (List<Array>), r.SchemaContext);
682 Assert.AreEqual (xt, r.Type, "#23");
683 Assert.IsTrue (xt.IsCollection, "#27");
685 if (r is XamlXmlReader)
688 Assert.IsTrue (r.Read (), "#31");
689 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
690 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
692 Assert.IsTrue (r.Read (), "#41");
693 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
694 Assert.AreEqual ("2", r.Value, "#43");
696 Assert.IsTrue (r.Read (), "#51");
697 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
699 Assert.IsTrue (r.Read (), "#72");
700 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
701 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
703 string [] values = {"x:Int32", "x:String"};
704 for (int i = 0; i < 2; i++) {
705 Assert.IsTrue (r.Read (), i + "#73");
706 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
707 Assert.AreEqual (XamlLanguage.Array, r.Type, i + "#73-3");
708 Assert.IsTrue (r.Read (), i + "#74");
709 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
710 Assert.AreEqual (XamlLanguage.Array.GetMember ("Type"), r.Member, i + "#74-3");
711 Assert.IsTrue (r.Read (), i + "#75");
712 Assert.IsNotNull (r.Value, i + "#75-2");
713 Assert.AreEqual (values [i], r.Value, i + "#73-3");
714 Assert.IsTrue (r.Read (), i + "#74");
715 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
717 Assert.IsTrue (r.Read (), i + "#75");
718 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#75-2");
719 Assert.AreEqual (XamlLanguage.Array.GetMember ("Items"), r.Member, i + "#75-3");
720 Assert.IsTrue (r.Read (), i + "#75-4");
721 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, i + "#75-5");
722 Assert.IsTrue (r.Read (), i + "#75-7");
723 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#75-8");
724 Assert.AreEqual (XamlLanguage.Items, r.Member, i + "#75-9");
726 for (int j = 0; j < 3; j++) {
727 Assert.IsTrue (r.Read (), i + "#76-" + j);
728 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#76-2"+ "-" + j);
729 Assert.IsTrue (r.Read (), i + "#76-3"+ "-" + j);
730 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#76-4"+ "-" + j);
731 Assert.IsTrue (r.Read (), i + "#76-5"+ "-" + j);
732 Assert.AreEqual (XamlNodeType.Value, r.NodeType, i + "#76-6"+ "-" + j);
733 Assert.IsTrue (r.Read (), i + "#76-7"+ "-" + j);
734 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#76-8"+ "-" + j);
735 Assert.IsTrue (r.Read (), i + "#76-9"+ "-" + j);
736 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#76-10"+ "-" + j);
739 Assert.IsTrue (r.Read (), i + "#77");
740 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#77-2");
742 Assert.IsTrue (r.Read (), i + "#78");
743 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#78-2");
745 Assert.IsTrue (r.Read (), i + "#79");
746 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#79-2");
748 Assert.IsTrue (r.Read (), i + "#80");
749 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#80-2");
752 Assert.IsTrue (r.Read (), "#81");
753 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
755 Assert.IsTrue (r.Read (), "#87");
756 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
758 Assert.IsFalse (r.Read (), "#89");
761 protected void Read_ArrayList (XamlReader r)
763 Assert.IsTrue (r.Read (), "ns#1-1");
764 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
766 var defns = "clr-namespace:System.Collections;assembly=mscorlib";
768 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
769 Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
771 Assert.IsTrue (r.Read (), "#11");
772 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
773 Assert.IsNotNull (r.Namespace, "#13");
774 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
775 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
777 Assert.IsTrue (r.Read (), "#21");
778 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
779 var xt = new XamlType (typeof (ArrayList), r.SchemaContext);
780 Assert.AreEqual (xt, r.Type, "#23");
781 // Assert.AreEqual (obj, r.Instance, "#26");
782 Assert.IsTrue (xt.IsCollection, "#27");
784 if (r is XamlXmlReader)
787 // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
789 Assert.IsTrue (r.Read (), "#31");
790 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
791 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
793 Assert.IsTrue (r.Read (), "#41");
794 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
795 // The value is implementation details, not testable.
796 //Assert.AreEqual ("3", r.Value, "#43");
798 Assert.IsTrue (r.Read (), "#51");
799 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
801 Assert.IsTrue (r.Read (), "#72");
802 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
803 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
805 string [] values = {"5", "-3", "0"};
806 for (int i = 0; i < 3; i++) {
807 Assert.IsTrue (r.Read (), i + "#73");
808 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
809 Assert.IsTrue (r.Read (), i + "#74");
810 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
811 Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
812 Assert.IsTrue (r.Read (), i + "#75");
813 Assert.IsNotNull (r.Value, i + "#75-2");
814 Assert.AreEqual (values [i], r.Value, i + "#73-3");
815 Assert.IsTrue (r.Read (), i + "#74");
816 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
817 Assert.IsTrue (r.Read (), i + "#75");
818 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
821 Assert.IsTrue (r.Read (), "#81");
822 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
824 Assert.IsTrue (r.Read (), "#87");
825 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88");
827 Assert.IsFalse (r.Read (), "#89");
830 protected void Read_ArrayOrArrayExtensionOrMyArrayExtension (XamlReader r, Action validateInstance, Type extType)
832 if (extType == typeof (MyArrayExtension)) {
833 Assert.IsTrue (r.Read (), "#1");
834 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#2");
835 Assert.IsNotNull (r.Namespace, "#3");
836 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#3-2");
838 Assert.IsTrue (r.Read (), "#11");
839 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
840 Assert.IsNotNull (r.Namespace, "#13");
841 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
842 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
844 Assert.IsTrue (r.Read (), "#21");
845 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
846 var xt = new XamlType (extType, r.SchemaContext);
847 Assert.AreEqual (xt, r.Type, "#23");
848 if (validateInstance != null)
851 if (r is XamlXmlReader)
854 // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
856 Assert.IsTrue (r.Read (), "#31");
857 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
858 Assert.AreEqual (xt.GetMember ("Type"), r.Member, "#33");
860 Assert.IsTrue (r.Read (), "#41");
861 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
862 Assert.AreEqual ("x:Int32", r.Value, "#43");
864 Assert.IsTrue (r.Read (), "#51");
865 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
867 Assert.IsTrue (r.Read (), "#61");
868 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
869 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
871 Assert.IsTrue (r.Read (), "#71");
872 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "#71-2");
873 Assert.IsNull (r.Type, "#71-3");
874 Assert.IsNull (r.Member, "#71-4");
875 Assert.IsNull (r.Value, "#71-5");
877 Assert.IsTrue (r.Read (), "#72");
878 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
879 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
881 string [] values = {"5", "-3", "0"};
882 for (int i = 0; i < 3; i++) {
883 Assert.IsTrue (r.Read (), i + "#73");
884 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
885 Assert.IsTrue (r.Read (), i + "#74");
886 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
887 Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
888 Assert.IsTrue (r.Read (), i + "#75");
889 Assert.IsNotNull (r.Value, i + "#75-2");
890 Assert.AreEqual (values [i], r.Value, i + "#73-3");
891 Assert.IsTrue (r.Read (), i + "#74");
892 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
893 Assert.IsTrue (r.Read (), i + "#75");
894 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
897 Assert.IsTrue (r.Read (), "#81");
898 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
900 Assert.IsTrue (r.Read (), "#83");
901 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#84"); // GetObject
903 Assert.IsTrue (r.Read (), "#85");
904 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#86"); // ArrayExtension.Items
906 Assert.IsTrue (r.Read (), "#87");
907 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ArrayExtension
909 Assert.IsFalse (r.Read (), "#89");
912 // It gives Type member, not PositionalParameters... and no Items member here.
913 protected void Read_ArrayExtension2 (XamlReader r)
915 Assert.IsTrue (r.Read (), "#11");
916 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
917 Assert.IsNotNull (r.Namespace, "#13");
918 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
919 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
920 // Assert.IsNull (r.Instance, "#14");
922 Assert.IsTrue (r.Read (), "#21");
923 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
924 var xt = new XamlType (typeof (ArrayExtension), r.SchemaContext);
925 Assert.AreEqual (xt, r.Type, "#23-2");
926 // Assert.IsTrue (r.Instance is ArrayExtension, "#26");
928 if (r is XamlXmlReader)
931 Assert.IsTrue (r.Read (), "#31");
932 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
933 Assert.AreEqual (xt.GetMember ("Type"), r.Member, "#33-2");
935 Assert.IsTrue (r.Read (), "#41");
936 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
937 Assert.AreEqual ("x:Int32", r.Value, "#43-2");
939 Assert.IsTrue (r.Read (), "#51");
940 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
942 Assert.IsTrue (r.Read (), "#61");
943 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
945 Assert.IsFalse (r.Read (), "#71");
946 Assert.IsTrue (r.IsEof, "#72");
949 protected void Read_CustomMarkupExtension (XamlReader r)
952 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
954 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1-2");
956 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
957 Assert.IsFalse (r.IsEof, "#1");
960 if (r is XamlXmlReader)
964 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#2-1");
965 Assert.IsFalse (r.IsEof, "#2-2");
966 Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#2-3");
968 Assert.IsTrue (r.Read (), "#2-4");
969 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#2-5");
970 Assert.AreEqual ("v2", r.Value, "#2-6");
972 Assert.IsTrue (r.Read (), "#2-7");
973 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#2-8");
976 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-1");
977 Assert.IsFalse (r.IsEof, "#3-2");
978 Assert.AreEqual (xt.GetMember ("Baz"), r.Member, "#3-3");
980 Assert.IsTrue (r.Read (), "#3-4");
981 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#3-5");
982 Assert.AreEqual ("v7", r.Value, "#3-6");
984 Assert.IsTrue (r.Read (), "#3-7");
985 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#3-8");
988 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#4-1");
989 Assert.IsFalse (r.IsEof, "#4-2");
990 Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#4-3");
991 Assert.IsTrue (r.Read (), "#4-4");
992 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#4-5");
993 Assert.AreEqual ("x:Int32", r.Value, "#4-6");
995 Assert.IsTrue (r.Read (), "#4-7");
996 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#4-8");
998 Assert.IsTrue (r.Read (), "#5");
999 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#5-2");
1001 Assert.IsFalse (r.Read (), "#6");
1004 protected void Read_CustomMarkupExtension2 (XamlReader r)
1007 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
1008 r.Read (); // note that there wasn't another NamespaceDeclaration.
1009 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
1011 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension2)), xt, "#2");
1013 if (r is XamlXmlReader)
1016 Assert.IsTrue (r.Read (), "#3");
1017 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
1018 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
1019 Assert.IsTrue (r.Read (), "#5");
1020 Assert.AreEqual ("MonoTests.System.Xaml.MyExtension2", r.Value, "#6");
1021 Assert.IsTrue (r.Read (), "#7"); // EndMember
1022 Assert.IsTrue (r.Read (), "#8"); // EndObject
1023 Assert.IsFalse (r.Read (), "#9");
1026 protected void Read_CustomMarkupExtension3 (XamlReader r)
1029 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
1030 r.Read (); // note that there wasn't another NamespaceDeclaration.
1031 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
1033 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension3)), xt, "#2");
1035 if (r is XamlXmlReader)
1038 Assert.IsTrue (r.Read (), "#3");
1039 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
1040 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
1041 Assert.IsTrue (r.Read (), "#5");
1042 Assert.AreEqual ("MonoTests.System.Xaml.MyExtension3", r.Value, "#6");
1043 Assert.IsTrue (r.Read (), "#7"); // EndMember
1044 Assert.IsTrue (r.Read (), "#8"); // EndObject
1045 Assert.IsFalse (r.Read (), "#9");
1048 protected void Read_CustomMarkupExtension4 (XamlReader r)
1051 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
1052 r.Read (); // note that there wasn't another NamespaceDeclaration.
1053 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
1055 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension4)), xt, "#2");
1057 if (r is XamlXmlReader)
1060 Assert.IsTrue (r.Read (), "#3");
1061 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
1062 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
1063 Assert.IsTrue (r.Read (), "#5");
1064 Assert.AreEqual ("MonoTests.System.Xaml.MyExtension4", r.Value, "#6");
1065 Assert.IsTrue (r.Read (), "#7"); // EndMember
1066 Assert.IsTrue (r.Read (), "#8"); // EndObject
1067 Assert.IsFalse (r.Read (), "#9");
1070 protected void Read_CustomMarkupExtension5 (XamlReader r)
1073 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
1074 r.Read (); // note that there wasn't another NamespaceDeclaration.
1075 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
1077 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension5)), xt, "#2");
1079 if (r is XamlXmlReader)
1082 Assert.IsTrue (r.Read (), "#3");
1083 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
1084 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#4");
1085 Assert.IsTrue (r.Read (), "#5");
1086 Assert.AreEqual ("foo", r.Value, "#6");
1087 Assert.IsTrue (r.Read (), "#7");
1088 Assert.AreEqual ("bar", r.Value, "#8");
1089 Assert.IsTrue (r.Read (), "#9");
1090 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#10");
1091 Assert.IsTrue (r.Read (), "#11");
1092 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#12");
1093 Assert.IsFalse (r.Read (), "#13");
1096 protected void Read_CustomMarkupExtension6 (XamlReader r)
1099 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
1100 r.Read (); // note that there wasn't another NamespaceDeclaration.
1101 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
1103 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension6)), xt, "#2");
1105 if (r is XamlXmlReader)
1108 Assert.IsTrue (r.Read (), "#3");
1109 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
1110 Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#4"); // this is the difference between MyExtension5 and MyExtension6: it outputs constructor arguments as normal members
1111 Assert.IsTrue (r.Read (), "#5");
1112 Assert.AreEqual ("foo", r.Value, "#6");
1113 Assert.IsTrue (r.Read (), "#7"); // EndMember
1114 Assert.IsTrue (r.Read (), "#8"); // EndObject
1115 Assert.IsFalse (r.Read (), "#9");
1118 protected void Read_ArgumentAttributed (XamlReader r, object obj)
1120 Read_CommonClrType (r, obj, new KeyValuePair<string,string> ("x", XamlLanguage.Xaml2006Namespace));
1122 if (r is XamlXmlReader)
1125 var args = Read_AttributedArguments_String (r, new string [] {"arg1", "arg2"});
1126 Assert.AreEqual ("foo", args [0], "#1");
1127 Assert.AreEqual ("bar", args [1], "#2");
1130 protected void Read_Dictionary (XamlReader r)
1132 Assert.IsTrue (r.Read (), "ns#1-1");
1133 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1134 Assert.IsNotNull (r.Namespace, "ns#1-3");
1135 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
1136 Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "ns#1-5");
1138 Assert.IsTrue (r.Read (), "ns#2-1");
1139 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1140 Assert.IsNotNull (r.Namespace, "ns#2-3");
1141 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
1142 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
1144 Assert.IsTrue (r.Read (), "so#1-1");
1145 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1146 var xt = new XamlType (typeof (Dictionary<string,object>), r.SchemaContext);
1147 Assert.AreEqual (xt, r.Type, "so#1-3");
1148 // Assert.AreEqual (obj, r.Instance, "so#1-4");
1150 if (r is XamlXmlReader)
1153 Assert.IsTrue (r.Read (), "smitems#1");
1154 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
1155 Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
1157 for (int i = 0; i < 2; i++) {
1160 Assert.IsTrue (r.Read (), "soi#1-1." + i);
1161 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#1-2." + i);
1162 var xt2 = new XamlType (typeof (double), r.SchemaContext);
1163 Assert.AreEqual (xt2, r.Type, "soi#1-3." + i);
1165 Assert.IsTrue (r.Read (), "smi#1-1." + i);
1166 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#1-2." + i);
1167 Assert.AreEqual (XamlLanguage.Key, r.Member, "smi#1-3." + i);
1169 Assert.IsTrue (r.Read (), "svi#1-1." + i);
1170 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#1-2." + i);
1171 Assert.AreEqual (i == 0 ? "Foo" : "Bar", r.Value, "svi#1-3." + i);
1173 Assert.IsTrue (r.Read (), "emi#1-1." + i);
1174 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#1-2." + i);
1176 Assert.IsTrue (r.Read (), "smi#2-1." + i);
1177 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#2-2." + i);
1178 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "smi#2-3." + i);
1180 Assert.IsTrue (r.Read (), "svi#2-1." + i);
1181 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#2-2." + i);
1182 Assert.AreEqual (i == 0 ? "5" : "-6.5", r.Value, "svi#2-3." + i); // converted to string(!)
1184 Assert.IsTrue (r.Read (), "emi#2-1." + i);
1185 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#2-2." + i);
1187 Assert.IsTrue (r.Read (), "eoi#1-1." + i);
1188 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#1-2." + i);
1192 Assert.IsTrue (r.Read (), "emitems#1");
1193 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emitems#2"); // XamlLanguage.Items
1195 Assert.IsTrue (r.Read (), "eo#1-1");
1196 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2"); // Dictionary
1198 Assert.IsFalse (r.Read (), "end");
1201 protected void Read_Dictionary2 (XamlReader r, XamlMember ctorArgMember)
1203 Assert.IsTrue (r.Read (), "ns#1-1");
1204 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1205 Assert.IsNotNull (r.Namespace, "ns#1-3");
1206 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
1207 Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "ns#1-5");
1209 Assert.IsTrue (r.Read (), "ns#2-1");
1210 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1211 Assert.IsNotNull (r.Namespace, "ns#2-3");
1212 Assert.AreEqual ("s", r.Namespace.Prefix, "ns#2-4");
1213 Assert.AreEqual ("clr-namespace:System;assembly=mscorlib", r.Namespace.Namespace, "ns#2-5");
1215 Assert.IsTrue (r.Read (), "ns#3-1");
1216 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
1217 Assert.IsNotNull (r.Namespace, "ns#3-3");
1218 Assert.AreEqual ("sx", r.Namespace.Prefix, "ns#3-4");
1219 Assert.AreEqual ("clr-namespace:System.Xaml;assembly=System.Xaml", r.Namespace.Namespace, "ns#3-5");
1221 Assert.IsTrue (r.Read (), "ns#4-1");
1222 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#4-2");
1223 Assert.IsNotNull (r.Namespace, "ns#4-3");
1224 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#4-4");
1225 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#4-5");
1227 Assert.IsTrue (r.Read (), "so#1-1");
1228 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1229 var xt = new XamlType (typeof (Dictionary<string,Type>), r.SchemaContext);
1230 Assert.AreEqual (xt, r.Type, "so#1-3");
1231 // Assert.AreEqual (obj, r.Instance, "so#1-4");
1233 if (r is XamlXmlReader)
1236 Assert.IsTrue (r.Read (), "smitems#1");
1237 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
1238 Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
1240 for (int i = 0; i < 2; i++) {
1243 Assert.IsTrue (r.Read (), "soi#1-1." + i);
1244 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#1-2." + i);
1245 var xt2 = XamlLanguage.Type;
1246 Assert.AreEqual (xt2, r.Type, "soi#1-3." + i);
1248 if (r is XamlObjectReader) {
1249 Read_Dictionary2_ConstructorArgument (r, ctorArgMember, i);
1250 Read_Dictionary2_Key (r, i);
1252 Read_Dictionary2_Key (r, i);
1253 Read_Dictionary2_ConstructorArgument (r, ctorArgMember, i);
1256 Assert.IsTrue (r.Read (), "eoi#1-1." + i);
1257 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#1-2." + i);
1261 Assert.IsTrue (r.Read (), "emitems#1");
1262 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emitems#2"); // XamlLanguage.Items
1264 Assert.IsTrue (r.Read (), "eo#1-1");
1265 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2"); // Dictionary
1267 Assert.IsFalse (r.Read (), "end");
1270 void Read_Dictionary2_ConstructorArgument (XamlReader r, XamlMember ctorArgMember, int i)
1272 Assert.IsTrue (r.Read (), "smi#1-1." + i);
1273 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#1-2." + i);
1274 Assert.AreEqual (ctorArgMember, r.Member, "smi#1-3." + i);
1276 Assert.IsTrue (r.Read (), "svi#1-1." + i);
1277 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#1-2." + i);
1278 Assert.AreEqual (i == 0 ? "x:Int32" : "Dictionary(s:Type, sx:XamlType)", r.Value, "svi#1-3." + i);
1280 Assert.IsTrue (r.Read (), "emi#1-1." + i);
1281 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#1-2." + i);
1284 void Read_Dictionary2_Key (XamlReader r, int i)
1286 Assert.IsTrue (r.Read (), "smi#2-1." + i);
1287 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#2-2." + i);
1288 Assert.AreEqual (XamlLanguage.Key, r.Member, "smi#2-3." + i);
1290 Assert.IsTrue (r.Read (), "svi#2-1." + i);
1291 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#2-2." + i);
1292 Assert.AreEqual (i == 0 ? "Foo" : "Bar", r.Value, "svi#2-3." + i);
1294 Assert.IsTrue (r.Read (), "emi#2-1." + i);
1295 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#2-2." + i);
1298 protected void PositionalParameters1 (XamlReader r)
1300 // ns1 > T:PositionalParametersClass1 > M:_PositionalParameters > foo > 5 > EM:_PositionalParameters > ET:PositionalParametersClass1
1302 Assert.IsTrue (r.Read (), "ns#1-1");
1303 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1304 Assert.IsNotNull (r.Namespace, "ns#1-3");
1305 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
1306 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1308 Assert.IsTrue (r.Read (), "so#1-1");
1309 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1310 var xt = new XamlType (typeof (PositionalParametersClass1), r.SchemaContext);
1311 Assert.AreEqual (xt, r.Type, "so#1-3");
1312 // Assert.AreEqual (obj, r.Instance, "so#1-4");
1314 if (r is XamlXmlReader)
1317 Assert.IsTrue (r.Read (), "sposprm#1");
1318 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
1319 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sposprm#3");
1321 Assert.IsTrue (r.Read (), "sva#1-1");
1322 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#1-2");
1323 Assert.AreEqual ("foo", r.Value, "sva#1-3");
1325 Assert.IsTrue (r.Read (), "sva#2-1");
1326 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#2-2");
1327 Assert.AreEqual ("5", r.Value, "sva#2-3");
1329 Assert.IsTrue (r.Read (), "eposprm#1");
1330 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eposprm#2"); // XamlLanguage.PositionalParameters
1332 Assert.IsTrue (r.Read (), "eo#1-1");
1333 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1335 Assert.IsFalse (r.Read (), "end");
1338 protected void PositionalParameters2 (XamlReader r)
1340 // ns1 > T:PositionalParametersWrapper > M:Body > T:PositionalParametersClass1 > M:_PositionalParameters > foo > 5 > EM:_PositionalParameters > ET:PositionalParametersClass1
1342 Assert.IsTrue (r.Read (), "ns#1-1");
1343 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1344 Assert.IsNotNull (r.Namespace, "ns#1-3");
1345 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
1346 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1348 Assert.IsTrue (r.Read (), "so#1-1");
1349 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1350 var xt = new XamlType (typeof (PositionalParametersWrapper), r.SchemaContext);
1351 Assert.AreEqual (xt, r.Type, "so#1-3");
1352 // Assert.AreEqual (obj, r.Instance, "so#1-4");
1354 if (r is XamlXmlReader)
1357 Assert.IsTrue (r.Read (), "sm#1-1");
1358 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
1359 Assert.AreEqual (xt.GetMember ("Body"), r.Member, "sm#1-3");
1361 xt = new XamlType (typeof (PositionalParametersClass1), r.SchemaContext);
1362 Assert.IsTrue (r.Read (), "so#2-1");
1363 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
1364 Assert.AreEqual (xt, r.Type, "so#2-3");
1365 // Assert.AreEqual (obj.Body, r.Instance, "so#2-4");
1367 Assert.IsTrue (r.Read (), "sposprm#1");
1368 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
1369 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sposprm#3");
1371 Assert.IsTrue (r.Read (), "sva#1-1");
1372 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#1-2");
1373 Assert.AreEqual ("foo", r.Value, "sva#1-3");
1375 Assert.IsTrue (r.Read (), "sva#2-1");
1376 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#2-2");
1377 Assert.AreEqual ("5", r.Value, "sva#2-3");
1379 Assert.IsTrue (r.Read (), "eposprm#1");
1380 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eposprm#2"); // XamlLanguage.PositionalParameters
1382 Assert.IsTrue (r.Read (), "eo#2-1");
1383 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
1385 Assert.IsTrue (r.Read (), "em#1-1");
1386 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eo#1-2");
1388 Assert.IsTrue (r.Read (), "eo#1-1");
1389 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1391 Assert.IsFalse (r.Read (), "end");
1394 protected void ComplexPositionalParameters (XamlReader r)
1396 Assert.IsTrue (r.Read (), "ns#1-1");
1397 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1398 Assert.IsNotNull (r.Namespace, "ns#1-3");
1399 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
1400 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1402 Assert.IsTrue (r.Read (), "ns#2-1");
1403 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1404 Assert.IsNotNull (r.Namespace, "ns#2-3");
1405 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
1406 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
1408 Assert.IsTrue (r.Read (), "so#1-1");
1409 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1410 var xt = new XamlType (typeof (ComplexPositionalParameterWrapper), r.SchemaContext);
1411 Assert.AreEqual (xt, r.Type, "so#1-3");
1412 // Assert.AreEqual (obj, r.Instance, "so#1-4");
1414 if (r is XamlXmlReader)
1417 Assert.IsTrue (r.Read (), "sm#1-1");
1418 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
1419 Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sm#1-3");
1421 xt = r.SchemaContext.GetXamlType (typeof (ComplexPositionalParameterClass));
1422 Assert.IsTrue (r.Read (), "so#2-1");
1423 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
1424 Assert.AreEqual (xt, r.Type, "so#2-3");
1425 // Assert.AreEqual (obj.Param, r.Instance, "so#2-4");
1427 Assert.IsTrue (r.Read (), "sarg#1");
1428 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sarg#2");
1429 Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sarg#3");
1431 Assert.IsTrue (r.Read (), "so#3-1");
1432 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2");
1433 xt = r.SchemaContext.GetXamlType (typeof (ComplexPositionalParameterValue));
1434 Assert.AreEqual (xt, r.Type, "so#3-3");
1436 Assert.IsTrue (r.Read (), "sm#3-1");
1437 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
1438 Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "sm#3-3");
1439 Assert.IsTrue (r.Read (), "v#3-1");
1440 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#3-2");
1441 Assert.AreEqual ("foo", r.Value, "v#3-3");
1443 Assert.IsTrue (r.Read (), "em#3-1");
1444 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
1445 Assert.IsTrue (r.Read (), "eo#3-1");
1446 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
1448 Assert.IsTrue (r.Read (), "earg#1");
1449 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "earg#2"); // XamlLanguage.Arguments
1451 Assert.IsTrue (r.Read (), "eo#2-1");
1452 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
1454 Assert.IsTrue (r.Read (), "em#1-1");
1455 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eo#1-2");
1457 Assert.IsTrue (r.Read (), "eo#1-1");
1458 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1460 Assert.IsFalse (r.Read (), "end");
1463 protected void Read_ListWrapper (XamlReader r)
1465 Assert.IsTrue (r.Read (), "#1");
1466 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#2");
1467 Assert.IsNotNull (r.Namespace, "#3");
1468 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#3-2");
1470 Assert.IsTrue (r.Read (), "#11");
1471 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
1472 Assert.IsNotNull (r.Namespace, "#13");
1473 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
1474 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
1476 Assert.IsTrue (r.Read (), "#21");
1477 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
1478 var xt = new XamlType (typeof (ListWrapper), r.SchemaContext);
1479 Assert.AreEqual (xt, r.Type, "#23");
1480 // Assert.AreEqual (obj, r.Instance, "#26");
1482 if (r is XamlXmlReader)
1485 Assert.IsTrue (r.Read (), "#61");
1486 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
1487 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
1489 Assert.IsTrue (r.Read (), "#71");
1490 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "#71-2");
1491 Assert.IsNull (r.Type, "#71-3");
1492 Assert.IsNull (r.Member, "#71-4");
1493 Assert.IsNull (r.Value, "#71-5");
1495 Assert.IsTrue (r.Read (), "#72");
1496 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
1497 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
1499 string [] values = {"5", "-3", "0"};
1500 for (int i = 0; i < 3; i++) {
1501 Assert.IsTrue (r.Read (), i + "#73");
1502 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
1503 Assert.IsTrue (r.Read (), i + "#74");
1504 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
1505 Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
1506 Assert.IsTrue (r.Read (), i + "#75");
1507 Assert.IsNotNull (r.Value, i + "#75-2");
1508 Assert.AreEqual (values [i], r.Value, i + "#73-3");
1509 Assert.IsTrue (r.Read (), i + "#74");
1510 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
1511 Assert.IsTrue (r.Read (), i + "#75");
1512 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
1515 Assert.IsTrue (r.Read (), "#81");
1516 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
1518 Assert.IsTrue (r.Read (), "#83");
1519 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#84"); // GetObject
1521 Assert.IsTrue (r.Read (), "#85");
1522 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#86"); // ListWrapper.Items
1524 Assert.IsTrue (r.Read (), "#87");
1525 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ListWrapper
1527 Assert.IsFalse (r.Read (), "#89");
1530 protected void Read_ListWrapper2 (XamlReader r)
1532 Assert.IsTrue (r.Read (), "#1");
1533 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#2");
1534 Assert.IsNotNull (r.Namespace, "#3");
1535 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#3-2");
1537 Assert.IsTrue (r.Read (), "#6");
1538 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#7");
1539 Assert.IsNotNull (r.Namespace, "#8");
1540 Assert.AreEqual ("scg", r.Namespace.Prefix, "#8-2");
1541 Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "#8-3");
1543 Assert.IsTrue (r.Read (), "#11");
1544 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
1545 Assert.IsNotNull (r.Namespace, "#13");
1546 Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
1547 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
1549 Assert.IsTrue (r.Read (), "#21");
1550 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
1551 var xt = new XamlType (typeof (ListWrapper2), r.SchemaContext);
1552 Assert.AreEqual (xt, r.Type, "#23");
1553 // Assert.AreEqual (obj, r.Instance, "#26");
1555 if (r is XamlXmlReader)
1558 Assert.IsTrue (r.Read (), "#61");
1559 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
1560 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
1562 Assert.IsTrue (r.Read (), "#71");
1563 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#71-2");
1564 xt = r.SchemaContext.GetXamlType (typeof (List<int>));
1565 Assert.AreEqual (xt, r.Type, "#71-3");
1566 Assert.IsNull (r.Member, "#71-4");
1567 Assert.IsNull (r.Value, "#71-5");
1570 Assert.IsTrue (r.Read (), "#31");
1571 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
1572 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
1574 Assert.IsTrue (r.Read (), "#41");
1575 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
1576 // The value is implementation details, not testable.
1577 //Assert.AreEqual ("3", r.Value, "#43");
1579 Assert.IsTrue (r.Read (), "#51");
1580 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
1583 Assert.IsTrue (r.Read (), "#72");
1584 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
1585 Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
1587 string [] values = {"5", "-3", "0"};
1588 for (int i = 0; i < 3; i++) {
1589 Assert.IsTrue (r.Read (), i + "#73");
1590 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
1591 Assert.IsTrue (r.Read (), i + "#74");
1592 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
1593 Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
1594 Assert.IsTrue (r.Read (), i + "#75");
1595 Assert.IsNotNull (r.Value, i + "#75-2");
1596 Assert.AreEqual (values [i], r.Value, i + "#73-3");
1597 Assert.IsTrue (r.Read (), i + "#74");
1598 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
1599 Assert.IsTrue (r.Read (), i + "#75");
1600 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
1603 Assert.IsTrue (r.Read (), "#81");
1604 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
1606 Assert.IsTrue (r.Read (), "#83");
1607 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#84"); // StartObject(of List<int>)
1609 Assert.IsTrue (r.Read (), "#85");
1610 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#86"); // ListWrapper.Items
1612 Assert.IsTrue (r.Read (), "#87");
1613 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ListWrapper
1615 Assert.IsFalse (r.Read (), "#89");
1618 protected void Read_ContentIncluded (XamlReader r)
1620 Assert.IsTrue (r.Read (), "ns#1-1");
1621 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1622 Assert.IsNotNull (r.Namespace, "ns#1-3");
1623 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-4");
1624 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1626 Assert.IsTrue (r.Read (), "so#1-1");
1627 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1628 var xt = new XamlType (typeof (ContentIncludedClass), r.SchemaContext);
1629 Assert.AreEqual (xt, r.Type, "so#1-3");
1631 if (r is XamlXmlReader)
1634 Assert.IsTrue (r.Read (), "sposprm#1");
1635 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
1636 Assert.AreEqual (xt.GetMember ("Content"), r.Member, "sposprm#3");
1638 Assert.IsTrue (r.Read (), "sva#1-1");
1639 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "sva#1-2");
1640 Assert.AreEqual ("foo", r.Value, "sva#1-3");
1642 Assert.IsTrue (r.Read (), "eposprm#1");
1643 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eposprm#2");
1645 Assert.IsTrue (r.Read (), "eo#1-1");
1646 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1648 Assert.IsFalse (r.Read (), "end");
1651 protected void Read_PropertyDefinition (XamlReader r)
1653 Assert.IsTrue (r.Read (), "ns#1-1");
1654 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1655 Assert.IsNotNull (r.Namespace, "ns#1-3");
1656 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#1-4");
1657 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#1-5");
1659 Assert.IsTrue (r.Read (), "so#1-1");
1660 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1661 var xt = new XamlType (typeof (PropertyDefinition), r.SchemaContext);
1662 Assert.AreEqual (xt, r.Type, "so#1-3");
1664 if (r is XamlXmlReader)
1667 Assert.IsTrue (r.Read (), "smod#1");
1668 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smod#2");
1669 Assert.AreEqual (xt.GetMember ("Modifier"), r.Member, "smod#3");
1671 Assert.IsTrue (r.Read (), "vmod#1");
1672 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmod#2");
1673 Assert.AreEqual ("protected", r.Value, "vmod#3");
1675 Assert.IsTrue (r.Read (), "emod#1");
1676 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#2");
1678 Assert.IsTrue (r.Read (), "sname#1");
1679 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sname#2");
1680 Assert.AreEqual (xt.GetMember ("Name"), r.Member, "sname#3");
1682 Assert.IsTrue (r.Read (), "vname#1");
1683 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vname#2");
1684 Assert.AreEqual ("foo", r.Value, "vname#3");
1686 Assert.IsTrue (r.Read (), "ename#1");
1687 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ename#2");
1689 Assert.IsTrue (r.Read (), "stype#1");
1690 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "stype#2");
1691 Assert.AreEqual (xt.GetMember ("Type"), r.Member, "stype#3");
1693 Assert.IsTrue (r.Read (), "vtype#1");
1694 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vtype#2");
1695 Assert.AreEqual ("x:String", r.Value, "vtype#3");
1697 Assert.IsTrue (r.Read (), "etype#1");
1698 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "etype#2");
1700 Assert.IsTrue (r.Read (), "eo#1-1");
1701 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1703 Assert.IsFalse (r.Read (), "end");
1706 protected void Read_StaticExtensionWrapper (XamlReader r)
1708 Assert.IsTrue (r.Read (), "ns#1-1");
1709 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1710 Assert.IsNotNull (r.Namespace, "ns#1-3");
1711 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
1712 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1714 Assert.IsTrue (r.Read (), "ns#2-1");
1715 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1716 Assert.IsNotNull (r.Namespace, "ns#2-3");
1717 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
1718 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
1720 Assert.IsTrue (r.Read (), "so#1-1");
1721 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1722 var xt = new XamlType (typeof (StaticExtensionWrapper), r.SchemaContext);
1723 Assert.AreEqual (xt, r.Type, "so#1-3");
1725 if (r is XamlXmlReader)
1728 Assert.IsTrue (r.Read (), "sprm#1");
1729 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sprm#2");
1730 Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sprm#3");
1732 Assert.IsTrue (r.Read (), "so#2-1");
1733 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
1734 xt = new XamlType (typeof (StaticExtension), r.SchemaContext);
1735 Assert.AreEqual (xt, r.Type, "so#2-3");
1737 Assert.IsTrue (r.Read (), "smbr#1");
1738 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbr#2");
1739 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbr#3");
1741 Assert.IsTrue (r.Read (), "vmbr#1");
1742 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbr#2");
1743 Assert.AreEqual ("StaticExtensionWrapper.Foo", r.Value, "vmbr#3");
1745 Assert.IsTrue (r.Read (), "embr#1");
1746 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embr#2");
1748 Assert.IsTrue (r.Read (), "eo#2-1");
1749 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
1751 Assert.IsTrue (r.Read (), "emod#1-1");
1752 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#1-2");
1754 Assert.IsTrue (r.Read (), "eo#1-1");
1755 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1757 Assert.IsFalse (r.Read (), "end");
1760 protected void Read_TypeExtensionWrapper (XamlReader r)
1762 Assert.IsTrue (r.Read (), "ns#1-1");
1763 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1764 Assert.IsNotNull (r.Namespace, "ns#1-3");
1765 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
1766 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1768 Assert.IsTrue (r.Read (), "ns#2-1");
1769 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1770 Assert.IsNotNull (r.Namespace, "ns#2-3");
1771 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
1772 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
1774 Assert.IsTrue (r.Read (), "so#1-1");
1775 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1776 var xt = new XamlType (typeof (TypeExtensionWrapper), r.SchemaContext);
1777 Assert.AreEqual (xt, r.Type, "so#1-3");
1779 if (r is XamlXmlReader)
1782 Assert.IsTrue (r.Read (), "sprm#1");
1783 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sprm#2");
1784 Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sprm#3");
1786 Assert.IsTrue (r.Read (), "so#2-1");
1787 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
1788 xt = new XamlType (typeof (TypeExtension), r.SchemaContext);
1789 Assert.AreEqual (xt, r.Type, "so#2-3");
1791 Assert.IsTrue (r.Read (), "smbr#1");
1792 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbr#2");
1793 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbr#3");
1795 Assert.IsTrue (r.Read (), "vmbr#1");
1796 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbr#2");
1797 Assert.AreEqual (String.Empty, r.Value, "vmbr#3");
1799 Assert.IsTrue (r.Read (), "embr#1");
1800 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embr#2");
1802 Assert.IsTrue (r.Read (), "eo#2-1");
1803 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
1805 Assert.IsTrue (r.Read (), "emod#1-1");
1806 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#1-2");
1808 Assert.IsTrue (r.Read (), "eo#1-1");
1809 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1811 Assert.IsFalse (r.Read (), "end");
1814 protected void Read_EventContainer (XamlReader r)
1816 Assert.IsTrue (r.Read (), "ns#1-1");
1817 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1818 Assert.IsNotNull (r.Namespace, "ns#1-3");
1819 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
1820 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1822 Assert.IsTrue (r.Read (), "so#1-1");
1823 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1824 var xt = new XamlType (typeof (EventContainer), r.SchemaContext);
1825 Assert.AreEqual (xt, r.Type, "so#1-3");
1827 if (r is XamlXmlReader)
1830 Assert.IsTrue (r.Read (), "eo#1-1");
1831 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1833 Assert.IsFalse (r.Read (), "end");
1836 protected void Read_NamedItems (XamlReader r, bool isObjectReader)
1838 Assert.IsTrue (r.Read (), "ns#1-1");
1839 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1840 Assert.IsNotNull (r.Namespace, "ns#1-3");
1841 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
1842 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1844 Assert.IsTrue (r.Read (), "ns#2-1");
1845 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1846 Assert.IsNotNull (r.Namespace, "ns#2-3");
1847 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
1848 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
1850 var xt = new XamlType (typeof (NamedItem), r.SchemaContext);
1853 Assert.IsTrue (r.Read (), "so#1-1");
1854 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
1855 Assert.AreEqual (xt, r.Type, "so#1-3");
1857 if (r is XamlXmlReader)
1860 Assert.IsTrue (r.Read (), "sxname#1");
1861 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sxname#2");
1862 Assert.AreEqual (XamlLanguage.Name, r.Member, "sxname#3");
1864 Assert.IsTrue (r.Read (), "vxname#1");
1865 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vxname#2");
1866 Assert.AreEqual ("__ReferenceID0", r.Value, "vxname#3");
1868 Assert.IsTrue (r.Read (), "exname#1");
1869 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "exname#2");
1871 Assert.IsTrue (r.Read (), "sname#1");
1872 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sname#2");
1873 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sname#3");
1875 Assert.IsTrue (r.Read (), "vname#1");
1876 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vname#2");
1877 Assert.AreEqual ("foo", r.Value, "vname#3");
1879 Assert.IsTrue (r.Read (), "ename#1");
1880 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ename#2");
1882 Assert.IsTrue (r.Read (), "sItems#1");
1883 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
1884 Assert.AreEqual (xt.GetMember ("References"), r.Member, "sItems#3");
1886 Assert.IsTrue (r.Read (), "goc#1-1");
1887 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "goc#1-2");
1889 Assert.IsTrue (r.Read (), "smbr#1");
1890 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbr#2");
1891 Assert.AreEqual (XamlLanguage.Items, r.Member, "smbr#3");
1894 Assert.IsTrue (r.Read (), "soc#1-1");
1895 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soc#1-2");
1896 Assert.AreEqual (xt, r.Type, "soc#1-3");
1898 Assert.IsTrue (r.Read (), "smbrc#1");
1899 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrc#2");
1900 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "smbrc#3");
1902 Assert.IsTrue (r.Read (), "vmbrc#1");
1903 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbrc#2");
1904 Assert.AreEqual ("bar", r.Value, "vmbrc#3");
1906 Assert.IsTrue (r.Read (), "embrc#1");
1907 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embrc#2");
1909 Assert.IsTrue (r.Read (), "sItemsc#1");
1910 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItemsc#2");
1911 Assert.AreEqual (xt.GetMember ("References"), r.Member, "sItemsc#3");
1913 Assert.IsTrue (r.Read (), "god#2-1");
1914 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "god#2-2");
1916 Assert.IsTrue (r.Read (), "smbrd#1");
1917 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrd#2");
1918 Assert.AreEqual (XamlLanguage.Items, r.Member, "smbrd#3");
1920 Assert.IsTrue (r.Read (), "sod#1-1");
1921 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sod#1-2");
1922 Assert.AreEqual (XamlLanguage.Reference, r.Type, "sod#1-3");
1924 Assert.IsTrue (r.Read (), "smbrd#1");
1925 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrd#2");
1927 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbrd#3");
1929 Assert.AreEqual (XamlLanguage.Reference.GetMember ("Name"), r.Member, "smbrd#3");
1931 Assert.IsTrue (r.Read (), "vmbrd#1");
1932 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbrd#2");
1933 Assert.AreEqual ("__ReferenceID0", r.Value, "vmbrd#3");
1935 Assert.IsTrue (r.Read (), "embrd#1");
1936 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "embrd#2");
1938 Assert.IsTrue (r.Read (), "eod#2-1");
1939 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eod#2-2");
1941 Assert.IsTrue (r.Read (), "eItemsc#1");
1942 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItemsc#2");
1944 Assert.IsTrue (r.Read (), "eoc#2-1");
1945 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoc#2-2");
1947 Assert.IsTrue (r.Read (), "emod#1-1");
1948 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emod#1-2");
1950 Assert.IsTrue (r.Read (), "eo#1-1");
1951 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1954 Assert.IsTrue (r.Read (), "so3#1-1");
1955 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so3#1-2");
1956 Assert.AreEqual (xt, r.Type, "so3#1-3");
1957 Assert.IsTrue (r.Read (), "sname3#1");
1958 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sname3#2");
1959 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sname3#3");
1961 Assert.IsTrue (r.Read (), "vname3#1");
1962 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vname3#2");
1963 Assert.AreEqual ("baz", r.Value, "vname3#3");
1965 Assert.IsTrue (r.Read (), "ename3#1");
1966 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ename3#2");
1968 Assert.IsTrue (r.Read (), "eo3#1-1");
1969 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo3#1-2");
1971 Assert.IsTrue (r.Read (), "em2#1-1");
1972 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#1-2");
1974 Assert.IsTrue (r.Read (), "eo2#1-1");
1975 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo2#1-2");
1977 Assert.IsTrue (r.Read (), "em#1-1");
1978 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
1980 Assert.IsTrue (r.Read (), "eo#1-1");
1981 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
1983 Assert.IsFalse (r.Read (), "end");
1986 protected void Read_NamedItems2 (XamlReader r, bool isObjectReader)
1988 Assert.IsTrue (r.Read (), "ns#1-1");
1989 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
1990 Assert.IsNotNull (r.Namespace, "ns#1-3");
1991 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
1992 Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
1994 Assert.IsTrue (r.Read (), "ns#2-1");
1995 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
1996 Assert.IsNotNull (r.Namespace, "ns#2-3");
1997 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
1998 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
2000 var xt = new XamlType (typeof (NamedItem2), r.SchemaContext);
2003 Assert.IsTrue (r.Read (), "so1#1");
2004 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so1#2");
2005 Assert.AreEqual (xt, r.Type, "so1#3");
2007 if (r is XamlXmlReader)
2010 Assert.IsTrue (r.Read (), "sm1#1");
2011 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2012 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm1#3");
2014 Assert.IsTrue (r.Read (), "v1#1");
2015 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v1#2");
2016 Assert.AreEqual ("i1", r.Value, "v1#3");
2018 Assert.IsTrue (r.Read (), "em1#1");
2019 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em1#2");
2021 Assert.IsTrue (r.Read (), "srefs1#1");
2022 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs1#2");
2023 Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs1#3");
2025 Assert.IsTrue (r.Read (), "go1#1");
2026 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go1#2");
2028 Assert.IsTrue (r.Read (), "sitems1#1");
2029 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sitems1#2");
2030 Assert.AreEqual (XamlLanguage.Items, r.Member, "sitems1#3");
2033 Assert.IsTrue (r.Read (), "so2#1-1");
2034 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so2#1-2");
2035 Assert.AreEqual (xt, r.Type, "so2#1-3");
2036 Assert.IsTrue (r.Read (), "sm2#1");
2037 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
2038 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm2#3");
2040 Assert.IsTrue (r.Read (), "v2#1");
2041 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v2#2");
2042 Assert.AreEqual ("i2", r.Value, "v2#3");
2044 Assert.IsTrue (r.Read (), "em2#1");
2045 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#2");
2047 Assert.IsTrue (r.Read (), "srefs2#1");
2048 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs2#2");
2049 Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs2#3");
2051 Assert.IsTrue (r.Read (), "go2#1");
2052 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go2#2");
2054 Assert.IsTrue (r.Read (), "sItems1#1");
2055 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems1#2");
2056 Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems1#3");
2058 Assert.IsTrue (r.Read (), "so3#1");
2059 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so3#2");
2060 Assert.AreEqual (xt, r.Type, "so3#3");
2061 Assert.IsTrue (r.Read (), "sm3#1");
2062 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm3#2");
2063 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm3#3");
2065 Assert.IsTrue (r.Read (), "v3#1");
2066 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v3#2");
2067 Assert.AreEqual ("i3", r.Value, "v3#3");
2069 Assert.IsTrue (r.Read (), "em3#1");
2070 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em3#2");
2072 Assert.IsTrue (r.Read (), "eo3#1");
2073 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo3#2");
2075 Assert.IsTrue (r.Read (), "eitems2#1");
2076 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems2#2");
2078 Assert.IsTrue (r.Read (), "ego2#1");
2079 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego2#2");
2081 Assert.IsTrue (r.Read (), "erefs2#1");
2082 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs2#2");
2084 Assert.IsTrue (r.Read (), "eo2#1");
2085 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo2#2");
2088 Assert.IsTrue (r.Read (), "so4#1");
2089 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so4#2");
2090 Assert.AreEqual (xt, r.Type, "so4#3");
2092 Assert.IsTrue (r.Read (), "sm4#1");
2093 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm4#2");
2094 Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm4#3");
2096 Assert.IsTrue (r.Read (), "v4#1");
2097 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v4#2");
2098 Assert.AreEqual ("i4", r.Value, "v4#3");
2100 Assert.IsTrue (r.Read (), "em4#1");
2101 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em4#2");
2103 Assert.IsTrue (r.Read (), "srefs4#1");
2104 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs4#2");
2105 Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs4#3");
2107 Assert.IsTrue (r.Read (), "go4#1");
2108 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go4#2");
2110 Assert.IsTrue (r.Read (), "sitems4#1");
2111 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sitems4#2");
2112 Assert.AreEqual (XamlLanguage.Items, r.Member, "sitems4#3");
2114 Assert.IsTrue (r.Read (), "sor1#1");
2115 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sor1#2");
2116 Assert.AreEqual (XamlLanguage.Reference, r.Type, "sor1#3");
2118 Assert.IsTrue (r.Read (), "smr1#1");
2119 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smr1#2");
2121 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smr1#3");
2123 Assert.AreEqual (XamlLanguage.Reference.GetMember ("Name"), r.Member, "smr1#3");
2125 Assert.IsTrue (r.Read (), "vr1#1");
2126 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vr1#2");
2127 Assert.AreEqual ("i3", r.Value, "vr1#3");
2129 Assert.IsTrue (r.Read (), "emr1#1");
2130 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emr1#2");
2132 Assert.IsTrue (r.Read (), "eor#1");
2133 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eor#2");
2135 Assert.IsTrue (r.Read (), "eitems4#1");
2136 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems4#2");
2138 Assert.IsTrue (r.Read (), "ego4#1");
2139 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego4#2");
2141 Assert.IsTrue (r.Read (), "erefs4#1");
2142 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs4#2");
2144 Assert.IsTrue (r.Read (), "eo4#1-1");
2145 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo4#1-2");
2147 Assert.IsTrue (r.Read (), "eitems1#1");
2148 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems1#2");
2150 Assert.IsTrue (r.Read (), "ego1#1");
2151 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego1#2");
2153 Assert.IsTrue (r.Read (), "erefs1#1");
2154 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs1#2");
2156 Assert.IsTrue (r.Read (), "eo1#1");
2157 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo1#2");
2159 Assert.IsFalse (r.Read (), "end");
2162 protected void Read_XmlSerializableWrapper (XamlReader r, bool isObjectReader)
2164 Assert.IsTrue (r.Read (), "ns#1-1");
2165 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2166 Assert.IsNotNull (r.Namespace, "ns#1-3");
2167 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2168 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2169 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
2171 Assert.IsTrue (r.Read (), "ns#2-1");
2172 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
2173 Assert.IsNotNull (r.Namespace, "ns#2-3");
2174 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
2175 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
2177 // t:XmlSerializableWrapper
2178 Assert.IsTrue (r.Read (), "so#1-1");
2179 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2180 var xt = new XamlType (typeof (XmlSerializableWrapper), r.SchemaContext);
2181 Assert.AreEqual (xt, r.Type, "so#1-3");
2183 if (r is XamlXmlReader)
2187 Assert.IsTrue (r.Read (), "sm1#1");
2188 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2189 Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm1#3");
2192 Assert.IsTrue (r.Read (), "so#2-1");
2193 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
2194 Assert.AreEqual (XamlLanguage.XData, r.Type, "so#2-3");
2195 if (r is XamlObjectReader)
2196 Assert.IsNull (((XamlObjectReader) r).Instance, "xdata-instance");
2198 Assert.IsTrue (r.Read (), "sm2#1");
2199 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
2200 Assert.AreEqual (XamlLanguage.XData.GetMember ("Text"), r.Member, "sm2#3");
2202 Assert.IsTrue (r.Read (), "v1#1");
2203 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v1#2");
2204 var val = isObjectReader ? "<root />" : "<root xmlns=\"" + assns + "\" />";
2205 Assert.AreEqual (val, r.Value, "v1#3");
2207 Assert.IsTrue (r.Read (), "em2#1");
2208 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#2");
2210 Assert.IsTrue (r.Read (), "eo#2-1");
2211 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
2213 Assert.IsTrue (r.Read (), "em1#1");
2214 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em1#2");
2216 // /t:XmlSerializableWrapper
2217 Assert.IsTrue (r.Read (), "eo#1-1");
2218 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2220 Assert.IsFalse (r.Read (), "end");
2223 protected void Read_XmlSerializable (XamlReader r)
2225 Assert.IsTrue (r.Read (), "ns#1-1");
2226 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2227 Assert.IsNotNull (r.Namespace, "ns#1-3");
2228 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2229 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2230 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
2232 // t:XmlSerializable
2233 Assert.IsTrue (r.Read (), "so#1-1");
2234 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2235 var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext);
2236 Assert.AreEqual (xt, r.Type, "so#1-3");
2238 if (r is XamlXmlReader)
2241 // /t:XmlSerializable
2242 Assert.IsTrue (r.Read (), "eo#1-1");
2243 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2245 Assert.IsFalse (r.Read (), "end");
2248 protected void Read_ListXmlSerializable (XamlReader r)
2252 if (r.Member == XamlLanguage.Items)
2255 Assert.Fail ("Items did not appear");
2258 // t:XmlSerializable (yes...it is not XData!)
2259 Assert.IsTrue (r.Read (), "so#1-1");
2260 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2261 var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext);
2262 Assert.AreEqual (xt, r.Type, "so#1-3");
2264 // /t:XmlSerializable
2265 Assert.IsTrue (r.Read (), "eo#1-1");
2266 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2271 protected void Read_TypeConverterOnListMember (XamlReader r)
2273 Assert.IsTrue (r.Read (), "ns#1-1");
2274 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2275 Assert.IsNotNull (r.Namespace, "ns#1-3");
2276 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2277 Assert.AreEqual ("http://www.domain.com/path", r.Namespace.Namespace, "ns#1-5");
2279 // t:TypeOtherAssembly
2280 Assert.IsTrue (r.Read (), "so#1-1");
2281 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2282 var xt = new XamlType (typeof (SecondTest.TypeOtherAssembly), r.SchemaContext);
2283 Assert.AreEqual (xt, r.Type, "so#1-3");
2285 if (r is XamlXmlReader)
2289 Assert.IsTrue (r.Read (), "sm1#1");
2290 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2291 Assert.AreEqual (xt.GetMember ("Values"), r.Member, "sm1#3");
2294 Assert.IsTrue (r.Read (), "v#1-1");
2295 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
2296 Assert.AreEqual ("1, 2, 3", r.Value, "v#1-3");
2299 Assert.IsTrue (r.Read (), "em#1-1");
2300 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2302 // /t:TypeOtherAssembly
2303 Assert.IsTrue (r.Read (), "eo#1-1");
2304 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2306 Assert.IsFalse (r.Read (), "end");
2309 protected void Read_EnumContainer (XamlReader r)
2311 Assert.IsTrue (r.Read (), "ns#1-1");
2312 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2313 Assert.IsNotNull (r.Namespace, "ns#1-3");
2314 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2315 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2316 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
2319 Assert.IsTrue (r.Read (), "so#1-1");
2320 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2321 var xt = new XamlType (typeof (EnumContainer), r.SchemaContext);
2322 Assert.AreEqual (xt, r.Type, "so#1-3");
2324 if (r is XamlXmlReader)
2328 Assert.IsTrue (r.Read (), "sm1#1");
2329 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2330 Assert.AreEqual (xt.GetMember ("EnumProperty"), r.Member, "sm1#3");
2333 Assert.IsTrue (r.Read (), "v#1-1");
2334 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
2335 Assert.AreEqual ("Two", r.Value, "v#1-3");
2338 Assert.IsTrue (r.Read (), "em#1-1");
2339 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2342 Assert.IsTrue (r.Read (), "eo#1-1");
2343 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2345 Assert.IsFalse (r.Read (), "end");
2348 protected void Read_CollectionContentProperty (XamlReader r, bool contentPropertyIsUsed)
2350 Assert.IsTrue (r.Read (), "ns#1-1");
2351 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2352 Assert.IsNotNull (r.Namespace, "ns#1-3");
2353 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2354 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2355 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
2357 Assert.IsTrue (r.Read (), "ns#2-1");
2358 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
2359 Assert.IsNotNull (r.Namespace, "ns#2-3");
2360 Assert.AreEqual ("scg", r.Namespace.Prefix, "ns#2-4");
2361 assns = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
2362 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#2-5");
2364 Assert.IsTrue (r.Read (), "ns#3-1");
2365 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
2366 Assert.IsNotNull (r.Namespace, "ns#3-3");
2367 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#3-4");
2368 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3-5");
2370 // t:CollectionContentProperty
2371 Assert.IsTrue (r.Read (), "so#1-1");
2372 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2373 var xt = new XamlType (typeof (CollectionContentProperty), r.SchemaContext);
2374 Assert.AreEqual (xt, r.Type, "so#1-3");
2376 if (r is XamlXmlReader)
2380 Assert.IsTrue (r.Read (), "sm1#1");
2381 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2382 Assert.AreEqual (xt.GetMember ("ListOfItems"), r.Member, "sm1#3");
2384 // t:CollectionContentProperty
2385 xt = new XamlType (typeof (List<SimpleClass>), r.SchemaContext);
2386 Assert.IsTrue (r.Read (), "so#2-1");
2387 if (contentPropertyIsUsed)
2388 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "so#2-2.1");
2390 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2.2");
2391 Assert.AreEqual (xt, r.Type, "so#2-3");
2394 Assert.IsTrue (r.Read (), "sm#2-1");
2395 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2");
2396 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#2-3");
2398 // r.Skip (); // LAMESPEC: .NET then skips to *post* Items node (i.e. at the first TestClass item)
2400 Assert.IsTrue (r.Read (), "v#1-1");
2402 Assert.IsTrue (r.Read (), "em#2-1");
2403 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
2406 Assert.IsTrue (r.Read (), "sm#3-1");
2407 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
2408 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#3-3");
2410 for (int i = 0; i < 4; i++) {
2412 Assert.IsTrue (r.Read (), "so#3-1." + i);
2413 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
2414 xt = new XamlType (typeof (SimpleClass), r.SchemaContext);
2415 Assert.AreEqual (xt, r.Type, "so#3-3." + i);
2418 Assert.IsTrue (r.Read (), "eo#3-1");
2419 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
2423 Assert.IsTrue (r.Read (), "em#3-1");
2424 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
2426 // /t:CollectionContentProperty
2427 Assert.IsTrue (r.Read (), "eo#2-1");
2428 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
2431 Assert.IsTrue (r.Read (), "em#1-1");
2432 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2434 // /t:CollectionContentProperty
2435 Assert.IsTrue (r.Read (), "eo#1-1");
2436 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2438 Assert.IsFalse (r.Read (), "end");
2441 protected void Read_CollectionContentPropertyX (XamlReader r, bool contentPropertyIsUsed)
2443 Assert.IsTrue (r.Read (), "ns#1-1");
2444 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2445 Assert.IsNotNull (r.Namespace, "ns#1-3");
2446 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2447 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2448 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
2450 Assert.IsTrue (r.Read (), "ns#2-1");
2451 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
2452 Assert.IsNotNull (r.Namespace, "ns#2-3");
2453 Assert.AreEqual ("sc", r.Namespace.Prefix, "ns#2-4");
2454 assns = "clr-namespace:System.Collections;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
2455 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#2-5");
2457 Assert.IsTrue (r.Read (), "ns#x-1");
2458 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#x-2");
2459 Assert.IsNotNull (r.Namespace, "ns#x-3");
2460 Assert.AreEqual ("scg", r.Namespace.Prefix, "ns#x-4");
2461 assns = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
2462 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#x-5");
2464 Assert.IsTrue (r.Read (), "ns#3-1");
2465 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
2466 Assert.IsNotNull (r.Namespace, "ns#3-3");
2467 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#3-4");
2468 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3-5");
2470 // t:CollectionContentProperty
2471 Assert.IsTrue (r.Read (), "so#1-1");
2472 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2473 var xt = new XamlType (typeof (CollectionContentPropertyX), r.SchemaContext);
2474 Assert.AreEqual (xt, r.Type, "so#1-3");
2476 if (r is XamlXmlReader)
2480 Assert.IsTrue (r.Read (), "sm1#1");
2481 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2482 Assert.AreEqual (xt.GetMember ("ListOfItems"), r.Member, "sm1#3");
2484 // t:List<IEnumerable>
2485 xt = new XamlType (typeof (List<IEnumerable>), r.SchemaContext);
2486 Assert.IsTrue (r.Read (), "so#2-1");
2488 if (false/*contentPropertyIsUsed*/)
2489 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "so#2-2.1");
2491 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2.2");
2492 Assert.AreEqual (xt, r.Type, "so#2-3");
2495 Assert.IsTrue (r.Read (), "sm#2-1");
2496 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2");
2497 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#2-3");
2499 // r.Skip (); // LAMESPEC: .NET then skips to *post* Items node (i.e. at the first TestClass item)
2501 Assert.IsTrue (r.Read (), "v#1-1");
2504 Assert.IsTrue (r.Read (), "em#2-1");
2505 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
2508 Assert.IsTrue (r.Read (), "sm#3-1");
2509 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
2510 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#3-3");
2512 if (!contentPropertyIsUsed) {
2514 Assert.IsTrue (r.Read (), "so#x-1");
2515 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2.2");
2516 xt = new XamlType (typeof (List<object>), r.SchemaContext);
2517 Assert.AreEqual (xt, r.Type, "so#x-3");
2520 Assert.IsTrue (r.Read (), "sm#xx-1");
2521 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#xx-2");
2522 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#xx-3");
2524 Assert.IsTrue (r.Read (), "v#x-1");
2527 Assert.IsTrue (r.Read (), "em#xx-1");
2528 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#xx-2");
2530 Assert.IsTrue (r.Read (), "sm#x-1");
2531 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x-2");
2532 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#x-3");
2535 for (int i = 0; i < 4; i++) {
2537 Assert.IsTrue (r.Read (), "so#3-1." + i);
2538 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
2539 xt = new XamlType (typeof (SimpleClass), r.SchemaContext);
2540 Assert.AreEqual (xt, r.Type, "so#3-3." + i);
2543 Assert.IsTrue (r.Read (), "eo#3-1");
2544 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
2547 if (!contentPropertyIsUsed) {
2549 Assert.IsTrue (r.Read (), "em#x-1");
2550 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
2552 // /t:List<IEnumerable>
2553 Assert.IsTrue (r.Read (), "eo#x-1");
2554 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
2558 Assert.IsTrue (r.Read (), "em#3-1");
2559 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
2561 // /t:CollectionContentProperty
2562 Assert.IsTrue (r.Read (), "eo#2-1");
2563 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
2566 Assert.IsTrue (r.Read (), "em#1-1");
2567 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2569 // /t:CollectionContentProperty
2570 Assert.IsTrue (r.Read (), "eo#1-1");
2571 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2573 Assert.IsFalse (r.Read (), "end");
2576 #region ambient property test
2577 protected void Read_AmbientPropertyContainer (XamlReader r, bool extensionBased)
2579 Assert.IsTrue (r.Read (), "ns#1-1");
2580 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2581 Assert.IsNotNull (r.Namespace, "ns#1-3");
2582 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2583 Assert.AreEqual ("http://www.domain.com/path", r.Namespace.Namespace, "ns#1-5");
2585 Assert.IsTrue (r.Read (), "ns#2-1");
2586 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
2587 Assert.IsNotNull (r.Namespace, "ns#2-3");
2588 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
2589 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
2591 // t:AmbientPropertyContainer
2592 Assert.IsTrue (r.Read (), "so#1-1");
2593 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2594 var xt = new XamlType (typeof (SecondTest.ResourcesDict), r.SchemaContext);
2595 Assert.AreEqual (xt, r.Type, "so#1-3");
2597 if (r is XamlXmlReader)
2601 Assert.IsTrue (r.Read (), "sm#1-1");
2602 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
2603 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#1-3");
2605 xt = new XamlType (typeof (SecondTest.TestObject), r.SchemaContext);
2606 for (int i = 0; i < 2; i++) {
2608 if (i == 1 && r is XamlObjectReader && extensionBased) {
2609 ReadReasourceExtension_AmbientPropertyContainer (r, i, extensionBased);
2614 Assert.IsTrue (r.Read (), "so#2-1." + i);
2615 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2." + i);
2616 Assert.AreEqual (xt, r.Type, "so#2-3." + i);
2618 if (!extensionBased) {
2619 if (i == 0 && r is XamlXmlReader) // order difference between XamlObjectReader and XamlXmlReader ...
2620 ReadName_AmbientPropertyContainer (r, i);
2622 ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
2624 if (i == 0 && r is XamlObjectReader) // order difference between XamlObjectReader and XamlXmlReader ...
2625 ReadName_AmbientPropertyContainer (r, i);
2628 if (r is XamlObjectReader && extensionBased) {
2629 ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
2630 ReadName_AmbientPropertyContainer (r, i);
2633 ReadKey_AmbientPropertyContainer (r, i, extensionBased);
2635 if (extensionBased && i == 1)
2636 ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
2639 Assert.IsTrue (r.Read (), "eo#2-1." + i);
2640 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2." + i);
2644 Assert.IsTrue (r.Read (), "em#1-1");
2645 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2647 // /t:AmbientPropertyContainer
2648 Assert.IsTrue (r.Read (), "eo#1-1");
2649 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2651 Assert.IsFalse (r.Read (), "end");
2654 void ReadKey_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
2657 Assert.IsTrue (r.Read (), "sm#4-1." + i);
2658 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#4-2." + i);
2659 Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#4-3." + i);
2661 if (!extensionBased || r is XamlObjectReader) {
2662 // t:String (as it is specific derived type as compared to the key object type in Dictionary<object,object>)
2663 Assert.IsTrue (r.Read (), "so#5-1." + i);
2664 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#5-2." + i);
2665 Assert.AreEqual (XamlLanguage.String, r.Type, "so#5-3." + i);
2667 Assert.IsTrue (r.Read (), "sm#5-1." + i);
2668 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#5-2." + i);
2669 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sm#5-3." + i);
2671 Assert.IsTrue (r.Read (), "v#5-1." + i);
2672 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#5-2." + i);
2674 Assert.IsTrue (r.Read (), "em#5-1." + i);
2675 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#5-2." + i);
2678 Assert.IsTrue (r.Read (), "eo#5-1." + i);
2679 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#5-2." + i);
2681 // it is in attribute string without type in xml.
2682 Assert.IsTrue (r.Read (), "v#y-1." + i);
2683 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2." + i);
2684 Assert.AreEqual (i == 0 ? "TestDictItem" : "okay", r.Value, "v#y-3." + i);
2688 Assert.IsTrue (r.Read (), "em#4-1." + i);
2689 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#4-2." + i);
2692 void ReadName_AmbientPropertyContainer (XamlReader r, int i)
2695 Assert.IsTrue (r.Read (), "sm#3-1." + i);
2696 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2." + i);
2697 Assert.AreEqual (XamlLanguage.Name, r.Member, "sm#3-3." + i);
2699 Assert.IsTrue (r.Read (), "v#3-1." + i);
2700 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#3-2." + i);
2701 Assert.AreEqual ("__ReferenceID0", r.Value, "v#3-3." + i);
2704 Assert.IsTrue (r.Read (), "em#3-1." + i);
2705 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2." + i);
2708 void ReadTestProperty_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
2710 var xt = new XamlType (typeof (SecondTest.TestObject), r.SchemaContext);
2713 Assert.IsTrue (r.Read (), "sm#2-1." + i);
2714 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2." + i);
2715 Assert.AreEqual (xt.GetMember ("TestProperty"), r.Member, "sm#2-3." + i);
2718 // t:TestObject={x:Null}
2719 Assert.IsTrue (r.Read (), "so#3-1." + i);
2720 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
2721 Assert.AreEqual (XamlLanguage.Null, r.Type, "so#3-3." + i);
2722 Assert.IsTrue (r.Read (), "eo#3-1." + i);
2723 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2." + i);
2724 } else if (extensionBased) {
2725 ReadReasourceExtension_AmbientPropertyContainer (r, i, extensionBased);
2727 ReadReference_AmbientPropertyContainer (r, i, extensionBased);
2731 Assert.IsTrue (r.Read (), "em#2-1." + i);
2732 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2." + i);
2735 void ReadReasourceExtension_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
2737 // t:ResourceExtension
2738 var xt = r.SchemaContext.GetXamlType (typeof (SecondTest.ResourceExtension));
2739 Assert.IsTrue (r.Read (), "so#z-1." + i);
2740 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#z-2." + i);
2741 Assert.AreEqual (xt, r.Type, "so#z-2." + i);
2743 if (r is XamlObjectReader) {
2746 Assert.IsTrue (r.Read (), "sm#zz-1." + i);
2747 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#zz-2." + i);
2748 Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sm#zz-3." + i);
2750 ReadReference_AmbientPropertyContainer (r, i, extensionBased);
2753 Assert.IsTrue (r.Read (), "em#zz-1." + i);
2754 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#zz-2." + i);
2756 ReadKey_AmbientPropertyContainer (r, i, extensionBased);
2760 // m:PositionalParameters
2761 Assert.IsTrue (r.Read (), "sm#z-1." + i);
2762 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#z-2." + i);
2763 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sm#z-3." + i);
2765 Assert.IsTrue (r.Read (), "v#z-1." + i);
2766 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#z-2." + i);
2768 // /m:PositionalParameters
2769 Assert.IsTrue (r.Read (), "em#z-1." + i);
2770 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#z-2." + i);
2773 // /t:ResourceExtension
2774 Assert.IsTrue (r.Read (), "eo#z-1." + i);
2775 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#z-2." + i);
2778 void ReadReference_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
2781 Assert.IsTrue (r.Read (), "so#zz2-1." + i);
2782 Assert.AreEqual (XamlLanguage.Reference, r.Type, "so#zz2-2." + i);
2785 Assert.IsTrue (r.Read (), "sm#zz2-1." + i);
2786 Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sm#zz2-3." + i);
2788 Assert.IsTrue (r.Read (), "v#zz2-1." + i);
2789 Assert.AreEqual ("__ReferenceID0", r.Value, "v#zz2-2." + i);
2791 Assert.IsTrue (r.Read (), "em#zz2-1." + i);
2792 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#zz2-2." + i);
2794 Assert.IsTrue (r.Read (), "eo#zz2-1." + i);
2795 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#zz2-2." + i);
2799 protected void Read_NullableContainer (XamlReader r)
2801 Assert.IsTrue (r.Read (), "ns#1-1");
2802 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
2803 Assert.IsNotNull (r.Namespace, "ns#1-3");
2804 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
2805 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2806 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
2808 // t:NullableContainer
2809 Assert.IsTrue (r.Read (), "so#1-1");
2810 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2811 var xt = new XamlType (typeof (NullableContainer), r.SchemaContext);
2812 Assert.AreEqual (xt, r.Type, "so#1-3");
2814 if (r is XamlXmlReader)
2818 Assert.IsTrue (r.Read (), "sm1#1");
2819 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2820 Assert.AreEqual (xt.GetMember ("TestProp"), r.Member, "sm1#3");
2823 Assert.IsTrue (r.Read (), "v#1-1");
2824 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
2825 Assert.AreEqual ("5", r.Value, "v#1-3");
2828 Assert.IsTrue (r.Read (), "em#1-1");
2829 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2831 // /t:NullableContainer
2832 Assert.IsTrue (r.Read (), "eo#1-1");
2833 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2835 Assert.IsFalse (r.Read (), "end");
2838 protected void Read_DirectListContainer (XamlReader r)
2840 var assns1 = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2841 var assns2 = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
2842 ReadNamespace (r, String.Empty, assns1, "ns#1");
2843 ReadNamespace (r, "scg", assns2, "ns#2");
2844 ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#3");
2846 // t:DirectListContainer
2847 Assert.IsTrue (r.Read (), "so#1-1");
2848 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2849 var xt = new XamlType (typeof (DirectListContainer), r.SchemaContext);
2850 Assert.AreEqual (xt, r.Type, "so#1-3");
2852 if (r is XamlXmlReader)
2856 Assert.IsTrue (r.Read (), "sm1#1");
2857 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2858 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm1#3");
2861 Assert.IsTrue (r.Read (), "go#1");
2862 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
2864 // m:Items(GetObject)
2865 Assert.IsTrue (r.Read (), "sm2#1");
2866 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
2867 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm2#3");
2869 xt = r.SchemaContext.GetXamlType (typeof (DirectListContent));
2870 for (int i = 0; i < 3; i++) {
2871 // t:DirectListContent
2872 Assert.IsTrue (r.Read (), "so#x-1." + i);
2873 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
2874 Assert.AreEqual (xt, r.Type, "so#x-3." + i);
2877 Assert.IsTrue (r.Read (), "sm#x1");
2878 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
2879 Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm#x3");
2882 Assert.IsTrue (r.Read (), "v#x-1");
2883 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
2884 Assert.AreEqual ("Hello" + (i + 1), r.Value, "v#x-3");
2887 Assert.IsTrue (r.Read (), "em#x-1");
2888 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
2890 // /t:DirectListContent
2891 Assert.IsTrue (r.Read (), "eo#x-1");
2892 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
2895 // /m:Items(GetObject)
2896 Assert.IsTrue (r.Read (), "em#2-1");
2897 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
2900 Assert.IsTrue (r.Read (), "ego#2-1");
2901 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego#2-2");
2904 Assert.IsTrue (r.Read (), "em#1-1");
2905 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2907 // /t:DirectListContainer
2908 Assert.IsTrue (r.Read (), "eo#1-1");
2909 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2911 Assert.IsFalse (r.Read (), "end");
2914 protected void Read_DirectDictionaryContainer (XamlReader r)
2916 var assns1 = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
2917 ReadNamespace (r, String.Empty, assns1, "ns#1");
2918 ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
2920 // t:DirectDictionaryContainer
2921 Assert.IsTrue (r.Read (), "so#1-1");
2922 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
2923 var xt = new XamlType (typeof (DirectDictionaryContainer), r.SchemaContext);
2924 Assert.AreEqual (xt, r.Type, "so#1-3");
2926 if (r is XamlXmlReader)
2930 Assert.IsTrue (r.Read (), "sm1#1");
2931 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
2932 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm1#3");
2935 Assert.IsTrue (r.Read (), "go#1");
2936 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
2938 // m:Items(GetObject)
2939 Assert.IsTrue (r.Read (), "sm2#1");
2940 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
2941 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm2#3");
2943 xt = r.SchemaContext.GetXamlType (typeof (int));
2944 for (int i = 0; i < 3; i++) {
2945 // t:DirectDictionaryContent
2946 Assert.IsTrue (r.Read (), "so#x-1." + i);
2947 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
2948 Assert.AreEqual (xt, r.Type, "so#x-3." + i);
2951 Assert.IsTrue (r.Read (), "sm#y1");
2952 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2");
2953 Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3");
2956 Assert.IsTrue (r.Read (), "v#y-1");
2957 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2");
2958 Assert.AreEqual (((EnumValueType) i).ToString ().ToLower (), r.Value, "v#y-3");
2961 Assert.IsTrue (r.Read (), "em#y-1");
2962 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2");
2965 Assert.IsTrue (r.Read (), "sm#x1");
2966 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
2967 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sm#x3");
2970 Assert.IsTrue (r.Read (), "v#x-1");
2971 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
2972 Assert.AreEqual ("" + (i + 2) * 10, r.Value, "v#x-3");
2975 Assert.IsTrue (r.Read (), "em#x-1");
2976 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
2978 // /t:DirectDictionaryContent
2979 Assert.IsTrue (r.Read (), "eo#x-1");
2980 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
2983 // /m:Items(GetObject)
2984 Assert.IsTrue (r.Read (), "em#2-1");
2985 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
2988 Assert.IsTrue (r.Read (), "ego#2-1");
2989 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego#2-2");
2992 Assert.IsTrue (r.Read (), "em#1-1");
2993 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
2995 // /t:DirectDictionaryContainer
2996 Assert.IsTrue (r.Read (), "eo#1-1");
2997 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
2999 Assert.IsFalse (r.Read (), "end");
3002 protected void Read_DirectDictionaryContainer2 (XamlReader r)
3004 ReadNamespace (r, String.Empty, "http://www.domain.com/path", "ns#1");
3005 ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
3007 // t:DirectDictionaryContainer
3008 Assert.IsTrue (r.Read (), "so#1-1");
3009 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
3010 var xt = new XamlType (typeof (SecondTest.ResourcesDict2), r.SchemaContext);
3011 Assert.AreEqual (xt, r.Type, "so#1-3");
3013 if (r is XamlXmlReader)
3017 Assert.IsTrue (r.Read (), "sm1#1");
3018 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
3019 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm1#3");
3021 xt = r.SchemaContext.GetXamlType (typeof (SecondTest.TestObject2));
3022 for (int i = 0; i < 2; i++) {
3024 Assert.IsTrue (r.Read (), "so#x-1." + i);
3025 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
3026 Assert.AreEqual (xt, r.Type, "so#x-3." + i);
3029 Assert.IsTrue (r.Read (), "sm#y1");
3030 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2");
3031 Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3");
3034 Assert.IsTrue (r.Read (), "v#y-1");
3035 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2");
3036 Assert.AreEqual (i == 0 ? "1" : "two", r.Value, "v#y-3");
3039 Assert.IsTrue (r.Read (), "em#y-1");
3040 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2");
3043 Assert.IsTrue (r.Read (), "sm#x1");
3044 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
3045 Assert.AreEqual (xt.GetMember ("TestProperty"), r.Member, "sm#x3");
3048 Assert.IsTrue (r.Read (), "v#x-1");
3049 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
3050 Assert.AreEqual (i == 0 ? "1" : "two", r.Value, "v#x-3");
3053 Assert.IsTrue (r.Read (), "em#x-1");
3054 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
3057 Assert.IsTrue (r.Read (), "eo#x-1");
3058 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
3062 Assert.IsTrue (r.Read (), "em#1-1");
3063 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
3065 // /t:DirectDictionaryContainer
3066 Assert.IsTrue (r.Read (), "eo#1-1");
3067 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
3069 Assert.IsFalse (r.Read (), "end");
3072 protected void Read_ContentPropertyContainer (XamlReader r)
3074 ReadNamespace (r, String.Empty, "http://www.domain.com/path", "ns#1");
3075 ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
3077 // 1:: t:ContentPropertyContainer
3078 Assert.IsTrue (r.Read (), "so#1-1");
3079 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
3080 var xt = new XamlType (typeof (SecondTest.ContentPropertyContainer), r.SchemaContext);
3081 Assert.AreEqual (xt, r.Type, "so#1-3");
3083 if (r is XamlXmlReader)
3087 Assert.IsTrue (r.Read (), "sm1#1");
3088 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
3089 Assert.AreEqual (XamlLanguage.Items, r.Member, "sm1#3");
3091 xt = r.SchemaContext.GetXamlType (typeof (SecondTest.SimpleType));
3092 for (int i = 0; i < 2; i++) {
3094 Assert.IsTrue (r.Read (), "so#x-1" + "." + i);
3095 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2" + "." + i);
3096 Assert.AreEqual (xt, r.Type, "so#x-3" + "." + i);
3099 Assert.IsTrue (r.Read (), "sm#y1" + "." + i);
3100 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2" + "." + i);
3101 Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3" + "." + i);
3104 Assert.IsTrue (r.Read (), "v#y-1" + "." + i);
3105 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2" + "." + i);
3106 Assert.AreEqual (i == 0 ? "one" : "two", r.Value, "v#y-3" + "." + i);
3109 Assert.IsTrue (r.Read (), "em#y-1" + "." + i);
3110 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2" + "." + i);
3114 // 4-2:: m:Items(ContentProperty)
3115 Assert.IsTrue (r.Read (), "sm#x1" + "." + i);
3116 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2" + "." + i);
3117 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm#x3" + "." + i);
3120 Assert.IsTrue (r.Read (), "go#z-1" + "." + i);
3121 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#z-2" + "." + i);
3123 // 6:: m:Items(GetObject)
3124 Assert.IsTrue (r.Read (), "smz#1" + "." + i);
3125 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smz#2" + "." + i);
3126 Assert.AreEqual (XamlLanguage.Items, r.Member, "smz#3" + "." + i);
3128 for (int j = 0; j < 2; j++) {
3130 Assert.IsTrue (r.Read (), "soi#x-1" + "." + i + "-" + j);
3131 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#x-2" + "." + i + "-" + j);
3132 Assert.AreEqual (xt, r.Type, "soi#z-3" + "." + i + "-" + j);
3134 // 7:: /t:SimpleType
3135 Assert.IsTrue (r.Read (), "eoi#x-1" + "." + i + "-" + j);
3136 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#x-2" + "." + i + "-" + j);
3139 // 6:: /m:Items(GetObject)
3140 Assert.IsTrue (r.Read (), "emz#x-1" + "." + i);
3141 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emz#x-2" + "." + i);
3144 Assert.IsTrue (r.Read (), "eo#z-1" + "." + i);
3145 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#z-2" + "." + i);
3147 // 4:: /m:Items(ContentProperty)
3148 Assert.IsTrue (r.Read (), "em#x1" + "." + i);
3149 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x2" + "." + i);
3151 // 4-2:: m:NonContentItems
3152 Assert.IsTrue (r.Read (), "smv#1" + "." + i);
3153 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smv#2" + "." + i);
3154 Assert.AreEqual (xt.GetMember ("NonContentItems"), r.Member, "smv#3" + "." + i);
3157 Assert.IsTrue (r.Read (), "go#z-1" + "." + i);
3158 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#v-2" + "." + i);
3161 Assert.IsTrue (r.Read (), "smw#1" + "." + i);
3162 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smw#2" + "." + i);
3163 Assert.AreEqual (XamlLanguage.Items, r.Member, "smw#3" + "." + i);
3165 for (int j = 0; j < 2; j++) {
3166 // 7-2:: t:SimpleType
3167 Assert.IsTrue (r.Read (), "soi2#x-1" + "." + i + "-" + j);
3168 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi2#x-2" + "." + i + "-" + j);
3169 Assert.AreEqual (xt, r.Type, "soi2#z-3" + "." + i + "-" + j);
3171 // 7-2:: /t:SimpleType
3172 Assert.IsTrue (r.Read (), "eoi2#x-1" + "." + i + "-" + j);
3173 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi2#x-2" + "." + i + "-" + j);
3177 Assert.IsTrue (r.Read (), "emw#1" + "." + i);
3178 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emw#2" + "." + i);
3181 Assert.IsTrue (r.Read (), "eo#v-1" + "." + i);
3182 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#v-2" + "." + i);
3184 // 4-2:: /m:NonContentItems
3185 Assert.IsTrue (r.Read (), "emv#1" + "." + i);
3186 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emv#2" + "." + i);
3190 // 3:: /t:SimpleType
3191 Assert.IsTrue (r.Read (), "eo#x-1" + "." + i);
3192 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2" + "." + i);
3196 Assert.IsTrue (r.Read (), "em#1-1");
3197 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
3199 // 1:: /t:ContentPropertyContainer
3200 Assert.IsTrue (r.Read (), "eo#1-1");
3201 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
3203 Assert.IsFalse (r.Read (), "end");
3206 protected void Read_AttachedProperty (XamlReader r)
3208 var at = new XamlType (typeof (Attachable), r.SchemaContext);
3210 Assert.IsTrue (r.Read (), "ns#1-1");
3211 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
3212 Assert.IsNotNull (r.Namespace, "ns#1-3");
3213 Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
3214 var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
3215 Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
3217 // t:AttachedWrapper
3218 Assert.IsTrue (r.Read (), "so#1-1");
3219 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
3220 var xt = new XamlType (typeof (AttachedWrapper), r.SchemaContext);
3221 Assert.AreEqual (xt, r.Type, "so#1-3");
3223 if (r is XamlXmlReader)
3226 ReadAttachedProperty (r, at.GetAttachableMember ("Foo"), "x", "x");
3229 Assert.IsTrue (r.Read (), "sm#2-1");
3230 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#sm#2-2");
3231 Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm#2-3");
3234 Assert.IsTrue (r.Read (), "so#2-1");
3235 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#so#2-2");
3236 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (Attached)), r.Type, "so#2-3");
3238 ReadAttachedProperty (r, at.GetAttachableMember ("Foo"), "y", "y");
3240 Assert.IsTrue (r.Read (), "eo#2-1");
3241 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#eo#2-2");
3244 Assert.IsTrue (r.Read (), "em#2-1");
3245 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#em#2-2");
3247 // /t:AttachedWrapper
3248 Assert.IsTrue (r.Read (), "eo#1-1");
3249 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
3251 Assert.IsFalse (r.Read (), "end");
3254 void ReadAttachedProperty (XamlReader r, XamlMember xm, string value, string label)
3256 Assert.IsTrue (r.Read (), label + "#1-1");
3257 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, label + "#1-2");
3258 Assert.AreEqual (xm, r.Member, label + "#1-3");
3260 Assert.IsTrue (r.Read (), label + "#2-1");
3261 Assert.AreEqual (XamlNodeType.Value, r.NodeType, label + "#2-2");
3262 Assert.AreEqual (value, r.Value, label + "2-3");
3264 Assert.IsTrue (r.Read (), label + "#3-1");
3265 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, label + "#3-2");
3268 protected void Read_CommonXamlPrimitive (object obj)
3270 var r = new XamlObjectReader (obj);
3271 Read_CommonXamlType (r);
3272 Read_Initialization (r, obj);
3275 // from StartMember of Initialization to EndMember
3276 protected string Read_Initialization (XamlReader r, object comparableValue)
3278 Assert.IsTrue (r.Read (), "init#1");
3279 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "init#2");
3280 Assert.IsNotNull (r.Member, "init#3");
3281 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "init#3-2");
3282 Assert.IsTrue (r.Read (), "init#4");
3283 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "init#5");
3284 Assert.AreEqual (typeof (string), r.Value.GetType (), "init#6");
3285 string ret = (string) r.Value;
3286 if (comparableValue != null)
3287 Assert.AreEqual (comparableValue.ToString (), r.Value, "init#6-2");
3288 Assert.IsTrue (r.Read (), "init#7");
3289 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "init#8");
3293 protected object [] Read_AttributedArguments_String (XamlReader r, string [] argNames) // valid only for string arguments.
3295 object [] ret = new object [argNames.Length];
3297 Assert.IsTrue (r.Read (), "attarg.Arguments.Start1");
3298 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "attarg.Arguments.Start2");
3299 Assert.IsNotNull (r.Member, "attarg.Arguments.Start3");
3300 Assert.AreEqual (XamlLanguage.Arguments, r.Member, "attarg.Arguments.Start4");
3301 for (int i = 0; i < argNames.Length; i++) {
3302 string arg = argNames [i];
3303 Assert.IsTrue (r.Read (), "attarg.ArgStartObject1." + arg);
3304 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "attarg.ArgStartObject2." + arg);
3305 Assert.AreEqual (typeof (string), r.Type.UnderlyingType, "attarg.ArgStartObject3." + arg);
3306 Assert.IsTrue (r.Read (), "attarg.ArgStartMember1." + arg);
3307 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "attarg.ArgStartMember2." + arg);
3308 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "attarg.ArgStartMember3." + arg); // (as the argument is string here by definition)
3309 Assert.IsTrue (r.Read (), "attarg.ArgValue1." + arg);
3310 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "attarg.ArgValue2." + arg);
3311 Assert.AreEqual (typeof (string), r.Value.GetType (), "attarg.ArgValue3." + arg);
3313 Assert.IsTrue (r.Read (), "attarg.ArgEndMember1." + arg);
3314 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "attarg.ArgEndMember2." + arg);
3315 Assert.IsTrue (r.Read (), "attarg.ArgEndObject1." + arg);
3316 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "attarg.ArgEndObject2." + arg);
3318 Assert.IsTrue (r.Read (), "attarg.Arguments.End1");
3319 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "attarg.Arguments.End2");
3323 // from initial to StartObject
3324 protected void Read_CommonXamlType (XamlObjectReader r)
3326 Read_CommonXamlType (r, delegate {
3327 Assert.IsNull (r.Instance, "ct#4");
3331 protected void Read_CommonXamlType (XamlReader r, Action validateInstance)
3333 Assert.IsTrue (r.Read (), "ct#1");
3334 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#2");
3335 Assert.IsNotNull (r.Namespace, "ct#3");
3336 Assert.AreEqual ("x", r.Namespace.Prefix, "ct#3-2");
3337 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ct#3-3");
3338 if (validateInstance != null)
3339 validateInstance ();
3341 Assert.IsTrue (r.Read (), "ct#5");
3342 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#6");
3345 // from initial to StartObject
3346 protected void Read_CommonClrType (XamlReader r, object obj, params KeyValuePair<string,string> [] additionalNamespaces)
3348 Assert.IsTrue (r.Read (), "ct#1");
3349 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#2");
3350 Assert.IsNotNull (r.Namespace, "ct#3");
3351 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ct#3-2");
3352 Assert.AreEqual ("clr-namespace:" + obj.GetType ().Namespace + ";assembly=" + obj.GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ct#3-3");
3354 foreach (var kvp in additionalNamespaces) {
3355 Assert.IsTrue (r.Read (), "ct#4." + kvp.Key);
3356 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#5." + kvp.Key);
3357 Assert.IsNotNull (r.Namespace, "ct#6." + kvp.Key);
3358 Assert.AreEqual (kvp.Key, r.Namespace.Prefix, "ct#6-2." + kvp.Key);
3359 Assert.AreEqual (kvp.Value, r.Namespace.Namespace, "ct#6-3." + kvp.Key);
3362 Assert.IsTrue (r.Read (), "ct#7");
3363 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#8");
3366 protected void ReadBase (XamlReader r)
3368 Assert.IsTrue (r.Read (), "sbase#1");
3369 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
3370 Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
3372 Assert.IsTrue (r.Read (), "vbase#1");
3373 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
3374 Assert.IsTrue (r.Value is string, "vbase#3");
3376 Assert.IsTrue (r.Read (), "ebase#1");
3377 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
3380 void ReadNamespace (XamlReader r, string prefix, string ns, string label)
3382 Assert.IsTrue (r.Read (), label + "-1");
3383 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, label + "-2");
3384 Assert.IsNotNull (r.Namespace, label + "-3");
3385 Assert.AreEqual (prefix, r.Namespace.Prefix, label + "-4");
3386 Assert.AreEqual (ns, r.Namespace.Namespace, label + "-5");