Add Dictionary related tests.
authorAtsushi Eno <atsushi@ximian.com>
Tue, 26 Oct 2010 15:19:01 +0000 (00:19 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Tue, 26 Oct 2010 15:19:01 +0000 (00:19 +0900)
mcs/class/System.Xaml/Test/System.Xaml/XamlObjectReaderTest.cs
mcs/class/System.Xaml/Test/System.Xaml/XamlTypeTest.cs

index aba1ab771974468b5f096cb09c110845abf685ee..16db42dbb89ebb805f0ea1da56fe366e84ae96dc 100644 (file)
@@ -601,6 +601,77 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (r.IsEof, "#72");
                }
 
+               [Test]
+               [Category ("NotWorking")]
+               public void Read_ListInt32 ()
+               {
+                       var obj = new List<int> (new int [] {5, -3, 0});
+
+                       var r = new XamlObjectReader (obj);
+                       Assert.IsTrue (r.Read (), "ns#1-1");
+                       Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+
+                       var defns = "clr-namespace:System.Collections.Generic;assembly=mscorlib";
+
+                       Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ns#1-3");
+                       Assert.AreEqual (defns, r.Namespace.Namespace, "ns#1-4");
+
+                       Assert.IsTrue (r.Read (), "#11");
+                       Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
+                       Assert.IsNotNull (r.Namespace, "#13");
+                       Assert.AreEqual ("x", r.Namespace.Prefix, "#13-2");
+                       Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#13-3");
+
+                       Assert.IsTrue (r.Read (), "#21");
+                       Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
+                       var xt = new XamlType (typeof (List<int>), r.SchemaContext);
+                       Assert.AreEqual (xt, r.Type, "#23");
+                       Assert.AreEqual (obj, r.Instance, "#26");
+                       Assert.IsTrue (xt.IsCollection, "#27");
+
+                       // 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");
+                       Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
+                       Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "#33");
+
+                       Assert.IsTrue (r.Read (), "#41");
+                       Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
+                       // The value is implementation details, not testable.
+                       //Assert.AreEqual ("3", r.Value, "#43");
+
+                       Assert.IsTrue (r.Read (), "#51");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
+
+                       Assert.IsTrue (r.Read (), "#72");
+                       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++) {
+                               Assert.IsTrue (r.Read (), i + "#73");
+                               Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, i + "#73-2");
+                               Assert.IsTrue (r.Read (), i + "#74");
+                               Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, i + "#74-2");
+                               Assert.AreEqual (XamlLanguage.Initialization, r.Member, i + "#74-3");
+                               Assert.IsTrue (r.Read (), i + "#75");
+                               Assert.IsNotNull (r.Value, i + "#75-2");
+                               Assert.AreEqual (values [i], r.Value, i + "#73-3");
+                               Assert.IsTrue (r.Read (), i + "#74");
+                               Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, i + "#74-2");
+                               Assert.IsTrue (r.Read (), i + "#75");
+                               Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, i + "#75-2");
+                       }
+
+                       Assert.IsTrue (r.Read (), "#81");
+                       Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#82"); // XamlLanguage.Items
+
+                       Assert.IsTrue (r.Read (), "#87");
+                       Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#88"); // ArrayExtension
+
+                       Assert.IsFalse (r.Read (), "#89");
+               }
+
                [Test]
                public void Read_Array ()
                {
@@ -823,6 +894,7 @@ namespace MonoTests.System.Xaml
                [Test]
                public void Read_CustomMarkupExtension2 ()
                {
+Console.Error.WriteLine (XamlServices.Save (new MyExtension2 () { Foo = typeof (int), Bar = "v2"}));
                        var r = new XamlObjectReader (new MyExtension2 () { Foo = typeof (int), Bar = "v2"});
                        r.Read (); // ns
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
@@ -884,6 +956,8 @@ namespace MonoTests.System.Xaml
                [Category ("NotWorking")]
                public void Read_CustomMarkupExtension5 ()
                {
+                       // This cannot be written to XamlXmlWriter though...
+
                        var r = new XamlObjectReader (new MyExtension5 ("foo"));
                        r.Read (); // ns
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
@@ -905,6 +979,7 @@ namespace MonoTests.System.Xaml
                [Category ("NotWorking")]
                public void Read_CustomMarkupExtension6 ()
                {
+Console.Error.WriteLine (XamlServices.Save (new MyExtension6 ("foo")));
                        var r = new XamlObjectReader (new MyExtension6 ("foo"));
                        r.Read (); // ns
                        Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1");
@@ -959,8 +1034,6 @@ namespace MonoTests.System.Xaml
                        Assert.AreEqual (xt, r.Type, "so#1-3");
                        Assert.AreEqual (obj, r.Instance, "so#1-4");
 
-                       // 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 (), "smitems#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smitems#2");
                        Assert.AreEqual (XamlLanguage.Items, r.Member, "smitems#3");
index 97aee5cf5afc47f13f702e7c085641579945f754..4e12a1e3101df04fa147ee4df16873226a564a7d 100644 (file)
@@ -234,12 +234,16 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (t.IsDictionary, "#2.1");
                        Assert.IsFalse (t.IsCollection, "#2.1-2");
                        Assert.IsNotNull (t.KeyType, "#2.2");
+                       Assert.IsNotNull (t.ItemType, "#2.2-2");
                        Assert.AreEqual ("Object", t.KeyType.Name, "#2.3");
+                       Assert.AreEqual ("Object", t.ItemType.Name, "#2.3-2");
                        t = new XamlType (typeof (Dictionary<int,string>), sctx);
                        Assert.IsTrue (t.IsDictionary, "#3.1");
                        Assert.IsFalse (t.IsCollection, "#3.1-2");
                        Assert.IsNotNull (t.KeyType, "#3.2");
+                       Assert.IsNotNull (t.ItemType, "#3.2-2");
                        Assert.AreEqual ("Int32", t.KeyType.Name, "#3.3");
+                       Assert.AreEqual ("String", t.ItemType.Name, "#3.3-2");
 
                        var ml = t.GetAllMembers ();
                        Assert.AreEqual (2, ml.Count, "#3.4");
@@ -657,6 +661,15 @@ namespace MonoTests.System.Xaml
                        // wow, so it returns some meaningless method parameters.
                        Assert.IsNotNull (new XamlType (typeof (MyXamlType), sctx).GetPositionalParameters (3), "#1");
                }
+               
+               [Test]
+               public void ListMembers ()
+               {
+                       var xt = new XamlType (typeof (List<int>), sctx);
+                       var ml = xt.GetAllMembers ().ToArray ();
+                       Assert.AreEqual (1, ml.Length, "#1");
+                       Assert.IsNotNull (xt.GetMember ("Capacity"), "#2");
+               }
        }
 
        class MyXamlType : XamlType