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;
27 using System.Globalization;
30 using System.Reflection;
31 using System.Windows.Markup;
33 using System.Xaml.Schema;
35 using NUnit.Framework;
37 using CategoryAttribute = NUnit.Framework.CategoryAttribute;
39 namespace MonoTests.System.Xaml
42 public class XamlXmlReaderTest : XamlReaderTestBase
46 XamlReader GetReader (string filename)
48 return new XamlXmlReader (XmlReader.Create (Path.Combine ("Test/XmlFiles", filename), new XmlReaderSettings () { CloseInput =true }));
51 void ReadTest (string filename)
53 var r = GetReader (filename);
58 T LoadTest<T> (string filename)
60 Type type = typeof (T);
61 var obj = XamlServices.Load (GetReader (filename));
62 Assert.AreEqual (type, obj.GetType (), "type");
67 public void Read_String ()
69 ReadTest ("String.xml");
70 var ret = LoadTest<string> ("String.xml");
71 Assert.AreEqual ("foo", ret, "ret");
75 public void Read_Int32 ()
77 ReadTest ("Int32.xml");
78 var ret = LoadTest<int> ("Int32.xml");
79 Assert.AreEqual (5, ret, "ret");
83 public void Read_DateTime ()
85 ReadTest ("DateTime.xml");
86 var ret = LoadTest<DateTime> ("DateTime.xml");
87 Assert.AreEqual (new DateTime (2010, 4, 14), ret, "ret");
91 public void Read_TimeSpan ()
93 ReadTest ("TimeSpan.xml");
94 var ret = LoadTest<TimeSpan> ("TimeSpan.xml");
95 Assert.AreEqual (TimeSpan.FromMinutes (7), ret, "ret");
99 public void Read_Null ()
101 ReadTest ("NullExtension.xml");
102 Assert.IsNull (XamlServices.Load (GetReader ("NullExtension.xml")));
106 public void Read_Reference ()
108 ReadTest ("Reference.xml");
109 var ret = XamlServices.Load (GetReader ("Reference.xml"));
110 Assert.IsNotNull (ret, "#1"); // the returned value is however not a Reference (in .NET 4.0 it is MS.Internal.Xaml.Context.NameFixupToken).
114 public void Read_ArrayInt32 ()
116 ReadTest ("Array_Int32.xml");
117 var ret = LoadTest<int[]> ("Array_Int32.xml");
118 Assert.AreEqual (5, ret.Length, "#1");
119 Assert.AreEqual (2147483647, ret [4], "#2");
123 public void Read_ListInt32 ()
125 ReadTest ("List_Int32.xml");
126 var ret = LoadTest<List<int>> ("List_Int32.xml");
127 Assert.AreEqual (5, ret.Count, "#1");
128 Assert.AreEqual (2147483647, ret [4], "#2");
132 public void Read_DictionaryInt32String ()
134 ReadTest ("Dictionary_Int32_String.xml");
135 //LoadTest<Dictionary<int,string>> ("Dictionary_Int32_String.xml");
139 public void Read_DictionaryStringType ()
141 ReadTest ("Dictionary_String_Type.xml");
142 //LoadTest<Dictionary<string,Type>> ("Dictionary_String_Type.xml");
146 public void Read_SilverlightApp1 ()
148 ReadTest ("SilverlightApp1.xaml");
152 public void Read_Guid ()
154 ReadTest ("Guid.xml");
155 var ret = LoadTest<Guid> ("Guid.xml");
156 Assert.AreEqual (Guid.Parse ("9c3345ec-8922-4662-8e8d-a4e41f47cf09"), ret, "ret");
160 public void Read_GuidFactoryMethod ()
162 ReadTest ("GuidFactoryMethod.xml");
163 var ret = LoadTest<Guid> ("GuidFactoryMethod.xml");
164 Assert.AreEqual (Guid.Parse ("9c3345ec-8922-4662-8e8d-a4e41f47cf09"), ret, "ret");
167 void ReadBase (XamlReader r)
169 Assert.IsTrue (r.Read (), "sbase#1");
170 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
171 Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
173 Assert.IsTrue (r.Read (), "vbase#1");
174 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
175 Assert.IsTrue (r.Value is string, "vbase#3");
177 Assert.IsTrue (r.Read (), "ebase#1");
178 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
182 public void ReadInt32Details ()
184 var r = GetReader ("Int32.xml");
186 Assert.IsTrue (r.Read (), "ns#1");
187 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
188 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
190 Assert.IsTrue (r.Read (), "so#1");
191 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
192 Assert.AreEqual (XamlLanguage.Int32, r.Type, "so#3");
196 Assert.IsTrue (r.Read (), "sinit#1");
197 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
198 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sinit#3");
200 Assert.IsTrue (r.Read (), "vinit#1");
201 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
202 Assert.AreEqual ("5", r.Value, "vinit#3"); // string
204 Assert.IsTrue (r.Read (), "einit#1");
205 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
207 Assert.IsTrue (r.Read (), "eo#1");
208 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
210 Assert.IsFalse (r.Read (), "end");
214 public void ReadDateTimeDetails ()
216 var r = GetReader ("DateTime.xml");
218 Assert.IsTrue (r.Read (), "ns#1");
219 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
220 Assert.AreEqual ("clr-namespace:System;assembly=mscorlib", r.Namespace.Namespace, "ns#3");
222 Assert.IsTrue (r.Read (), "so#1");
223 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
224 Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (DateTime)), r.Type, "so#3");
228 Assert.IsTrue (r.Read (), "sinit#1");
229 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
230 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sinit#3");
232 Assert.IsTrue (r.Read (), "vinit#1");
233 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
234 Assert.AreEqual ("2010-04-14", r.Value, "vinit#3"); // string
236 Assert.IsTrue (r.Read (), "einit#1");
237 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
239 Assert.IsTrue (r.Read (), "eo#1");
240 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
241 Assert.IsFalse (r.Read (), "end");
245 public void ReadTypeDetails ()
247 var r = GetReader ("Type.xml");
249 Assert.IsTrue (r.Read (), "ns#1");
250 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
251 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
253 Assert.IsTrue (r.Read (), "so#1");
254 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
255 Assert.AreEqual (XamlLanguage.Type, r.Type, "so#3");
259 Assert.IsTrue (r.Read (), "sinit#1");
260 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
261 // FIXME: They are identical on .NET.
262 // They aren't on mono, every GetMember() returns different object
263 // (it is the same as .NET; see XamlMemberTest.EqualsTest.)
264 // and XamlMember is almost non-comparable unless they
265 // are identical, so we fail here.
266 Assert.AreEqual (XamlLanguage.Type.GetMember ("Type").ToString (), r.Member.ToString (), "sinit#3");
267 //Assert.AreEqual (XamlLanguage.Type.GetMember ("Type"), r.Member, "sinit#3-2");
268 //Assert.IsTrue (Object.ReferenceEquals (XamlLanguage.Type.GetMember ("Type"), r.Member), "sinit#3-3");
270 Assert.IsTrue (r.Read (), "vinit#1");
271 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
272 Assert.AreEqual ("x:Int32", r.Value, "vinit#3"); // string
274 Assert.IsTrue (r.Read (), "einit#1");
275 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
277 Assert.IsTrue (r.Read (), "eo#1");
278 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
280 Assert.IsFalse (r.Read (), "end");
284 public void ReadListInt32Details ()
286 var r = GetReader ("List_Int32.xml");
288 Assert.IsTrue (r.Read (), "ns#1");
289 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
290 Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "ns#3");
291 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#4");
293 Assert.IsTrue (r.Read (), "ns2#1");
294 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns2#2");
295 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns2#3");
296 Assert.AreEqual ("x", r.Namespace.Prefix, "ns2#4");
298 Assert.IsTrue (r.Read (), "so#1");
299 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
300 var xt = new XamlType (typeof (List<int>), r.SchemaContext);
301 Assert.AreEqual (xt, r.Type, "so#3");
305 Assert.IsTrue (r.Read (), "scap#1");
306 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "scap#2");
307 Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "scap#3");
309 Assert.IsTrue (r.Read (), "vcap#1");
310 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vcap#2");
311 Assert.AreEqual ("5", r.Value, "vcap#3"); // string
313 Assert.IsTrue (r.Read (), "ecap#1");
314 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ecap#2");
316 Assert.IsTrue (r.Read (), "sItems#1");
317 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
318 Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems#3");
320 int [] values = {4, -5, 0, 255, int.MaxValue};
321 var ci = new CultureInfo ("en-US");
323 for (int i = 0; i < 5; i++) {
324 Assert.IsTrue (r.Read (), "soItem#1." + i);
325 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soItem#2." + i);
326 Assert.AreEqual (XamlLanguage.Int32, r.Type, "soItem#3." + i);
328 Assert.IsTrue (r.Read (), "sItem#1." + i);
329 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItem#2." + i);
330 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sItem#3." + i);
332 Assert.IsTrue (r.Read (), "vItem#1." + i);
333 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vItem#2." + i);
334 Assert.AreEqual (values [i].ToString (ci), r.Value, "vItem#3." + i);
336 Assert.IsTrue (r.Read (), "eItem#1." + i);
337 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItem#2." + i);
339 Assert.IsTrue (r.Read (), "eoItem#1");
340 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoItem#2");
343 Assert.IsTrue (r.Read (), "eItems#1");
344 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItems#2");
346 Assert.IsTrue (r.Read (), "eo#1");
347 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
349 Assert.IsFalse (r.Read (), "end");
353 public void ReadStringDetails ()
355 var r = GetReader ("String.xml");
357 Assert.IsTrue (r.Read (), "ns#1");
358 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
359 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
361 Assert.IsTrue (r.Read (), "so#1");
362 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
363 Assert.AreEqual (XamlLanguage.String, r.Type, "so#3");
367 Assert.IsTrue (r.Read (), "sinit#1");
368 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
369 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sinit#3");
371 Assert.IsTrue (r.Read (), "vinit#1");
372 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
373 Assert.AreEqual ("foo", r.Value, "vinit#3"); // string
375 Assert.IsTrue (r.Read (), "einit#1");
376 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
378 Assert.IsTrue (r.Read (), "eo#1");
379 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
381 Assert.IsFalse (r.Read (), "end");
385 public void ReadArrayInt32Details ()
387 var r = GetReader ("Array_Int32.xml");
389 Assert.IsTrue (r.Read (), "ns#1");
390 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
391 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
392 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#4");
394 Assert.IsTrue (r.Read (), "soa#1");
395 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soa#2");
396 var xt = new XamlType (typeof (ArrayExtension), r.SchemaContext);
397 Assert.AreEqual (xt, r.Type, "soa#3");
402 Assert.IsTrue (r.Read (), "stype#1");
403 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "stype#2");
404 Assert.AreEqual (xt.GetMember ("Type"), r.Member, "stype#3");
407 Assert.IsTrue (r.Read (), "vtype#1");
408 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "type#2");
409 Assert.AreEqual ("x:Int32", r.Value, "vtype#3"); // string value
411 Assert.IsTrue (r.Read (), "etype#1");
412 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ecap#2");
415 Assert.IsTrue (r.Read (), "sItemsA#1");
416 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItemsA#2");
417 Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sItemsA#3");
420 Assert.IsTrue (r.Read (), "go#1");
421 Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
422 Assert.IsNull (r.Type, "go#3");
423 Assert.IsNull (r.Member, "go#4");
424 Assert.IsNull (r.Value, "go#5");
426 Assert.IsTrue (r.Read (), "sItems#1");
427 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
428 Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems#3");
430 int [] values = {4, -5, 0, 255, int.MaxValue};
431 var ci = new CultureInfo ("en-US");
433 for (int i = 0; i < 5; i++) {
434 Assert.IsTrue (r.Read (), "soItem#1." + i);
435 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soItem#2." + i);
436 Assert.AreEqual (XamlLanguage.Int32, r.Type, "soItem#3." + i);
438 Assert.IsTrue (r.Read (), "sItem#1." + i);
439 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItem#2." + i);
440 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sItem#3." + i);
442 Assert.IsTrue (r.Read (), "vItem#1." + i);
443 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vItem#2." + i);
444 Assert.AreEqual (values [i].ToString (ci), r.Value, "vItem#3." + i);
446 Assert.IsTrue (r.Read (), "eItem#1." + i);
447 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItem#2." + i);
449 Assert.IsTrue (r.Read (), "eoItem#1");
450 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoItem#2");
453 Assert.IsTrue (r.Read (), "eItems#1");
454 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItems#2");
457 Assert.IsTrue (r.Read (), "eog#1");
458 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
460 // end of ArrayExtension.Items
461 Assert.IsTrue (r.Read (), "eItemsA#1");
462 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItemsA#2");
464 // end of ArrayExtension
465 Assert.IsTrue (r.Read (), "eoa#1");
466 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoa#2");
468 Assert.IsFalse (r.Read (), "end");
472 public void ReadNullDetails ()
474 var r = GetReader ("NullExtension.xml");
476 Assert.IsTrue (r.Read (), "ns#1");
477 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
478 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
479 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#4");
481 Assert.IsTrue (r.Read (), "so#1");
482 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
483 var xt = new XamlType (typeof (NullExtension), r.SchemaContext);
484 Assert.AreEqual (xt, r.Type, "so#3");
488 // end of NullExtension
489 Assert.IsTrue (r.Read (), "eo#1");
490 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
492 Assert.IsFalse (r.Read (), "end");
496 public void ReadReferenceDetails ()
498 var r = GetReader ("Reference.xml");
500 Assert.IsTrue (r.Read (), "ns#1");
501 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
502 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
503 Assert.AreEqual ("x", r.Namespace.Prefix, "ns#4");
505 Assert.IsTrue (r.Read (), "so#1");
506 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
507 var xt = new XamlType (typeof (Reference), r.SchemaContext);
508 Assert.AreEqual (xt, r.Type, "so#3");
511 Assert.IsTrue (r.Read (), "sbase#1");
512 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
513 Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
515 Assert.IsTrue (r.Read (), "vbase#1");
516 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
517 Assert.IsTrue (r.Value is string, "vbase#3");
519 Assert.IsTrue (r.Read (), "ebase#1");
520 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
523 Assert.IsTrue (r.Read (), "sinit#1");
524 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
525 Assert.AreEqual (xt.GetMember ("Name"), r.Member, "sinit#3");
527 Assert.IsTrue (r.Read (), "vinit#1");
528 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
529 Assert.AreEqual ("FooBar", r.Value, "vinit#3"); // string
531 Assert.IsTrue (r.Read (), "einit#1");
532 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
535 Assert.IsTrue (r.Read (), "eo#1");
536 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
538 Assert.IsFalse (r.Read (), "end");
542 public void ReadGuidFactoryMethodDetails ()
544 var r = GetReader ("GuidFactoryMethod.xml");
546 Assert.IsTrue (r.Read (), "ns#1");
547 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
548 Assert.AreEqual ("clr-namespace:System;assembly=mscorlib", r.Namespace.Namespace, "ns#3");
549 Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#4");
551 Assert.IsTrue (r.Read (), "ns2#1");
552 Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns2#2");
553 Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns2#3");
554 Assert.AreEqual ("x", r.Namespace.Prefix, "ns2#4");
556 Assert.IsTrue (r.Read (), "so#1");
557 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
558 var xt = r.SchemaContext.GetXamlType (typeof (Guid));
559 Assert.AreEqual (xt, r.Type, "so#3");
563 Assert.IsTrue (r.Read (), "sfactory#1");
564 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sfactory#2");
565 Assert.AreEqual (XamlLanguage.FactoryMethod, r.Member, "sfactory#3");
567 Assert.IsTrue (r.Read (), "vfactory#1");
568 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vfactory#2");
569 Assert.AreEqual ("Parse", r.Value, "vfactory#3"); // string
571 Assert.IsTrue (r.Read (), "efactory#1");
572 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "efactory#2");
574 Assert.IsTrue (r.Read (), "sarg#1");
575 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sarg#2");
576 Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sarg#3");
578 Assert.IsTrue (r.Read (), "sarg1#1");
579 Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sarg1#2");
580 Assert.AreEqual (XamlLanguage.String, r.Type, "sarg1#3");
582 Assert.IsTrue (r.Read (), "sInit#1");
583 Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sInit#2");
584 Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sInit#3");
586 Assert.IsTrue (r.Read (), "varg1#1");
587 Assert.AreEqual (XamlNodeType.Value, r.NodeType, "varg1#2");
588 Assert.AreEqual ("9c3345ec-8922-4662-8e8d-a4e41f47cf09", r.Value, "varg1#3");
590 Assert.IsTrue (r.Read (), "eInit#1");
591 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eInit#2");
593 Assert.IsTrue (r.Read (), "earg1#1");
594 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "earg1#2");
596 Assert.IsTrue (r.Read (), "earg#1");
597 Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "earg#2");
600 Assert.IsTrue (r.Read (), "eo#1");
601 Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
603 Assert.IsFalse (r.Read (), "end");