+
+ [Test]
+ [Category ("NotWorking")] // namespace node differences
+ public void Read_Type2 ()
+ {
+ var r = new XamlObjectReader (typeof (TestClass1));
+ Read_TypeOrTypeExtension2 (r);
+ }
+
+ [Test]
+ [Category ("NotWorking")] // namespace node differences
+ public void Read_TypeExtension2 ()
+ {
+ var r = new XamlObjectReader (new TypeExtension (typeof (TestClass1)));
+ Read_TypeOrTypeExtension2 (r);
+ }
+
+ void Read_TypeOrTypeExtension2 (XamlObjectReader r)
+ {
+ Assert.IsTrue (r.Read (), "#11");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#12");
+ Assert.AreEqual (String.Empty, r.Namespace.Prefix, "#13-2");
+ Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "#13-3");
+
+ Assert.IsTrue (r.Read (), "#16");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#17");
+ Assert.IsNotNull (r.Namespace, "#18");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "#18-2");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "#18-3");
+
+ Assert.IsTrue (r.Read (), "#21");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#22");
+ Assert.AreEqual (new XamlType (typeof (TypeExtension), r.SchemaContext), r.Type, "#23-2");
+ Assert.IsTrue (r.Instance is TypeExtension, "#26");
+
+ Assert.IsTrue (r.Read (), "#31");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#32");
+ Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "#33-2");
+
+ Assert.IsTrue (r.Read (), "#41");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "#42");
+ Assert.AreEqual ("TestClass1", r.Value, "#43-2");
+
+ Assert.IsTrue (r.Read (), "#51");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#52");
+
+ Assert.IsTrue (r.Read (), "#61");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
+
+ Assert.IsFalse (r.Read (), "#71");
+ Assert.IsTrue (r.IsEof, "#72");
+ }
+
+ [Test]
+ // WTF, It does not give XAML namespace, but XamlSerives.Save()
+ // serializes DateTime instance in the XAML namespace.
+ [Category ("NotWorking")]
+ public void Read_DateTime ()
+ {
+ var obj = new DateTime (2010, 4, 15);
+ var r = new XamlObjectReader (obj);
+ Read_CommonClrType (r, obj);
+ Assert.AreEqual ("2010-04-15", Read_Initialization (r, null), "#1");
+ }
+
+ [Test]
+ public void Read_TimeSpan ()
+ {
+ Read_CommonXamlPrimitive (TimeSpan.FromMinutes (4));
+ }
+
+ [Test]
+ public void Read_Uri ()
+ {
+ Read_CommonXamlPrimitive (new Uri ("urn:foo"));
+ }
+
+ [Test]
+ [ExpectedException (typeof (XamlObjectReaderException))]
+ [Category ("NotWorking")]
+ public void Read_XData ()
+ {
+ var r = new XamlObjectReader (new XData () {Text = "xdata text"}); // XmlReader implementation is not visible.
+ while (!r.IsEof)
+ r.Read ();
+ }
+
+ void Read_CommonXamlPrimitive (object obj)
+ {
+ var r = new XamlObjectReader (obj);
+ Read_CommonXamlType (r);
+ Read_Initialization (r, obj);
+ }
+
+ // from StartMember of Initialization to EndMember
+ string Read_Initialization (XamlObjectReader r, object comparableValue)
+ {
+ Assert.IsTrue (r.Read (), "init#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "init#2");
+ Assert.IsNotNull (r.Member, "init#3");
+ Assert.AreEqual (XamlLanguage.Initialization, r.Member, "init#3-2");
+ Assert.IsTrue (r.Read (), "init#4");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "init#5");
+ Assert.AreEqual (typeof (string), r.Value.GetType (), "init#6");
+ string ret = (string) r.Value;
+ if (comparableValue != null)
+ Assert.AreEqual (comparableValue.ToString (), r.Value, "init#6-2");
+ Assert.IsTrue (r.Read (), "init#7");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "init#8");
+ return ret;
+ }
+
+ // from initial to StartObject
+ void Read_CommonXamlType (XamlObjectReader r)
+ {
+ Assert.IsTrue (r.Read (), "ct#1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#2");
+ Assert.IsNotNull (r.Namespace, "ct#3");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ct#3-2");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ct#3-3");
+ Assert.IsNull (r.Instance, "ct#4");
+
+ Assert.IsTrue (r.Read (), "ct#5");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#6");
+ }
+
+ // from initial to StartObject
+ void Read_CommonClrType (XamlObjectReader r, object obj)
+ {
+ Assert.IsTrue (r.Read (), "ct#1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#2");
+ Assert.IsNotNull (r.Namespace, "ct#3");
+ Assert.AreEqual (String.Empty, r.Namespace.Prefix, "ct#3-2");
+ Assert.AreEqual ("clr-namespace:" + obj.GetType ().Namespace + ";assembly=" + obj.GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ct#3-3");
+
+/*
+ Assert.IsTrue (r.Read (), "ct#4");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ct#5");
+ Assert.IsNotNull (r.Namespace, "ct#6");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ct#6-2");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ct#6-3");
+*/
+
+ Assert.IsTrue (r.Read (), "ct#7");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "ct#8");
+ }