Add and/or altered a bunch of XamlXmlReader tests based on common reader tests.
authorAtsushi Eno <atsushi@ximian.com>
Tue, 9 Nov 2010 16:11:44 +0000 (01:11 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Tue, 9 Nov 2010 16:11:44 +0000 (01:11 +0900)
Lots of tests are duplicate for the same XML inputs, so they are just removed.

13 files changed:
mcs/class/System.Xaml/Test/System.Xaml/XamlObjectReaderTest.cs
mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs
mcs/class/System.Xaml/Test/System.Xaml/XamlXmlWriterTest.cs
mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/ContentIncluded.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/List_Int32.xml
mcs/class/System.Xaml/Test/XmlFiles/NonPrimitive.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/StaticMember.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/TestClass4.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/TestClass5.xml [new file with mode: 0644]
mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml [new file with mode: 0644]

index b3d6c353242d8bea3f6c895c981a623103ae8628..b0438c284580215a7edcca0b3ccf996bd34b5df4 100755 (executable)
@@ -137,6 +137,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (new XamlType (typeof (string), r.SchemaContext), r.Type, "#23-2");
                        Assert.IsNull (r.Namespace, "#25");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
                        Assert.IsNotNull (r.Member, "#33");
@@ -181,6 +184,9 @@ namespace MonoTests.System.Xaml
 //                     Assert.IsTrue (r.Instance is TestClass4, "#17-3");
                        Assert.AreEqual (2, xt.GetAllMembers ().Count, "#17-4");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#21");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
                        Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#22-2");
@@ -242,6 +248,9 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (xt.GetAllMembers ().Any (xm => xm.Name == "Bar"), "#17-5");
                        Assert.IsTrue (xt.GetAllMembers ().Any (xm => xm.Name == "Baz"), "#17-6");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#21");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
                        Assert.AreEqual (xt.GetMember ("Bar"), r.Member, "#22-2");
@@ -281,6 +290,8 @@ namespace MonoTests.System.Xaml
                {
                        r.Read (); // NamespaceDeclaration
                        r.Read (); // Type
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
                        r.Read (); // Member (Initialization)
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#1");
                        r.Skip ();
@@ -335,6 +346,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "#17-2");
 //                     Assert.IsTrue (r.Instance is TestClass3, "#17-3");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#21");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#22");
                        Assert.AreEqual (xt.GetMember ("Nested"), r.Member, "#22-2");
@@ -357,7 +371,7 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (r.IsEof, "#47");
                }
 
-               protected void Read_TypeOrTypeExtension (XamlReader r, Action validateInstance)
+               protected void Read_TypeOrTypeExtension (XamlReader r, Action validateInstance, XamlMember ctorArgMember)
                {
                        Assert.IsTrue (r.Read (), "#11");
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
@@ -374,10 +388,13 @@ namespace MonoTests.System.Xaml
                        if (validateInstance != null)
                                validateInstance ();
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
                        Assert.IsNotNull (r.Member, "#33");
-                       Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#33-2");
+                       Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
                        Assert.IsNull (r.Type, "#34");
 //                     Assert.IsNull (r.Instance, "#35");
 
@@ -402,7 +419,7 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (r.IsEof, "#72");
                }
 
-               protected void Read_TypeOrTypeExtension2 (XamlReader r, Action validateInstance)
+               protected void Read_TypeOrTypeExtension2 (XamlReader r, Action validateInstance, XamlMember ctorArgMember)
                {
                        Assert.IsTrue (r.Read (), "#11");
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
@@ -424,9 +441,12 @@ namespace MonoTests.System.Xaml
                        if (validateInstance != null)
                                validateInstance ();
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
-                       Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#33-2");
+                       Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
 
                        Assert.IsTrue (r.Read (), "#41");
                        Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
@@ -455,6 +475,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "#23-2");
 //                     Assert.IsTrue (r.Instance is Reference, "#26");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
                        // unlike TypeExtension there is no PositionalParameters.
@@ -463,7 +486,7 @@ namespace MonoTests.System.Xaml
                        // It is a ContentProperty (besides [ConstructorArgument])
                        Assert.IsTrue (r.Read (), "#41");
                        Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
-                       Assert.AreEqual ("TestName", r.Value, "#43-2");
+                       Assert.AreEqual ("FooBar", r.Value, "#43-2");
 
                        Assert.IsTrue (r.Read (), "#51");
                        Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
@@ -490,6 +513,9 @@ namespace MonoTests.System.Xaml
                        if (validateInstance != null)
                                validateInstance ();
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#61");
                        Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
 
@@ -498,7 +524,7 @@ namespace MonoTests.System.Xaml
                }
 
                // almost identical to TypeExtension (only type/instance difference)
-               protected void Read_StaticExtension (XamlReader r)
+               protected void Read_StaticExtension (XamlReader r, XamlMember ctorArgMember)
                {
                        Assert.IsTrue (r.Read (), "#11");
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
@@ -512,9 +538,12 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (new XamlType (typeof (StaticExtension), r.SchemaContext), r.Type, "#23-2");
 //                     Assert.IsTrue (r.Instance is StaticExtension, "#26");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
-                       Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#33-2");
+                       Assert.AreEqual (ctorArgMember, r.Member, "#33-2");
 
                        Assert.IsTrue (r.Read (), "#41");
                        Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
@@ -556,6 +585,9 @@ namespace MonoTests.System.Xaml
 
                        // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
                        Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
@@ -574,8 +606,8 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#72-2");
                        Assert.AreEqual (XamlLanguage.Items, r.Member, "#72-3");
 
-                       string [] values = {"5", "-3", "0"};
-                       for (int i = 0; i < 3; i++) {
+                       string [] values = {"5", "-3", "2147483647", "0"};
+                       for (int i = 0; i < 4; i++) {
                                Assert.IsTrue (r.Read (), i + "#73");
                                Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
                                Assert.IsTrue (r.Read (), i + "#74");
@@ -624,6 +656,9 @@ namespace MonoTests.System.Xaml
 //                     Assert.AreEqual (obj, r.Instance, "#26");
                        Assert.IsTrue (xt.IsCollection, "#27");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
 
                        Assert.IsTrue (r.Read (), "#31");
@@ -688,6 +723,9 @@ namespace MonoTests.System.Xaml
                        if (validateInstance != null)
                                validateInstance ();
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        // This assumption on member ordering ("Type" then "Items") is somewhat wrong, and we might have to adjust it in the future.
 
                        Assert.IsTrue (r.Read (), "#31");
@@ -762,6 +800,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "#23-2");
 //                     Assert.IsTrue (r.Instance is ArrayExtension, "#26");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#31");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
                        Assert.AreEqual (xt.GetMember ("Type"), r.Member, "#33-2");
@@ -855,7 +896,7 @@ namespace MonoTests.System.Xaml
                {
                        Read_TypeOrTypeExtension (r, delegate {
                                Assert.IsTrue (r.Instance is TypeExtension, "#26");
-                               });
+                               }, XamlLanguage.PositionalParameters);
                }
                
                [Test]
@@ -876,13 +917,13 @@ namespace MonoTests.System.Xaml
                {
                        Read_TypeOrTypeExtension2 (r, delegate {
                                Assert.IsTrue (r.Instance is TypeExtension, "#26");
-                       });
+                       }, XamlLanguage.PositionalParameters);
                }
                
                [Test]
                public void Read_Reference ()
                {
-                       var r = new XamlObjectReader (new Reference ("TestName"));
+                       var r = new XamlObjectReader (new Reference ("FooBar"));
                        Read_Reference (r);
                }
                
@@ -912,13 +953,13 @@ namespace MonoTests.System.Xaml
                public void Read_StaticExtension ()
                {
                        var r = new XamlObjectReader (new StaticExtension ("FooBar"));
-                       Read_StaticExtension (r);
+                       Read_StaticExtension (r, XamlLanguage.PositionalParameters);
                }
                
                [Test]
                public void Read_ListInt32 ()
                {
-                       var obj = new List<int> (new int [] {5, -3, 0});
+                       var obj = new List<int> (new int [] {5, -3, int.MaxValue, 0});
                        Read_ListInt32 (obj);
                }
                
@@ -1116,6 +1157,9 @@ namespace MonoTests.System.Xaml
                        Assert.IsFalse (r.IsEof, "#1");
                        var xt = r.Type;
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        r.Read ();
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#2-1");
                        Assert.IsFalse (r.IsEof, "#2-2");
@@ -1165,6 +1209,10 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
                        var xt = r.Type;
                        Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension2)), xt, "#2");
+
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#3");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
                        Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
@@ -1183,6 +1231,10 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
                        var xt = r.Type;
                        Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension3)), xt, "#2");
+
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#3");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
                        Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
@@ -1201,6 +1253,10 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
                        var xt = r.Type;
                        Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension4)), xt, "#2");
+
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#3");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
                        Assert.AreEqual (XamlLanguage.Initialization, r.Member, "#4");
@@ -1219,6 +1275,10 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
                        var xt = r.Type;
                        Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension5)), xt, "#2");
+
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#3");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
                        Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#4");
@@ -1241,6 +1301,10 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#2-0");
                        var xt = r.Type;
                        Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (MyExtension6)), xt, "#2");
+
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#3");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-2");
                        Assert.AreEqual (xt.GetMember ("Foo"), r.Member, "#4"); // this is the difference between MyExtension5 and MyExtension6: it outputs constructor arguments as normal members
@@ -1271,6 +1335,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "so#1-3");
 //                     Assert.AreEqual (obj, r.Instance, "so#1-4");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "smitems#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
                        Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
@@ -1319,7 +1386,7 @@ namespace MonoTests.System.Xaml
                        Assert.IsFalse (r.Read (), "end");
                }
 
-               protected void Read_Dictionary2 (XamlReader r)
+               protected void Read_Dictionary2 (XamlReader r, XamlMember ctorArgMember)
                {
                        Assert.IsTrue (r.Read (), "ns#1-1");
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
@@ -1351,6 +1418,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "so#1-3");
 //                     Assert.AreEqual (obj, r.Instance, "so#1-4");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "smitems#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
                        Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
@@ -1363,27 +1433,13 @@ namespace MonoTests.System.Xaml
                                var xt2 = XamlLanguage.Type;
                                Assert.AreEqual (xt2, r.Type, "soi#1-3." + i);
 
-                               Assert.IsTrue (r.Read (), "smi#1-1." + i);
-                               Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#1-2." + i);
-                               Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smi#1-3." + i);
-
-                               Assert.IsTrue (r.Read (), "svi#1-1." + i);
-                               Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#1-2." + i);
-                               Assert.AreEqual (i == 0 ? "x:Int32" : "Dictionary(s:Type, sx:XamlType)", r.Value, "svi#1-3." + i);
-
-                               Assert.IsTrue (r.Read (), "emi#1-1." + i);
-                               Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#1-2." + i);
-
-                               Assert.IsTrue (r.Read (), "smi#2-1." + i);
-                               Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#2-2." + i);
-                               Assert.AreEqual (XamlLanguage.Key, r.Member, "smi#2-3." + i);
-
-                               Assert.IsTrue (r.Read (), "svi#2-1." + i);
-                               Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#2-2." + i);
-                               Assert.AreEqual (i == 0 ? "Foo" : "Bar", r.Value, "svi#2-3." + i);
-
-                               Assert.IsTrue (r.Read (), "emi#2-1." + i);
-                               Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#2-2." + i);
+                               if (r is XamlObjectReader) {
+                                       Read_Dictionary2_ConstructorArgument (r, ctorArgMember, i);
+                                       Read_Dictionary2_Key (r, i);
+                               } else {
+                                       Read_Dictionary2_Key (r, i);
+                                       Read_Dictionary2_ConstructorArgument (r, ctorArgMember, i);
+                               }
 
                                Assert.IsTrue (r.Read (), "eoi#1-1." + i);
                                Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#1-2." + i);
@@ -1399,6 +1455,34 @@ namespace MonoTests.System.Xaml
                        Assert.IsFalse (r.Read (), "end");
                }
                
+               void Read_Dictionary2_ConstructorArgument (XamlReader r, XamlMember ctorArgMember, int i)
+               {
+                       Assert.IsTrue (r.Read (), "smi#1-1." + i);
+                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#1-2." + i);
+                       Assert.AreEqual (ctorArgMember, r.Member, "smi#1-3." + i);
+
+                       Assert.IsTrue (r.Read (), "svi#1-1." + i);
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#1-2." + i);
+                       Assert.AreEqual (i == 0 ? "x:Int32" : "Dictionary(s:Type, sx:XamlType)", r.Value, "svi#1-3." + i);
+
+                       Assert.IsTrue (r.Read (), "emi#1-1." + i);
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#1-2." + i);
+               }
+
+               void Read_Dictionary2_Key (XamlReader r, int i)
+               {
+                       Assert.IsTrue (r.Read (), "smi#2-1." + i);
+                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smi#2-2." + i);
+                       Assert.AreEqual (XamlLanguage.Key, r.Member, "smi#2-3." + i);
+
+                       Assert.IsTrue (r.Read (), "svi#2-1." + i);
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "svi#2-2." + i);
+                       Assert.AreEqual (i == 0 ? "Foo" : "Bar", r.Value, "svi#2-3." + i);
+
+                       Assert.IsTrue (r.Read (), "emi#2-1." + i);
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emi#2-2." + i);
+               }
+
                protected void PositionalParameters1 (XamlReader r)
                {
                        // ns1 > T:PositionalParametersClass1 > M:_PositionalParameters > foo > 5 > EM:_PositionalParameters > ET:PositionalParametersClass1
@@ -1415,6 +1499,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "so#1-3");
 //                     Assert.AreEqual (obj, r.Instance, "so#1-4");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "sposprm#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
                        Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sposprm#3");
@@ -1452,6 +1539,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "so#1-3");
 //                     Assert.AreEqual (obj, r.Instance, "so#1-4");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "sm#1-1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
                        Assert.AreEqual (xt.GetMember ("Body"), r.Member, "sm#1-3");
@@ -1509,6 +1599,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "so#1-3");
 //                     Assert.AreEqual (obj, r.Instance, "so#1-4");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "sm#1-1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
                        Assert.AreEqual (xt.GetMember ("Param"), r.Member, "sm#1-3");
@@ -1574,6 +1667,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "#23");
 //                     Assert.AreEqual (obj, r.Instance, "#26");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#61");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
                        Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
@@ -1644,6 +1740,9 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "#23");
 //                     Assert.AreEqual (obj, r.Instance, "#26");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "#61");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#62");
                        Assert.AreEqual (xt.GetMember ("Items"), r.Member, "#63");
@@ -1717,6 +1816,9 @@ namespace MonoTests.System.Xaml
                        var xt = new XamlType (typeof (ContentIncludedClass), r.SchemaContext);
                        Assert.AreEqual (xt, r.Type, "so#1-3");
 
+                       if (r is XamlXmlReader)
+                               ReadBase (r);
+
                        Assert.IsTrue (r.Read (), "sposprm#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sposprm#2");
                        Assert.AreEqual (xt.GetMember ("Content"), r.Member, "sposprm#3");
@@ -1831,6 +1933,20 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (r.Read (), "ct#7");
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#8");
                }
+
+               protected void ReadBase (XamlReader r)
+               {
+                       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");
+               }
        }
 
        public partial class XamlObjectReaderTest
@@ -1852,7 +1968,7 @@ namespace MonoTests.System.Xaml
                        obj ["Foo"] = typeof (int);
                        obj ["Bar"] = typeof (Dictionary<Type,XamlType>);
                        var r = new XamlObjectReader (obj);
-                       Read_Dictionary2 (r);
+                       Read_Dictionary2 (r, XamlLanguage.PositionalParameters);
                }
                
                [Test]
index 9dfc1f7eb782390c719607d0ebc3919f23984bd6..e7751c57e8fa0189eddd79dabc911dc54a148eae 100755 (executable)
@@ -63,14 +63,6 @@ namespace MonoTests.System.Xaml
                        return (T) obj;
                }
 
-               [Test]
-               public void Read_String ()
-               {
-                       ReadTest ("String.xml");
-                       var ret = LoadTest<string> ("String.xml");
-                       Assert.AreEqual ("foo", ret, "ret");
-               }
-
                [Test]
                public void Read_Int32 ()
                {
@@ -95,21 +87,6 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (TimeSpan.FromMinutes (7), ret, "ret");
                }
 
-               [Test]
-               public void Read_Null ()
-               {
-                       ReadTest ("NullExtension.xml");
-                       Assert.IsNull (XamlServices.Load (GetReader ("NullExtension.xml")));
-               }
-
-               [Test]
-               public void Read_Reference ()
-               {
-                       ReadTest ("Reference.xml");
-                       var ret = XamlServices.Load (GetReader ("Reference.xml"));
-                       Assert.IsNotNull (ret, "#1"); // the returned value is however not a Reference (in .NET 4.0 it is MS.Internal.Xaml.Context.NameFixupToken).
-               }
-
                [Test]
                public void Read_ArrayInt32 ()
                {
@@ -119,15 +96,6 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (2147483647, ret [4], "#2");
                }
 
-               [Test]
-               public void Read_ListInt32 ()
-               {
-                       ReadTest ("List_Int32.xml");
-                       var ret = LoadTest<List<int>> ("List_Int32.xml");
-                       Assert.AreEqual (5, ret.Count, "#1");
-                       Assert.AreEqual (2147483647, ret [4], "#2");
-               }
-
                [Test]
                public void Read_DictionaryInt32String ()
                {
@@ -164,20 +132,6 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (Guid.Parse ("9c3345ec-8922-4662-8e8d-a4e41f47cf09"), ret, "ret");
                }
 
-               void ReadBase (XamlReader r)
-               {
-                       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");
-               }
-
                [Test]
                public void ReadInt32Details ()
                {
@@ -241,303 +195,6 @@ namespace MonoTests.System.Xaml
                        Assert.IsFalse (r.Read (), "end");
                }
 
-               [Test]
-               public void ReadTypeDetails ()
-               {
-                       var r = GetReader ("Type.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.IsTrue (r.Read (), "so#1");
-                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
-                       Assert.AreEqual (XamlLanguage.Type, r.Type, "so#3");
-
-                       ReadBase (r);
-
-                       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 (), "vinit#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
-                       Assert.AreEqual ("x:Int32", r.Value, "vinit#3"); // string
-
-                       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");
-
-                       Assert.IsFalse (r.Read (), "end");
-               }
-
-               [Test]
-               public void ReadListInt32Details ()
-               {
-                       var r = GetReader ("List_Int32.xml");
-
-                       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");
-
-                       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");
-                       var xt = new XamlType (typeof (List<int>), r.SchemaContext);
-                       Assert.AreEqual (xt, r.Type, "so#3");
-
-                       ReadBase (r);
-
-                       Assert.IsTrue (r.Read (), "scap#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "scap#2");
-                       Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "scap#3");
-
-                       Assert.IsTrue (r.Read (), "vcap#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vcap#2");
-                       Assert.AreEqual ("5", r.Value, "vcap#3"); // string
-
-                       Assert.IsTrue (r.Read (), "ecap#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ecap#2");
-
-                       Assert.IsTrue (r.Read (), "sItems#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
-                       Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems#3");
-
-                       int [] values = {4, -5, 0, 255, int.MaxValue};
-                       var ci = new CultureInfo ("en-US");
-
-                       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);
-
-                               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);
-
-                               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);
-
-                               Assert.IsTrue (r.Read (), "eItem#1." + i);
-                               Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItem#2." + i);
-
-                               Assert.IsTrue (r.Read (), "eoItem#1");
-                               Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoItem#2");
-                       }
-
-                       Assert.IsTrue (r.Read (), "eItems#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItems#2");
-
-                       Assert.IsTrue (r.Read (), "eo#1");
-                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
-
-                       Assert.IsFalse (r.Read (), "end");
-               }
-
-               [Test]
-               public void ReadStringDetails ()
-               {
-                       var r = GetReader ("String.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.IsTrue (r.Read (), "so#1");
-                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
-                       Assert.AreEqual (XamlLanguage.String, r.Type, "so#3");
-
-                       ReadBase (r);
-
-                       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 (), "vinit#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
-                       Assert.AreEqual ("foo", r.Value, "vinit#3"); // string
-
-                       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");
-
-                       Assert.IsFalse (r.Read (), "end");
-               }
-
-               [Test]
-               public void ReadArrayInt32Details ()
-               {
-                       var r = GetReader ("Array_Int32.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 ("x", r.Namespace.Prefix, "ns#4");
-
-                       Assert.IsTrue (r.Read (), "soa#1");
-                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soa#2");
-                       var xt = new XamlType (typeof (ArrayExtension), r.SchemaContext);
-                       Assert.AreEqual (xt, r.Type, "soa#3");
-
-                       ReadBase (r);
-
-                       // Type
-                       Assert.IsTrue (r.Read (), "stype#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "stype#2");
-                       Assert.AreEqual (xt.GetMember ("Type"), r.Member, "stype#3");
-
-                       // Type
-                       Assert.IsTrue (r.Read (), "vtype#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "type#2");
-                       Assert.AreEqual ("x:Int32", r.Value, "vtype#3"); // string value
-
-                       Assert.IsTrue (r.Read (), "etype#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ecap#2");
-
-                       // Items
-                       Assert.IsTrue (r.Read (), "sItemsA#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItemsA#2");
-                       Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sItemsA#3");
-
-                       // (GetObject)
-                       Assert.IsTrue (r.Read (), "go#1");
-                       Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
-                       Assert.IsNull (r.Type, "go#3");
-                       Assert.IsNull (r.Member, "go#4");
-                       Assert.IsNull (r.Value, "go#5");
-
-                       Assert.IsTrue (r.Read (), "sItems#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems#2");
-                       Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems#3");
-
-                       int [] values = {4, -5, 0, 255, int.MaxValue};
-                       var ci = new CultureInfo ("en-US");
-
-                       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);
-
-                               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);
-
-                               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);
-
-                               Assert.IsTrue (r.Read (), "eItem#1." + i);
-                               Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItem#2." + i);
-
-                               Assert.IsTrue (r.Read (), "eoItem#1");
-                               Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoItem#2");
-                       }
-
-                       Assert.IsTrue (r.Read (), "eItems#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItems#2");
-
-                       // end of GetObject
-                       Assert.IsTrue (r.Read (), "eog#1");
-                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
-
-                       // end of ArrayExtension.Items
-                       Assert.IsTrue (r.Read (), "eItemsA#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eItemsA#2");
-
-                       // end of ArrayExtension
-                       Assert.IsTrue (r.Read (), "eoa#1");
-                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoa#2");
-
-                       Assert.IsFalse (r.Read (), "end");
-               }
-
-               [Test]
-               public void ReadNullDetails ()
-               {
-                       var r = GetReader ("NullExtension.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 ("x", r.Namespace.Prefix, "ns#4");
-
-                       Assert.IsTrue (r.Read (), "so#1");
-                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
-                       var xt = new XamlType (typeof (NullExtension), r.SchemaContext);
-                       Assert.AreEqual (xt, r.Type, "so#3");
-
-                       ReadBase (r);
-
-                       // end of NullExtension
-                       Assert.IsTrue (r.Read (), "eo#1");
-                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
-
-                       Assert.IsFalse (r.Read (), "end");
-               }
-
-               [Test]
-               public void ReadReferenceDetails ()
-               {
-                       var r = GetReader ("Reference.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 ("x", r.Namespace.Prefix, "ns#4");
-
-                       Assert.IsTrue (r.Read (), "so#1");
-                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2");
-                       var xt = new XamlType (typeof (Reference), r.SchemaContext);
-                       Assert.AreEqual (xt, r.Type, "so#3");
-
-                       // base
-                       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");
-
-                       // value
-                       Assert.IsTrue (r.Read (), "sinit#1");
-                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sinit#2");
-                       Assert.AreEqual (xt.GetMember ("Name"), r.Member, "sinit#3");
-
-                       Assert.IsTrue (r.Read (), "vinit#1");
-                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vinit#2");
-                       Assert.AreEqual ("FooBar", r.Value, "vinit#3"); // string
-
-                       Assert.IsTrue (r.Read (), "einit#1");
-                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "einit#2");
-
-                       // end of Reference
-                       Assert.IsTrue (r.Read (), "eo#1");
-                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2");
-
-                       Assert.IsFalse (r.Read (), "end");
-               }
-
                [Test]
                public void ReadGuidFactoryMethodDetails ()
                {
@@ -602,5 +259,250 @@ namespace MonoTests.System.Xaml
 
                        Assert.IsFalse (r.Read (), "end");
                }
+
+               [Test]
+               public void Read_String ()
+               {
+                       var r = GetReader ("String.xml");
+                       Read_String (r);
+                       var ret = LoadTest<string> ("String.xml");
+                       Assert.AreEqual ("foo", ret, "ret");
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void WriteNullMemberAsObject ()
+               {
+using (var sw = File.CreateText ("Test/XmlFiles/TestClass4.xml")) sw.Write (XamlServices.Save (new TestClass4 ()));
+                       var r = GetReader ("TestClass4.xml");
+                       WriteNullMemberAsObject (r, null);
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               public void StaticMember ()
+               {
+using (var sw = File.CreateText ("Test/XmlFiles/TestClass5.xml")) sw.Write (XamlServices.Save (new TestClass5 ()));
+                       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>");
+using (var sw = File.CreateText ("Test/XmlFiles/XmlDocument.xml")) sw.Write (XamlServices.Save (doc));
+                       var r = GetReader ("XmlDocument.xml");
+                       Read_XmlDocument (r);
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void Read_NonPrimitive ()
+               {
+                       var r = GetReader ("NonPrimitive.xml");
+                       Read_NonPrimitive (r);
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               public void Read_TypeExtension ()
+               {
+                       var r = GetReader ("Type.xml");
+                       Read_TypeOrTypeExtension (r, null, XamlLanguage.Type.GetMember ("Type"));
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               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);
+                       var ret = XamlServices.Load (GetReader ("Reference.xml"));
+                       Assert.IsNotNull (ret, "#1"); // the returned value is however not a Reference (in .NET 4.0 it is MS.Internal.Xaml.Context.NameFixupToken).
+               }
+               
+               [Test]
+               public void Read_Null ()
+               {
+                       var r = GetReader ("NullExtension.xml");
+                       Read_NullOrNullExtension (r, null);
+                       Assert.IsNull (XamlServices.Load (GetReader ("NullExtension.xml")));
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               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 ());
+                       var ret = LoadTest<List<int>> ("List_Int32.xml");
+                       Assert.AreEqual (4, ret.Count, "#1");
+                       Assert.AreEqual (2147483647, ret [2], "#2");
+               }
+               
+               [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_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]
+               [Category ("NotWorking")]
+               public void Read_MyArrayExtension ()
+               {
+                       var r = GetReader ("MyArrayExtension.xml");
+                       Read_ArrayOrArrayExtensionOrMyArrayExtension (r, null, typeof (MyArrayExtension));
+               }
+
+               [Test]
+               public void Read_ArrayExtension2 ()
+               {
+                       var r = GetReader ("ArrayExtension2.xml");
+                       Read_ArrayExtension2 (r);
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               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);
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void Read_Dictionary ()
+               {
+                       var obj = new Dictionary<string,object> ();
+                       obj ["Foo"] = 5.0;
+                       obj ["Bar"] = -6.5;
+using (var sw = File.CreateText ("Test/XmlFiles/Dictionary_String_Double.xml")) sw.Write (XamlServices.Save (obj));
+                       var r = GetReader ("Dictionary_String_Double.xml");
+                       Read_Dictionary (r);
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               public void Read_Dictionary2 ()
+               {
+                       var obj = new Dictionary<string,Type> ();
+                       obj ["Foo"] = typeof (int);
+                       obj ["Bar"] = typeof (Dictionary<Type,XamlType>);
+using (var sw = File.CreateText ("Test/XmlFiles/Dictionary_String_Type_2.xml")) sw.Write (XamlServices.Save (obj));
+                       var r = GetReader ("Dictionary_String_Type_2.xml");
+                       Read_Dictionary2 (r, XamlLanguage.Type.GetMember ("Type"));
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               public void PositionalParameters2 ()
+               {
+                       var r = GetReader ("PositionalParametersWrapper.xml");
+                       PositionalParameters2 (r);
+               }
+
+               [Test]
+               public void ComplexPositionalParameters ()
+               {
+                       var r = GetReader ("ComplexPositionalParameterWrapper.xml");
+                       ComplexPositionalParameters (r);
+               }
+               
+               [Test]
+               [Category ("NotWorking")]
+               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);
+               }
+
+               [Test]
+               public void ContentIncluded ()
+               {
+                       var obj = new ContentIncludedClass () { Content = "foo" };
+using (var sw = File.CreateText ("Test/XmlFiles/ContentIncluded.xml")) sw.Write (XamlServices.Save (obj));
+                       var r = GetReader ("ContentIncluded.xml");
+                       ContentIncluded (r);
+               }
        }
 }
index 956b9bf960dcff786d76cfbe840ce2c2cc8c588c..8d8a9c83ba5cad8d13d4111a0d6b22d78503f364 100755 (executable)
@@ -726,7 +726,7 @@ namespace MonoTests.System.Xaml
                [Test]
                public void Write_ListInt32 ()
                {
-                       Assert.AreEqual (ReadXml ("List_Int32.xml").Trim (), XamlServices.Save (new int [] {4, -5, 0, 255, int.MaxValue}.ToList ()), "#1");
+                       Assert.AreEqual (ReadXml ("List_Int32.xml").Trim (), XamlServices.Save (new int [] {5, -3, int.MaxValue, 0}.ToList ()), "#1");
                }
 
                [Test]
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml b/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml
new file mode 100644 (file)
index 0000000..c309a3a
--- /dev/null
@@ -0,0 +1,5 @@
+<x:Array Type="x:Int32" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\r
+  <x:Int32>5</x:Int32>\r
+  <x:Int32>-3</x:Int32>\r
+  <x:Int32>0</x:Int32>\r
+</x:Array>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ContentIncluded.xml b/mcs/class/System.Xaml/Test/XmlFiles/ContentIncluded.xml
new file mode 100644 (file)
index 0000000..53eb81e
--- /dev/null
@@ -0,0 +1 @@
+<ContentIncludedClass xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">foo</ContentIncludedClass>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml b/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml
new file mode 100644 (file)
index 0000000..6ace8fb
--- /dev/null
@@ -0,0 +1,4 @@
+<Dictionary x:TypeArguments="x:String, x:Object" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\r
+  <x:Double x:Key="Foo">5</x:Double>\r
+  <x:Double x:Key="Bar">-6.5</x:Double>\r
+</Dictionary>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml b/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml
new file mode 100644 (file)
index 0000000..304244e
--- /dev/null
@@ -0,0 +1,4 @@
+<Dictionary x:TypeArguments="x:String, s:Type" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\r
+  <x:Type Type="x:Int32" x:Key="Foo" />\r
+  <x:Type Type="Dictionary(s:Type, sx:XamlType)" x:Key="Bar" />\r
+</Dictionary>
\ No newline at end of file
index b2f35f9638130b11819865264ebe4991b1f3aa05..c5d86adb0417610d4de7413557d82bd55d5b3342 100644 (file)
@@ -1,7 +1,6 @@
-<List x:TypeArguments="x:Int32" Capacity="5" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:Int32>4</x:Int32>
-  <x:Int32>-5</x:Int32>
-  <x:Int32>0</x:Int32>
-  <x:Int32>255</x:Int32>
+<List x:TypeArguments="x:Int32" Capacity="4" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Int32>5</x:Int32>
+  <x:Int32>-3</x:Int32>
   <x:Int32>2147483647</x:Int32>
-</List>
\ No newline at end of file
+  <x:Int32>0</x:Int32>
+</List>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/NonPrimitive.xml b/mcs/class/System.Xaml/Test/XmlFiles/NonPrimitive.xml
new file mode 100644 (file)
index 0000000..ef4f24a
--- /dev/null
@@ -0,0 +1 @@
+<TestClass3 Nested="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/StaticMember.xml b/mcs/class/System.Xaml/Test/XmlFiles/StaticMember.xml
new file mode 100644 (file)
index 0000000..555e86b
--- /dev/null
@@ -0,0 +1 @@
+<TestClass5 Bar="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/TestClass4.xml b/mcs/class/System.Xaml/Test/XmlFiles/TestClass4.xml
new file mode 100644 (file)
index 0000000..840f36d
--- /dev/null
@@ -0,0 +1 @@
+<TestClass4 Bar="{x:Null}" Foo="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/TestClass5.xml b/mcs/class/System.Xaml/Test/XmlFiles/TestClass5.xml
new file mode 100644 (file)
index 0000000..555e86b
--- /dev/null
@@ -0,0 +1 @@
+<TestClass5 Bar="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml b/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml
new file mode 100644 (file)
index 0000000..5021ac5
--- /dev/null
@@ -0,0 +1,15 @@
+<XmlDocument InnerXml="&lt;root xmlns=&quot;urn:foo&quot;&gt;&lt;elem attr=&quot;val&quot; /&gt;&lt;/root&gt;" Prefix="" PreserveWhitespace="False" xmlns="clr-namespace:System.Xml;assembly=System.Xml" xmlns:sxs="clr-namespace:System.Xml.Schema;assembly=System.Xml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\r
+  <XmlDocument.SchemaInfo>\r
+    <x:Null />\r
+  </XmlDocument.SchemaInfo>\r
+  <XmlDocument.Schemas>\r
+    <sxs:XmlSchemaSet>\r
+      <sxs:XmlSchemaSet.CompilationSettings>\r
+        <sxs:XmlSchemaCompilationSettings EnableUpaCheck="True" />\r
+      </sxs:XmlSchemaSet.CompilationSettings>\r
+    </sxs:XmlSchemaSet>\r
+  </XmlDocument.Schemas>\r
+  <XmlDocument.Value>\r
+    <x:Null />\r
+  </XmlDocument.Value>\r
+</XmlDocument>
\ No newline at end of file