Merge pull request #485 from mtausig/master
[mono.git] / mcs / class / System.Xaml / Test / System.Xaml / XamlXmlReaderTest.cs
old mode 100644 (file)
new mode 100755 (executable)
index ce9ab01..b8dd211
@@ -34,19 +34,24 @@ using System.Xaml.Schema;
 using System.Xml;
 using NUnit.Framework;
 
-using Category = NUnit.Framework.CategoryAttribute;
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
 
 namespace MonoTests.System.Xaml
 {
        [TestFixture]
-       public class XamlXmlReaderTest
+       public class XamlXmlReaderTest : XamlReaderTestBase
        {
-
                // read test
 
                XamlReader GetReader (string filename)
                {
-                       return new XamlXmlReader (XmlReader.Create (Path.Combine ("Test/XmlFiles", filename), new XmlReaderSettings () { CloseInput =true }));
+#if NET_4_5
+                       string ver = "net_4_5";
+#else
+                       string ver = "net_4_0";
+#endif
+                       string xml = File.ReadAllText (Path.Combine ("Test/XmlFiles", filename)).Replace ("net_4_0", ver);
+                       return new XamlXmlReader (XmlReader.Create (new StringReader (xml)));
                }
 
                void ReadTest (string filename)
@@ -56,72 +61,68 @@ namespace MonoTests.System.Xaml
                                r.Read ();
                }
 
-               void LoadTest (string filename, Type type)
-               {
-                       var obj = XamlServices.Load (GetReader (filename));
-                       Assert.AreEqual (type, obj.GetType (), "type");
-               }
-
                [Test]
-               public void Read_String ()
+               public void SchemaContext ()
                {
-                       ReadTest ("String.xml");
-                       //LoadTest ("String.xml", typeof (string));
+                       Assert.AreNotEqual (XamlLanguage.Type.SchemaContext, new XamlXmlReader (XmlReader.Create (new StringReader ("<root/>"))).SchemaContext, "#1");
                }
 
                [Test]
                public void Read_Int32 ()
                {
                        ReadTest ("Int32.xml");
-                       //LoadTest ("Int32.xml", typeof (int));
                }
 
                [Test]
                public void Read_DateTime ()
                {
                        ReadTest ("DateTime.xml");
-                       //LoadTest ("DateTime.xml", typeof (DateTime));
                }
 
                [Test]
                public void Read_TimeSpan ()
                {
                        ReadTest ("TimeSpan.xml");
-                       //LoadTest ("TimeSpan.xml", typeof (TimeSpan));
                }
 
                [Test]
                public void Read_ArrayInt32 ()
                {
                        ReadTest ("Array_Int32.xml");
-                       //LoadTest ("Array_Int32.xml", typeof (int []));
-               }
-
-               [Test]
-               public void Read_ListInt32 ()
-               {
-                       ReadTest ("List_Int32.xml");
-                       //LoadTest ("List_Int32.xml", typeof (List<int>));
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Read_DictionaryInt32String ()
                {
                        ReadTest ("Dictionary_Int32_String.xml");
-                       //LoadTest ("Dictionary_Int32_String.xml", typeof (Dictionary<int,string>));
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Read_DictionaryStringType ()
                {
                        ReadTest ("Dictionary_String_Type.xml");
-                       //LoadTest ("Dictionary_String_Type.xml", typeof (Dictionary<string,Type>));
                }
 
                [Test]
-               public void Read1 ()
+               public void Read_SilverlightApp1 ()
+               {
+                       ReadTest ("SilverlightApp1.xaml");
+               }
+
+               [Test]
+               public void Read_Guid ()
+               {
+                       ReadTest ("Guid.xml");
+               }
+
+               [Test]
+               public void Read_GuidFactoryMethod ()
+               {
+                       ReadTest ("GuidFactoryMethod.xml");
+               }
+
+               [Test]
+               public void ReadInt32Details ()
                {
                        var r = GetReader ("Int32.xml");
 
@@ -133,16 +134,7 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
                        Assert.AreEqual (XamlLanguage.Int32, r.Type, "so#3");
 
-                       Assert.IsTrue (r.Read (), "sbase#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
-                       Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
-
-                       Assert.IsTrue (r.Read (), "vbase#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
-                       Assert.IsTrue (r.Value is string, "vbase#3");
-
-                       Assert.IsTrue (r.Read (), "ebase#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
+                       ReadBase (r);
 
                        Assert.IsTrue (r.Read (), "sinit#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
@@ -162,7 +154,7 @@ namespace MonoTests.System.Xaml
                }
 
                [Test]
-               public void Read2 ()
+               public void ReadDateTimeDetails ()
                {
                        var r = GetReader ("DateTime.xml");
 
@@ -174,15 +166,7 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
                        Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (DateTime)), r.Type, "so#3");
 
-                       Assert.IsTrue (r.Read (), "sbase#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
-                       Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
-
-                       Assert.IsTrue (r.Read (), "vbase#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
-                       Assert.IsTrue (r.Value is string, "vbase#3");
-
-                       Assert.IsTrue (r.Read (), "ebase#21");
+                       ReadBase (r);
 
                        Assert.IsTrue (r.Read (), "sinit#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
@@ -201,46 +185,63 @@ namespace MonoTests.System.Xaml
                }
 
                [Test]
-               public void Read3 ()
+               public void ReadGuidFactoryMethodDetails ()
                {
-                       var r = GetReader ("Type.xml");
+                       var r = GetReader ("GuidFactoryMethod.xml");
 
                        Assert.IsTrue (r.Read (), "ns#1");
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
-                       Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3");
+                       Assert.AreEqual ("clr-namespace:System;assembly=mscorlib", r.Namespace.Namespace, "ns#3");
+                       Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#4");
+
+                       Assert.IsTrue (r.Read (), "ns2#1");
+                       Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns2#2");
+                       Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns2#3");
+                       Assert.AreEqual ("x", r.Namespace.Prefix, "ns2#4");
 
                        Assert.IsTrue (r.Read (), "so#1");
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
-                       Assert.AreEqual (XamlLanguage.Type, r.Type, "so#3");
+                       var xt = r.SchemaContext.GetXamlType (typeof (Guid));
+                       Assert.AreEqual (xt, r.Type, "so#3");
 
-                       Assert.IsTrue (r.Read (), "sbase#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
-                       Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
+                       ReadBase (r);
 
-                       Assert.IsTrue (r.Read (), "vbase#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
-                       Assert.IsTrue (r.Value is string, "vbase#3");
+                       Assert.IsTrue (r.Read (), "sfactory#1");
+                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sfactory#2");
+                       Assert.AreEqual (XamlLanguage.FactoryMethod, r.Member, "sfactory#3");
 
-                       Assert.IsTrue (r.Read (), "ebase#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
+                       Assert.IsTrue (r.Read (), "vfactory#1");
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vfactory#2");
+                       Assert.AreEqual ("Parse", r.Value, "vfactory#3"); // string
 
-                       Assert.IsTrue (r.Read (), "sinit#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
-                       // FIXME: They are identical on .NET.
-                       // They aren't on mono, every GetMember() returns different object
-                       // (it is the same as .NET; see XamlMemberTest.EqualsTest.) 
-                       // and XamlMember is almost non-comparable unless they
-                       // are identical, so we fail here.
-                       Assert.AreEqual (XamlLanguage.Type.GetMember ("Type").ToString (), r.Member.ToString (), "sinit#3");
-                       //Assert.AreEqual (XamlLanguage.Type.GetMember ("Type"), r.Member, "sinit#3-2");
-                       //Assert.IsTrue (Object.ReferenceEquals (XamlLanguage.Type.GetMember ("Type"), r.Member), "sinit#3-3");
+                       Assert.IsTrue (r.Read (), "efactory#1");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "efactory#2");
 
-                       Assert.IsTrue (r.Read (), "vinit#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
-                       Assert.AreEqual ("x:Int32", r.Value, "vinit#3"); // string
+                       Assert.IsTrue (r.Read (), "sarg#1");
+                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sarg#2");
+                       Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sarg#3");
+
+                       Assert.IsTrue (r.Read (), "sarg1#1");
+                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sarg1#2");
+                       Assert.AreEqual (XamlLanguage.String, r.Type, "sarg1#3");
+
+                       Assert.IsTrue (r.Read (), "sInit#1");
+                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sInit#2");
+                       Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sInit#3");
+
+                       Assert.IsTrue (r.Read (), "varg1#1");
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "varg1#2");
+                       Assert.AreEqual ("9c3345ec-8922-4662-8e8d-a4e41f47cf09", r.Value, "varg1#3");
+
+                       Assert.IsTrue (r.Read (), "eInit#1");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eInit#2");
+
+                       Assert.IsTrue (r.Read (), "earg1#1");
+                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "earg1#2");
+
+                       Assert.IsTrue (r.Read (), "earg#1");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "earg#2");
 
-                       Assert.IsTrue (r.Read (), "einit#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
 
                        Assert.IsTrue (r.Read (), "eo#1");
                        Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
@@ -249,82 +250,484 @@ namespace MonoTests.System.Xaml
                }
 
                [Test]
-               [Category ("NotWorking")]
-               public void Read4 ()
+               public void ReadEventStore ()
+               {
+                       var r = GetReader ("EventStore2.xml");
+
+                       var xt = r.SchemaContext.GetXamlType (typeof (EventStore));
+                       var xm = xt.GetMember ("Event1");
+                       Assert.IsNotNull (xt, "premise#1");
+                       Assert.IsNotNull (xm, "premise#2");
+                       Assert.IsTrue (xm.IsEvent, "premise#3");
+                       while (true) {
+                               r.Read ();
+                               if (r.Member != null && r.Member.IsEvent)
+                                       break;
+                               if (r.IsEof)
+                                       Assert.Fail ("Items did not appear");
+                       }
+
+                       Assert.AreEqual (xm, r.Member, "#x1");
+                       Assert.AreEqual ("Event1", r.Member.Name, "#x2");
+
+                       Assert.IsTrue (r.Read (), "#x11");
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#x12");
+                       Assert.AreEqual ("Method1", r.Value, "#x13");
+
+                       Assert.IsTrue (r.Read (), "#x21");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#x22");
+
+                       xm = xt.GetMember ("Event2");
+                       Assert.IsTrue (r.Read (), "#x31");
+                       Assert.AreEqual (xm, r.Member, "#x32");
+                       Assert.AreEqual ("Event2", r.Member.Name, "#x33");
+
+                       Assert.IsTrue (r.Read (), "#x41");
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#x42");
+                       Assert.AreEqual ("Method2", r.Value, "#x43");
+
+                       Assert.IsTrue (r.Read (), "#x51");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#x52");
+
+                       Assert.IsTrue (r.Read (), "#x61");
+                       Assert.AreEqual ("Event1", r.Member.Name, "#x62");
+
+                       Assert.IsTrue (r.Read (), "#x71");
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#x72");
+                       Assert.AreEqual ("Method3", r.Value, "#x73"); // nonexistent, but no need to raise an error.
+
+                       Assert.IsTrue (r.Read (), "#x81");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#x82");
+
+                       while (!r.IsEof)
+                               r.Read ();
+
+                       r.Close ();
+               }
+
+               // common XamlReader tests.
+
+               [Test]
+               public void Read_String ()
+               {
+                       var r = GetReader ("String.xml");
+                       Read_String (r);
+               }
+
+               [Test]
+               public void WriteNullMemberAsObject ()
+               {
+                       var r = GetReader ("TestClass4.xml");
+                       WriteNullMemberAsObject (r, null);
+               }
+               
+               [Test]
+               public void StaticMember ()
+               {
+                       var r = GetReader ("TestClass5.xml");
+                       StaticMember (r);
+               }
+
+               [Test]
+               public void Skip ()
+               {
+                       var r = GetReader ("String.xml");
+                       Skip (r);
+               }
+               
+               [Test]
+               public void Skip2 ()
+               {
+                       var r = GetReader ("String.xml");
+                       Skip2 (r);
+               }
+
+               [Test]
+               public void Read_XmlDocument ()
+               {
+                       var doc = new XmlDocument ();
+                       doc.LoadXml ("<root xmlns='urn:foo'><elem attr='val' /></root>");
+                       // note that corresponding XamlXmlWriter is untested yet.
+                       var r = GetReader ("XmlDocument.xml");
+                       Read_XmlDocument (r);
+               }
+
+               [Test]
+               public void Read_NonPrimitive ()
+               {
+                       var r = GetReader ("NonPrimitive.xml");
+                       Read_NonPrimitive (r);
+               }
+               
+               [Test]
+               public void Read_TypeExtension ()
+               {
+                       var r = GetReader ("Type.xml");
+                       Read_TypeOrTypeExtension (r, null, XamlLanguage.Type.GetMember ("Type"));
+               }
+               
+               [Test]
+               public void Read_Type2 ()
+               {
+                       var r = GetReader ("Type2.xml");
+                       Read_TypeOrTypeExtension2 (r, null, XamlLanguage.Type.GetMember ("Type"));
+               }
+               
+               [Test]
+               public void Read_Reference ()
+               {
+                       var r = GetReader ("Reference.xml");
+                       Read_Reference (r);
+               }
+               
+               [Test]
+               public void Read_Null ()
+               {
+                       var r = GetReader ("NullExtension.xml");
+                       Read_NullOrNullExtension (r, null);
+               }
+               
+               [Test]
+               public void Read_StaticExtension ()
+               {
+                       var r = GetReader ("StaticExtension.xml");
+                       Read_StaticExtension (r, XamlLanguage.Static.GetMember ("Member"));
+               }
+               
+               [Test]
+               public void Read_ListInt32 ()
                {
                        var r = GetReader ("List_Int32.xml");
+                       Read_ListInt32 (r, null, new int [] {5, -3, int.MaxValue, 0}.ToList ());
+               }
+               
+               [Test]
+               public void Read_ListInt32_2 ()
+               {
+                       var r = GetReader ("List_Int32_2.xml");
+                       Read_ListInt32 (r, null, new int [0].ToList ());
+               }
+               
+               [Test]
+               public void Read_ListType ()
+               {
+                       var r = GetReader ("List_Type.xml");
+                       Read_ListType (r, false);
+               }
 
-                       Assert.IsTrue (r.Read (), "ns#1");
-                       Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2");
-                       Assert.AreEqual ("clr-namespace:System.Collections.Generic;assembly=mscorlib", r.Namespace.Namespace, "ns#3");
-                       Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#4");
+               [Test]
+               public void Read_ListArray ()
+               {
+                       var r = GetReader ("List_Array.xml");
+                       Read_ListArray (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "ns2#1");
-                       Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns2#2");
-                       Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns2#3");
-                       Assert.AreEqual ("x", r.Namespace.Prefix, "ns2#4");
+               [Test]
+               public void Read_ArrayList ()
+               {
+                       var r = GetReader ("ArrayList.xml");
+                       Read_ArrayList (r);
+               }
+               
+               [Test]
+               public void Read_Array ()
+               {
+                       var r = GetReader ("ArrayExtension.xml");
+                       Read_ArrayOrArrayExtensionOrMyArrayExtension (r, null, typeof (ArrayExtension));
+               }
+               
+               [Test]
+               public void Read_MyArrayExtension ()
+               {
+                       var r = GetReader ("MyArrayExtension.xml");
+                       Read_ArrayOrArrayExtensionOrMyArrayExtension (r, null, typeof (MyArrayExtension));
+               }
 
-                       Assert.IsTrue (r.Read (), "so#1");
-                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
-                       var xt = new XamlType (typeof (List<int>), r.SchemaContext);
-                       Assert.AreEqual (xt, r.Type, "so#3");
+               [Test]
+               public void Read_ArrayExtension2 ()
+               {
+                       var r = GetReader ("ArrayExtension2.xml");
+                       Read_ArrayExtension2 (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "sbase#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sbase#2");
-                       Assert.AreEqual (XamlLanguage.Base, r.Member, "sbase#3");
+               [Test]
+               public void Read_CustomMarkupExtension ()
+               {
+                       var r = GetReader ("MyExtension.xml");
+                       Read_CustomMarkupExtension (r);
+               }
+               
+               [Test]
+               public void Read_CustomMarkupExtension2 ()
+               {
+                       var r = GetReader ("MyExtension2.xml");
+                       Read_CustomMarkupExtension2 (r);
+               }
+               
+               [Test]
+               public void Read_CustomMarkupExtension3 ()
+               {
+                       var r = GetReader ("MyExtension3.xml");
+                       Read_CustomMarkupExtension3 (r);
+               }
+               
+               [Test]
+               public void Read_CustomMarkupExtension4 ()
+               {
+                       var r = GetReader ("MyExtension4.xml");
+                       Read_CustomMarkupExtension4 (r);
+               }
+               
+               [Test]
+               public void Read_CustomMarkupExtension6 ()
+               {
+                       var r = GetReader ("MyExtension6.xml");
+                       Read_CustomMarkupExtension6 (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "vbase#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vbase#2");
-                       Assert.IsTrue (r.Value is string, "vbase#3");
+               [Test]
+               public void Read_ArgumentAttributed ()
+               {
+                       var obj = new ArgumentAttributed ("foo", "bar");
+                       var r = GetReader ("ArgumentAttributed.xml");
+                       Read_ArgumentAttributed (r, obj);
+               }
 
-                       Assert.IsTrue (r.Read (), "ebase#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
+               [Test]
+               public void Read_Dictionary ()
+               {
+                       var obj = new Dictionary<string,object> ();
+                       obj ["Foo"] = 5.0;
+                       obj ["Bar"] = -6.5;
+                       var r = GetReader ("Dictionary_String_Double.xml");
+                       Read_Dictionary (r);
+               }
+               
+               [Test]
+               public void Read_Dictionary2 ()
+               {
+                       var obj = new Dictionary<string,Type> ();
+                       obj ["Foo"] = typeof (int);
+                       obj ["Bar"] = typeof (Dictionary<Type,XamlType>);
+                       var r = GetReader ("Dictionary_String_Type_2.xml");
+                       Read_Dictionary2 (r, XamlLanguage.Type.GetMember ("Type"));
+               }
+               
+               [Test]
+               public void PositionalParameters2 ()
+               {
+                       var r = GetReader ("PositionalParametersWrapper.xml");
+                       PositionalParameters2 (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "scap#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "scap#2");
-                       Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "scap#3");
+               [Test]
+               public void ComplexPositionalParameters ()
+               {
+                       var r = GetReader ("ComplexPositionalParameterWrapper.xml");
+                       ComplexPositionalParameters (r);
+               }
+               
+               [Test]
+               public void Read_ListWrapper ()
+               {
+                       var r = GetReader ("ListWrapper.xml");
+                       Read_ListWrapper (r);
+               }
+               
+               [Test]
+               public void Read_ListWrapper2 () // read-write list member.
+               {
+                       var r = GetReader ("ListWrapper2.xml");
+                       Read_ListWrapper2 (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "vcap#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vcap#2");
-                       Assert.AreEqual ("5", r.Value, "vcap#3"); // string
+               [Test]
+               public void Read_ContentIncluded ()
+               {
+                       var r = GetReader ("ContentIncluded.xml");
+                       Read_ContentIncluded (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "ecap#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ecap#2");
+               [Test]
+               public void Read_PropertyDefinition ()
+               {
+                       var r = GetReader ("PropertyDefinition.xml");
+                       Read_PropertyDefinition (r);
+               }
+
+               [Test]
+               public void Read_StaticExtensionWrapper ()
+               {
+                       var r = GetReader ("StaticExtensionWrapper.xml");
+                       Read_StaticExtensionWrapper (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "sItems#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
-                       Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems#3");
+               [Test]
+               public void Read_TypeExtensionWrapper ()
+               {
+                       var r = GetReader ("TypeExtensionWrapper.xml");
+                       Read_TypeExtensionWrapper (r);
+               }
 
-                       int [] values = {4, -5, 0, 255, int.MaxValue};
-                       var ci = new CultureInfo ("en-US");
+               [Test]
+               public void Read_NamedItems ()
+               {
+                       var r = GetReader ("NamedItems.xml");
+                       Read_NamedItems (r, false);
+               }
 
-                       for (int i = 0; i < 5; i++) {
-                               Assert.IsTrue (r.Read (), "soItem#1." + i);
-                               Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soItem#2." + i);
-                               Assert.AreEqual (XamlLanguage.Int32, r.Type, "soItem#3." + i);
+               [Test]
+               public void Read_NamedItems2 ()
+               {
+                       var r = GetReader ("NamedItems2.xml");
+                       Read_NamedItems2 (r, false);
+               }
 
-                               Assert.IsTrue (r.Read (), "sItem#1." + i);
-                               Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItem#2." + i);
-                               Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sItem#3." + i);
+               [Test]
+               public void Read_XmlSerializableWrapper ()
+               {
+                       var r = GetReader ("XmlSerializableWrapper.xml");
+                       Read_XmlSerializableWrapper (r, false);
+               }
 
-                               Assert.IsTrue (r.Read (), "vItem#1." + i);
-                               Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vItem#2." + i);
-                               Assert.AreEqual (values [i].ToString (ci), r.Value, "vItem#3." + i);
+               [Test]
+               public void Read_XmlSerializable ()
+               {
+                       var r = GetReader ("XmlSerializable.xml");
+                       Read_XmlSerializable (r);
+               }
 
-                               Assert.IsTrue (r.Read (), "eItem#1." + i);
-                               Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItem#2." + i);
+               [Test]
+               public void Read_ListXmlSerializable ()
+               {
+                       var r = GetReader ("List_XmlSerializable.xml");
+                       Read_ListXmlSerializable (r);
+               }
 
-                               Assert.IsTrue (r.Read (), "eoItem#1");
-                               Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoItem#2");
-                       }
+               [Test]
+               public void Read_AttachedProperty ()
+               {
+                       var r = GetReader ("AttachedProperty.xml");
+                       Read_AttachedProperty (r);
+               }
 
-                       Assert.IsTrue (r.Read (), "eItems#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItems#2");
+               [Test]
+               public void Read_AbstractWrapper ()
+               {
+                       var r = GetReader ("AbstractContainer.xml");
+                       while (!r.IsEof)
+                               r.Read ();
+               }
 
-                       Assert.IsTrue (r.Read (), "eo#1");
-                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
+               [Test]
+               public void Read_ReadOnlyPropertyContainer ()
+               {
+                       var r = GetReader ("ReadOnlyPropertyContainer.xml");
+                       while (!r.IsEof)
+                               r.Read ();
+               }
 
-                       Assert.IsFalse (r.Read (), "end");
+               [Test]
+               public void Read_TypeConverterOnListMember ()
+               {
+                       var r = GetReader ("TypeConverterOnListMember.xml");
+                       Read_TypeConverterOnListMember (r);
+               }
+
+               [Test]
+               public void Read_EnumContainer ()
+               {
+                       var r = GetReader ("EnumContainer.xml");
+                       Read_EnumContainer (r);
+               }
+
+               [Test]
+               public void Read_CollectionContentProperty ()
+               {
+                       var r = GetReader ("CollectionContentProperty.xml");
+                       Read_CollectionContentProperty (r, false);
+               }
+
+               [Test]
+               public void Read_CollectionContentProperty2 ()
+               {
+                       // bug #681835
+                       var r = GetReader ("CollectionContentProperty2.xml");
+                       Read_CollectionContentProperty (r, true);
+               }
+
+               [Test]
+               public void Read_CollectionContentPropertyX ()
+               {
+                       var r = GetReader ("CollectionContentPropertyX.xml");
+                       Read_CollectionContentPropertyX (r, false);
+               }
+
+               [Test]
+               public void Read_CollectionContentPropertyX2 ()
+               {
+                       var r = GetReader ("CollectionContentPropertyX2.xml");
+                       Read_CollectionContentPropertyX (r, true);
+               }
+
+               [Test]
+               public void Read_AmbientPropertyContainer ()
+               {
+                       var r = GetReader ("AmbientPropertyContainer.xml");
+                       Read_AmbientPropertyContainer (r, false);
+               }
+
+               [Test]
+               public void Read_AmbientPropertyContainer2 ()
+               {
+                       var r = GetReader ("AmbientPropertyContainer2.xml");
+                       Read_AmbientPropertyContainer (r, true);
+               }
+
+               [Test]
+               public void Read_NullableContainer ()
+               {
+                       var r = GetReader ("NullableContainer.xml");
+                       Read_NullableContainer (r);
+               }
+
+               // It is not really a common test; it just makes use of base helper methods.
+               [Test]
+               public void Read_DirectListContainer ()
+               {
+                       var r = GetReader ("DirectListContainer.xml");
+                       Read_DirectListContainer (r);
+               }
+
+               // It is not really a common test; it just makes use of base helper methods.
+               [Test]
+               public void Read_DirectDictionaryContainer ()
+               {
+                       var r = GetReader ("DirectDictionaryContainer.xml");
+                       Read_DirectDictionaryContainer (r);
+               }
+
+               // It is not really a common test; it just makes use of base helper methods.
+               [Test]
+               public void Read_DirectDictionaryContainer2 ()
+               {
+                       var r = GetReader ("DirectDictionaryContainer2.xml");
+                       Read_DirectDictionaryContainer2 (r);
+               }
+               
+               [Test]
+               public void Read_ContentPropertyContainer ()
+               {
+                       var r = GetReader ("ContentPropertyContainer.xml");
+                       Read_ContentPropertyContainer (r);
+               }
+
+               #region non-common tests
+               [Test]
+               public void Bug680385 ()
+               {
+                       XamlServices.Load ("Test/XmlFiles/CurrentVersion.xaml");
                }
+               #endregion
        }
 }