Assert.IsFalse (r.Read (), "end");
}
- protected void Read_NamedItems (XamlReader r)
+ protected void Read_NamedItems (XamlReader r, bool isObjectReader)
{
Assert.IsTrue (r.Read (), "ns#1-1");
Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
Assert.IsTrue (r.Read (), "smbrd#1");
Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smbrd#2");
- Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbrd#3");
+ if (isObjectReader)
+ Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smbrd#3");
+ else
+ Assert.AreEqual (XamlLanguage.Reference.GetMember ("Name"), r.Member, "smbrd#3");
Assert.IsTrue (r.Read (), "vmbrd#1");
Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vmbrd#2");
Assert.IsFalse (r.Read (), "end");
}
+ protected void Read_NamedItems2 (XamlReader r, bool isObjectReader)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ Assert.AreEqual ("clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name, r.Namespace.Namespace, "ns#1-5");
+
+ Assert.IsTrue (r.Read (), "ns#2-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
+ Assert.IsNotNull (r.Namespace, "ns#2-3");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
+
+ var xt = new XamlType (typeof (NamedItem2), r.SchemaContext);
+
+ // i1
+ Assert.IsTrue (r.Read (), "so1#1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so1#2");
+ Assert.AreEqual (xt, r.Type, "so1#3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm1#3");
+
+ Assert.IsTrue (r.Read (), "v1#1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v1#2");
+ Assert.AreEqual ("i1", r.Value, "v1#3");
+
+ Assert.IsTrue (r.Read (), "em1#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em1#2");
+
+ Assert.IsTrue (r.Read (), "srefs1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs1#2");
+ Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs1#3");
+
+ Assert.IsTrue (r.Read (), "go1#1");
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go1#2");
+
+ Assert.IsTrue (r.Read (), "sitems1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sitems1#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sitems1#3");
+
+ // i2
+ Assert.IsTrue (r.Read (), "so2#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so2#1-2");
+ Assert.AreEqual (xt, r.Type, "so2#1-3");
+ Assert.IsTrue (r.Read (), "sm2#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
+ Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm2#3");
+
+ Assert.IsTrue (r.Read (), "v2#1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v2#2");
+ Assert.AreEqual ("i2", r.Value, "v2#3");
+
+ Assert.IsTrue (r.Read (), "em2#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#2");
+
+ Assert.IsTrue (r.Read (), "srefs2#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs2#2");
+ Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs2#3");
+
+ Assert.IsTrue (r.Read (), "go2#1");
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go2#2");
+
+ Assert.IsTrue (r.Read (), "sItems1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sItems1#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sItems1#3");
+
+ Assert.IsTrue (r.Read (), "so3#1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so3#2");
+ Assert.AreEqual (xt, r.Type, "so3#3");
+ Assert.IsTrue (r.Read (), "sm3#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm3#2");
+ Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm3#3");
+
+ Assert.IsTrue (r.Read (), "v3#1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v3#2");
+ Assert.AreEqual ("i3", r.Value, "v3#3");
+
+ Assert.IsTrue (r.Read (), "em3#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em3#2");
+
+ Assert.IsTrue (r.Read (), "eo3#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo3#2");
+
+ Assert.IsTrue (r.Read (), "eitems2#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems2#2");
+
+ Assert.IsTrue (r.Read (), "ego2#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego2#2");
+
+ Assert.IsTrue (r.Read (), "erefs2#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs2#2");
+
+ Assert.IsTrue (r.Read (), "eo2#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo2#2");
+
+ // i4
+ Assert.IsTrue (r.Read (), "so4#1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so4#2");
+ Assert.AreEqual (xt, r.Type, "so4#3");
+
+ Assert.IsTrue (r.Read (), "sm4#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm4#2");
+ Assert.AreEqual (xt.GetMember ("ItemName"), r.Member, "sm4#3");
+
+ Assert.IsTrue (r.Read (), "v4#1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v4#2");
+ Assert.AreEqual ("i4", r.Value, "v4#3");
+
+ Assert.IsTrue (r.Read (), "em4#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em4#2");
+
+ Assert.IsTrue (r.Read (), "srefs4#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "srefs4#2");
+ Assert.AreEqual (xt.GetMember ("References"), r.Member, "srefs4#3");
+
+ Assert.IsTrue (r.Read (), "go4#1");
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go4#2");
+
+ Assert.IsTrue (r.Read (), "sitems4#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sitems4#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sitems4#3");
+
+ Assert.IsTrue (r.Read (), "sor1#1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "sor1#2");
+ Assert.AreEqual (XamlLanguage.Reference, r.Type, "sor1#3");
+
+ Assert.IsTrue (r.Read (), "smr1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smr1#2");
+ if (isObjectReader)
+ Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "smr1#3");
+ else
+ Assert.AreEqual (XamlLanguage.Reference.GetMember ("Name"), r.Member, "smr1#3");
+
+ Assert.IsTrue (r.Read (), "vr1#1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "vr1#2");
+ Assert.AreEqual ("i3", r.Value, "vr1#3");
+
+ Assert.IsTrue (r.Read (), "emr1#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emr1#2");
+
+ Assert.IsTrue (r.Read (), "eor#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eor#2");
+
+ Assert.IsTrue (r.Read (), "eitems4#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems4#2");
+
+ Assert.IsTrue (r.Read (), "ego4#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego4#2");
+
+ Assert.IsTrue (r.Read (), "erefs4#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs4#2");
+
+ Assert.IsTrue (r.Read (), "eo4#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo4#1-2");
+
+ Assert.IsTrue (r.Read (), "eitems1#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "eitems1#2");
+
+ Assert.IsTrue (r.Read (), "ego1#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego1#2");
+
+ Assert.IsTrue (r.Read (), "erefs1#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "erefs1#2");
+
+ Assert.IsTrue (r.Read (), "eo1#1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo1#2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_XmlSerializableWrapper (XamlReader r, bool isObjectReader)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ Assert.IsTrue (r.Read (), "ns#2-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
+ Assert.IsNotNull (r.Namespace, "ns#2-3");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
+
+ // t:XmlSerializableWrapper
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (XmlSerializableWrapper), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:Value
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm1#3");
+
+ // x:XData
+ Assert.IsTrue (r.Read (), "so#2-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
+ Assert.AreEqual (XamlLanguage.XData, r.Type, "so#2-3");
+ if (r is XamlObjectReader)
+ Assert.IsNull (((XamlObjectReader) r).Instance, "xdata-instance");
+
+ Assert.IsTrue (r.Read (), "sm2#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
+ Assert.AreEqual (XamlLanguage.XData.GetMember ("Text"), r.Member, "sm2#3");
+
+ Assert.IsTrue (r.Read (), "v1#1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v1#2");
+ var val = isObjectReader ? "<root />" : "<root xmlns=\"" + assns + "\" />";
+ Assert.AreEqual (val, r.Value, "v1#3");
+
+ Assert.IsTrue (r.Read (), "em2#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em2#2");
+
+ Assert.IsTrue (r.Read (), "eo#2-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
+
+ Assert.IsTrue (r.Read (), "em1#1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em1#2");
+
+ // /t:XmlSerializableWrapper
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_XmlSerializable (XamlReader r)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ // t:XmlSerializable
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // /t:XmlSerializable
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_ListXmlSerializable (XamlReader r)
+ {
+ while (true) {
+ r.Read ();
+ if (r.Member == XamlLanguage.Items)
+ break;
+ if (r.IsEof)
+ Assert.Fail ("Items did not appear");
+ }
+
+ // t:XmlSerializable (yes...it is not XData!)
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ // /t:XmlSerializable
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ r.Close ();
+ }
+
+ protected void Read_TypeConverterOnListMember (XamlReader r)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ Assert.AreEqual ("http://www.domain.com/path", r.Namespace.Namespace, "ns#1-5");
+
+ // t:TypeOtherAssembly
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (SecondTest.TypeOtherAssembly), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:Values
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("Values"), r.Member, "sm1#3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#1-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
+ Assert.AreEqual ("1, 2, 3", r.Value, "v#1-3");
+
+ // /m:Values
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:TypeOtherAssembly
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_EnumContainer (XamlReader r)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ // t:EnumContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (EnumContainer), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:EnumProperty
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("EnumProperty"), r.Member, "sm1#3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#1-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
+ Assert.AreEqual ("Two", r.Value, "v#1-3");
+
+ // /m:EnumProperty
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:EnumContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_CollectionContentProperty (XamlReader r, bool contentPropertyIsUsed)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ Assert.IsTrue (r.Read (), "ns#2-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
+ Assert.IsNotNull (r.Namespace, "ns#2-3");
+ Assert.AreEqual ("scg", r.Namespace.Prefix, "ns#2-4");
+ assns = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#2-5");
+
+ Assert.IsTrue (r.Read (), "ns#3-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
+ Assert.IsNotNull (r.Namespace, "ns#3-3");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ns#3-4");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3-5");
+
+ // t:CollectionContentProperty
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (CollectionContentProperty), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:ListOfItems
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("ListOfItems"), r.Member, "sm1#3");
+
+ // t:CollectionContentProperty
+ xt = new XamlType (typeof (List<SimpleClass>), r.SchemaContext);
+ Assert.IsTrue (r.Read (), "so#2-1");
+ if (contentPropertyIsUsed)
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "so#2-2.1");
+ else {
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2.2");
+ Assert.AreEqual (xt, r.Type, "so#2-3");
+
+ // m:Capacity
+ Assert.IsTrue (r.Read (), "sm#2-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2");
+ Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#2-3");
+
+ // r.Skip (); // LAMESPEC: .NET then skips to *post* Items node (i.e. at the first TestClass item)
+
+ Assert.IsTrue (r.Read (), "v#1-1");
+
+ Assert.IsTrue (r.Read (), "em#2-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
+ }
+
+ Assert.IsTrue (r.Read (), "sm#3-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#3-3");
+
+ for (int i = 0; i < 4; i++) {
+ // t:SimpleClass
+ Assert.IsTrue (r.Read (), "so#3-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
+ xt = new XamlType (typeof (SimpleClass), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#3-3." + i);
+
+ // /t:SimpleClass
+ Assert.IsTrue (r.Read (), "eo#3-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
+ }
+
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#3-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
+
+ // /t:CollectionContentProperty
+ Assert.IsTrue (r.Read (), "eo#2-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
+
+ // /m:ListOfItems
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:CollectionContentProperty
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_CollectionContentPropertyX (XamlReader r, bool contentPropertyIsUsed)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ Assert.IsTrue (r.Read (), "ns#2-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
+ Assert.IsNotNull (r.Namespace, "ns#2-3");
+ Assert.AreEqual ("sc", r.Namespace.Prefix, "ns#2-4");
+ assns = "clr-namespace:System.Collections;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#2-5");
+
+ Assert.IsTrue (r.Read (), "ns#x-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#x-2");
+ Assert.IsNotNull (r.Namespace, "ns#x-3");
+ Assert.AreEqual ("scg", r.Namespace.Prefix, "ns#x-4");
+ assns = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#x-5");
+
+ Assert.IsTrue (r.Read (), "ns#3-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#3-2");
+ Assert.IsNotNull (r.Namespace, "ns#3-3");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ns#3-4");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#3-5");
+
+ // t:CollectionContentProperty
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (CollectionContentPropertyX), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:ListOfItems
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("ListOfItems"), r.Member, "sm1#3");
+
+ // t:List<IEnumerable>
+ xt = new XamlType (typeof (List<IEnumerable>), r.SchemaContext);
+ Assert.IsTrue (r.Read (), "so#2-1");
+
+ if (false/*contentPropertyIsUsed*/)
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "so#2-2.1");
+ else {
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2.2");
+ Assert.AreEqual (xt, r.Type, "so#2-3");
+
+ // m:Capacity
+ Assert.IsTrue (r.Read (), "sm#2-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2");
+ Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#2-3");
+
+ // r.Skip (); // LAMESPEC: .NET then skips to *post* Items node (i.e. at the first TestClass item)
+
+ Assert.IsTrue (r.Read (), "v#1-1");
+
+ // /m:Capacity
+ Assert.IsTrue (r.Read (), "em#2-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
+ }
+
+ Assert.IsTrue (r.Read (), "sm#3-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#3-3");
+
+ if (!contentPropertyIsUsed) {
+
+ Assert.IsTrue (r.Read (), "so#x-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2.2");
+ xt = new XamlType (typeof (List<object>), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#x-3");
+
+ // m:Capacity
+ Assert.IsTrue (r.Read (), "sm#xx-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#xx-2");
+ Assert.AreEqual (xt.GetMember ("Capacity"), r.Member, "sm#xx-3");
+
+ Assert.IsTrue (r.Read (), "v#x-1");
+
+ // /m:Capacity
+ Assert.IsTrue (r.Read (), "em#xx-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#xx-2");
+
+ Assert.IsTrue (r.Read (), "sm#x-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x-2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#x-3");
+ }
+
+ for (int i = 0; i < 4; i++) {
+ // t:SimpleClass
+ Assert.IsTrue (r.Read (), "so#3-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
+ xt = new XamlType (typeof (SimpleClass), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#3-3." + i);
+
+ // /t:SimpleClass
+ Assert.IsTrue (r.Read (), "eo#3-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2");
+ }
+
+ if (!contentPropertyIsUsed) {
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#x-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
+
+ // /t:List<IEnumerable>
+ Assert.IsTrue (r.Read (), "eo#x-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
+ }
+
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#3-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2");
+
+ // /t:CollectionContentProperty
+ Assert.IsTrue (r.Read (), "eo#2-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2");
+
+ // /m:ListOfItems
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:CollectionContentProperty
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ #region ambient property test
+ protected void Read_AmbientPropertyContainer (XamlReader r, bool extensionBased)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ Assert.AreEqual ("http://www.domain.com/path", r.Namespace.Namespace, "ns#1-5");
+
+ Assert.IsTrue (r.Read (), "ns#2-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#2-2");
+ Assert.IsNotNull (r.Namespace, "ns#2-3");
+ Assert.AreEqual ("x", r.Namespace.Prefix, "ns#2-4");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, r.Namespace.Namespace, "ns#2-5");
+
+ // t:AmbientPropertyContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (SecondTest.ResourcesDict), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:Items
+ Assert.IsTrue (r.Read (), "sm#1-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#1-2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm#1-3");
+
+ xt = new XamlType (typeof (SecondTest.TestObject), r.SchemaContext);
+ for (int i = 0; i < 2; i++) {
+
+ if (i == 1 && r is XamlObjectReader && extensionBased) {
+ ReadReasourceExtension_AmbientPropertyContainer (r, i, extensionBased);
+ continue;
+ }
+
+ // t:TestObject
+ Assert.IsTrue (r.Read (), "so#2-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2." + i);
+ Assert.AreEqual (xt, r.Type, "so#2-3." + i);
+
+ if (!extensionBased) {
+ if (i == 0 && r is XamlXmlReader) // order difference between XamlObjectReader and XamlXmlReader ...
+ ReadName_AmbientPropertyContainer (r, i);
+
+ ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
+
+ if (i == 0 && r is XamlObjectReader) // order difference between XamlObjectReader and XamlXmlReader ...
+ ReadName_AmbientPropertyContainer (r, i);
+ }
+
+ if (r is XamlObjectReader && extensionBased) {
+ ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
+ ReadName_AmbientPropertyContainer (r, i);
+ }
+
+ ReadKey_AmbientPropertyContainer (r, i, extensionBased);
+
+ if (extensionBased && i == 1)
+ ReadTestProperty_AmbientPropertyContainer (r, i, extensionBased);
+
+ // /t:TestObject
+ Assert.IsTrue (r.Read (), "eo#2-1." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#2-2." + i);
+ }
+
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:AmbientPropertyContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ void ReadKey_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
+ {
+ // m:Key
+ Assert.IsTrue (r.Read (), "sm#4-1." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#4-2." + i);
+ Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#4-3." + i);
+
+ if (!extensionBased || r is XamlObjectReader) {
+ // t:String (as it is specific derived type as compared to the key object type in Dictionary<object,object>)
+ Assert.IsTrue (r.Read (), "so#5-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#5-2." + i);
+ Assert.AreEqual (XamlLanguage.String, r.Type, "so#5-3." + i);
+
+ Assert.IsTrue (r.Read (), "sm#5-1." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#5-2." + i);
+ Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sm#5-3." + i);
+
+ Assert.IsTrue (r.Read (), "v#5-1." + i);
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#5-2." + i);
+
+ Assert.IsTrue (r.Read (), "em#5-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#5-2." + i);
+
+ // /t:String
+ Assert.IsTrue (r.Read (), "eo#5-1." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#5-2." + i);
+ } else {
+ // it is in attribute string without type in xml.
+ Assert.IsTrue (r.Read (), "v#y-1." + i);
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2." + i);
+ Assert.AreEqual (i == 0 ? "TestDictItem" : "okay", r.Value, "v#y-3." + i);
+ }
+
+ // /m:Key
+ Assert.IsTrue (r.Read (), "em#4-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#4-2." + i);
+ }
+
+ void ReadName_AmbientPropertyContainer (XamlReader r, int i)
+ {
+ // m:Name
+ Assert.IsTrue (r.Read (), "sm#3-1." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#3-2." + i);
+ Assert.AreEqual (XamlLanguage.Name, r.Member, "sm#3-3." + i);
+
+ Assert.IsTrue (r.Read (), "v#3-1." + i);
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#3-2." + i);
+ Assert.AreEqual ("__ReferenceID0", r.Value, "v#3-3." + i);
+
+ // /m:Name
+ Assert.IsTrue (r.Read (), "em#3-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#3-2." + i);
+ }
+
+ void ReadTestProperty_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
+ {
+ var xt = new XamlType (typeof (SecondTest.TestObject), r.SchemaContext);
+
+ // m:TestProperty
+ Assert.IsTrue (r.Read (), "sm#2-1." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#2-2." + i);
+ Assert.AreEqual (xt.GetMember ("TestProperty"), r.Member, "sm#2-3." + i);
+
+ if (i == 0) {
+ // t:TestObject={x:Null}
+ Assert.IsTrue (r.Read (), "so#3-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#3-2." + i);
+ Assert.AreEqual (XamlLanguage.Null, r.Type, "so#3-3." + i);
+ Assert.IsTrue (r.Read (), "eo#3-1." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#3-2." + i);
+ } else if (extensionBased) {
+ ReadReasourceExtension_AmbientPropertyContainer (r, i, extensionBased);
+ } else {
+ ReadReference_AmbientPropertyContainer (r, i, extensionBased);
+ }
+
+ // /m:TestProperty
+ Assert.IsTrue (r.Read (), "em#2-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2." + i);
+ }
+
+ void ReadReasourceExtension_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
+ {
+ // t:ResourceExtension
+ var xt = r.SchemaContext.GetXamlType (typeof (SecondTest.ResourceExtension));
+ Assert.IsTrue (r.Read (), "so#z-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#z-2." + i);
+ Assert.AreEqual (xt, r.Type, "so#z-2." + i);
+
+ if (r is XamlObjectReader) {
+
+ // m:Arguments
+ Assert.IsTrue (r.Read (), "sm#zz-1." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#zz-2." + i);
+ Assert.AreEqual (XamlLanguage.Arguments, r.Member, "sm#zz-3." + i);
+
+ ReadReference_AmbientPropertyContainer (r, i, extensionBased);
+
+ // /m:Arguments
+ Assert.IsTrue (r.Read (), "em#zz-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#zz-2." + i);
+
+ ReadKey_AmbientPropertyContainer (r, i, extensionBased);
+
+ } else {
+
+ // m:PositionalParameters
+ Assert.IsTrue (r.Read (), "sm#z-1." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#z-2." + i);
+ Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sm#z-3." + i);
+
+ Assert.IsTrue (r.Read (), "v#z-1." + i);
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#z-2." + i);
+
+ // /m:PositionalParameters
+ Assert.IsTrue (r.Read (), "em#z-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#z-2." + i);
+ }
+
+ // /t:ResourceExtension
+ Assert.IsTrue (r.Read (), "eo#z-1." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#z-2." + i);
+ }
+
+ void ReadReference_AmbientPropertyContainer (XamlReader r, int i, bool extensionBased)
+ {
+ // x:Reference
+ Assert.IsTrue (r.Read (), "so#zz2-1." + i);
+ Assert.AreEqual (XamlLanguage.Reference, r.Type, "so#zz2-2." + i);
+
+ // posparm
+ Assert.IsTrue (r.Read (), "sm#zz2-1." + i);
+ Assert.AreEqual (XamlLanguage.PositionalParameters, r.Member, "sm#zz2-3." + i);
+ // value
+ Assert.IsTrue (r.Read (), "v#zz2-1." + i);
+ Assert.AreEqual ("__ReferenceID0", r.Value, "v#zz2-2." + i);
+ // /posparm
+ Assert.IsTrue (r.Read (), "em#zz2-1." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#zz2-2." + i);
+ // /x:Reference
+ Assert.IsTrue (r.Read (), "eo#zz2-1." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#zz2-2." + i);
+ }
+ #endregion
+
+ protected void Read_NullableContainer (XamlReader r)
+ {
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ // t:NullableContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (NullableContainer), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:TestProp
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("TestProp"), r.Member, "sm1#3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#1-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#1-2");
+ Assert.AreEqual ("5", r.Value, "v#1-3");
+
+ // /m:TestProp
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:NullableContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_DirectListContainer (XamlReader r)
+ {
+ var assns1 = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ var assns2 = "clr-namespace:System.Collections.Generic;assembly=" + typeof (IList<>).Assembly.GetName ().Name;
+ ReadNamespace (r, String.Empty, assns1, "ns#1");
+ ReadNamespace (r, "scg", assns2, "ns#2");
+ ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#3");
+
+ // t:DirectListContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (DirectListContainer), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:Items
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm1#3");
+
+ // GetObject
+ Assert.IsTrue (r.Read (), "go#1");
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
+
+ // m:Items(GetObject)
+ Assert.IsTrue (r.Read (), "sm2#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm2#3");
+
+ xt = r.SchemaContext.GetXamlType (typeof (DirectListContent));
+ for (int i = 0; i < 3; i++) {
+ // t:DirectListContent
+ Assert.IsTrue (r.Read (), "so#x-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
+ Assert.AreEqual (xt, r.Type, "so#x-3." + i);
+
+ // m:Value
+ Assert.IsTrue (r.Read (), "sm#x1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
+ Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm#x3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#x-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
+ Assert.AreEqual ("Hello" + (i + 1), r.Value, "v#x-3");
+
+ // /m:Value
+ Assert.IsTrue (r.Read (), "em#x-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
+
+ // /t:DirectListContent
+ Assert.IsTrue (r.Read (), "eo#x-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
+ }
+
+ // /m:Items(GetObject)
+ Assert.IsTrue (r.Read (), "em#2-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
+
+ // /GetObject
+ Assert.IsTrue (r.Read (), "ego#2-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego#2-2");
+
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:DirectListContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_DirectDictionaryContainer (XamlReader r)
+ {
+ var assns1 = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ ReadNamespace (r, String.Empty, assns1, "ns#1");
+ ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
+
+ // t:DirectDictionaryContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (DirectDictionaryContainer), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:Items
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm1#3");
+
+ // GetObject
+ Assert.IsTrue (r.Read (), "go#1");
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#2");
+
+ // m:Items(GetObject)
+ Assert.IsTrue (r.Read (), "sm2#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm2#3");
+
+ xt = r.SchemaContext.GetXamlType (typeof (int));
+ for (int i = 0; i < 3; i++) {
+ // t:DirectDictionaryContent
+ Assert.IsTrue (r.Read (), "so#x-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
+ Assert.AreEqual (xt, r.Type, "so#x-3." + i);
+
+ // m:Key
+ Assert.IsTrue (r.Read (), "sm#y1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2");
+ Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#y-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2");
+ Assert.AreEqual (((EnumValueType) i).ToString ().ToLower (), r.Value, "v#y-3");
+
+ // /m:Key
+ Assert.IsTrue (r.Read (), "em#y-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2");
+
+ // m:Value
+ Assert.IsTrue (r.Read (), "sm#x1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
+ Assert.AreEqual (XamlLanguage.Initialization, r.Member, "sm#x3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#x-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
+ Assert.AreEqual ("" + (i + 2) * 10, r.Value, "v#x-3");
+
+ // /m:Value
+ Assert.IsTrue (r.Read (), "em#x-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
+
+ // /t:DirectDictionaryContent
+ Assert.IsTrue (r.Read (), "eo#x-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
+ }
+
+ // /m:Items(GetObject)
+ Assert.IsTrue (r.Read (), "em#2-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#2-2");
+
+ // /GetObject
+ Assert.IsTrue (r.Read (), "ego#2-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "ego#2-2");
+
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:DirectDictionaryContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_DirectDictionaryContainer2 (XamlReader r)
+ {
+ ReadNamespace (r, String.Empty, "http://www.domain.com/path", "ns#1");
+ ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
+
+ // t:DirectDictionaryContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (SecondTest.ResourcesDict2), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // m:Items
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm1#3");
+
+ xt = r.SchemaContext.GetXamlType (typeof (SecondTest.TestObject2));
+ for (int i = 0; i < 2; i++) {
+ // t:TestObject
+ Assert.IsTrue (r.Read (), "so#x-1." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2." + i);
+ Assert.AreEqual (xt, r.Type, "so#x-3." + i);
+
+ // m:Key
+ Assert.IsTrue (r.Read (), "sm#y1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2");
+ Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3");
+
+ // value
+ Assert.IsTrue (r.Read (), "v#y-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2");
+ Assert.AreEqual (i == 0 ? "1" : "two", r.Value, "v#y-3");
+
+ // /m:Key
+ Assert.IsTrue (r.Read (), "em#y-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2");
+
+ // m:TestProperty
+ Assert.IsTrue (r.Read (), "sm#x1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2");
+ Assert.AreEqual (xt.GetMember ("TestProperty"), r.Member, "sm#x3");
+
+ // x:Value
+ Assert.IsTrue (r.Read (), "v#x-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#x-2");
+ Assert.AreEqual (i == 0 ? "1" : "two", r.Value, "v#x-3");
+
+ // /m:TestProperty
+ Assert.IsTrue (r.Read (), "em#x-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x-2");
+
+ // /t:TestObject
+ Assert.IsTrue (r.Read (), "eo#x-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2");
+ }
+
+ // /m:Items
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // /t:DirectDictionaryContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_ContentPropertyContainer (XamlReader r)
+ {
+ ReadNamespace (r, String.Empty, "http://www.domain.com/path", "ns#1");
+ ReadNamespace (r, "x", XamlLanguage.Xaml2006Namespace, "ns#2");
+
+ // 1:: t:ContentPropertyContainer
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (SecondTest.ContentPropertyContainer), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ // 2:: m:Items
+ Assert.IsTrue (r.Read (), "sm1#1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm1#2");
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "sm1#3");
+
+ xt = r.SchemaContext.GetXamlType (typeof (SecondTest.SimpleType));
+ for (int i = 0; i < 2; i++) {
+ // 3:: t:SimpleType
+ Assert.IsTrue (r.Read (), "so#x-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#x-2" + "." + i);
+ Assert.AreEqual (xt, r.Type, "so#x-3" + "." + i);
+
+ // 4:: m:Key
+ Assert.IsTrue (r.Read (), "sm#y1" + "." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#y2" + "." + i);
+ Assert.AreEqual (XamlLanguage.Key, r.Member, "sm#y3" + "." + i);
+
+ // 4:: value
+ Assert.IsTrue (r.Read (), "v#y-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, "v#y-2" + "." + i);
+ Assert.AreEqual (i == 0 ? "one" : "two", r.Value, "v#y-3" + "." + i);
+
+ // 4:: /m:Key
+ Assert.IsTrue (r.Read (), "em#y-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#y-2" + "." + i);
+
+if (i == 0) {
+
+ // 4-2:: m:Items(ContentProperty)
+ Assert.IsTrue (r.Read (), "sm#x1" + "." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm#x2" + "." + i);
+ Assert.AreEqual (xt.GetMember ("Items"), r.Member, "sm#x3" + "." + i);
+
+ // 5:: GetObject
+ Assert.IsTrue (r.Read (), "go#z-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#z-2" + "." + i);
+
+ // 6:: m:Items(GetObject)
+ Assert.IsTrue (r.Read (), "smz#1" + "." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smz#2" + "." + i);
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "smz#3" + "." + i);
+
+ for (int j = 0; j < 2; j++) {
+ // 7:: t:SimpleType
+ Assert.IsTrue (r.Read (), "soi#x-1" + "." + i + "-" + j);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi#x-2" + "." + i + "-" + j);
+ Assert.AreEqual (xt, r.Type, "soi#z-3" + "." + i + "-" + j);
+
+ // 7:: /t:SimpleType
+ Assert.IsTrue (r.Read (), "eoi#x-1" + "." + i + "-" + j);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi#x-2" + "." + i + "-" + j);
+ }
+
+ // 6:: /m:Items(GetObject)
+ Assert.IsTrue (r.Read (), "emz#x-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emz#x-2" + "." + i);
+
+ // 5:: /GetObject
+ Assert.IsTrue (r.Read (), "eo#z-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#z-2" + "." + i);
+
+ // 4:: /m:Items(ContentProperty)
+ Assert.IsTrue (r.Read (), "em#x1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#x2" + "." + i);
+
+ // 4-2:: m:NonContentItems
+ Assert.IsTrue (r.Read (), "smv#1" + "." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smv#2" + "." + i);
+ Assert.AreEqual (xt.GetMember ("NonContentItems"), r.Member, "smv#3" + "." + i);
+
+ // 5-2:: GetObject
+ Assert.IsTrue (r.Read (), "go#z-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.GetObject, r.NodeType, "go#v-2" + "." + i);
+
+ // 6-2:: m:Items
+ Assert.IsTrue (r.Read (), "smw#1" + "." + i);
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "smw#2" + "." + i);
+ Assert.AreEqual (XamlLanguage.Items, r.Member, "smw#3" + "." + i);
+
+ for (int j = 0; j < 2; j++) {
+ // 7-2:: t:SimpleType
+ Assert.IsTrue (r.Read (), "soi2#x-1" + "." + i + "-" + j);
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "soi2#x-2" + "." + i + "-" + j);
+ Assert.AreEqual (xt, r.Type, "soi2#z-3" + "." + i + "-" + j);
+
+ // 7-2:: /t:SimpleType
+ Assert.IsTrue (r.Read (), "eoi2#x-1" + "." + i + "-" + j);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eoi2#x-2" + "." + i + "-" + j);
+ }
+
+ // 6-2:: /m:Items
+ Assert.IsTrue (r.Read (), "emw#1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emw#2" + "." + i);
+
+ // 5-2:: /GetObject
+ Assert.IsTrue (r.Read (), "eo#v-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#v-2" + "." + i);
+
+ // 4-2:: /m:NonContentItems
+ Assert.IsTrue (r.Read (), "emv#1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "emv#2" + "." + i);
+
+}
+
+ // 3:: /t:SimpleType
+ Assert.IsTrue (r.Read (), "eo#x-1" + "." + i);
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#x-2" + "." + i);
+ }
+
+ // 2:: /m:Items
+ Assert.IsTrue (r.Read (), "em#1-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "em#1-2");
+
+ // 1:: /t:ContentPropertyContainer
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ protected void Read_AttachedProperty (XamlReader r)
+ {
+ var at = new XamlType (typeof (Attachable), r.SchemaContext);
+
+ Assert.IsTrue (r.Read (), "ns#1-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "ns#1-2");
+ Assert.IsNotNull (r.Namespace, "ns#1-3");
+ Assert.AreEqual ("", r.Namespace.Prefix, "ns#1-4");
+ var assns = "clr-namespace:MonoTests.System.Xaml;assembly=" + GetType ().Assembly.GetName ().Name;
+ Assert.AreEqual (assns, r.Namespace.Namespace, "ns#1-5");
+
+ // t:AttachedWrapper
+ Assert.IsTrue (r.Read (), "so#1-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2");
+ var xt = new XamlType (typeof (AttachedWrapper), r.SchemaContext);
+ Assert.AreEqual (xt, r.Type, "so#1-3");
+
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
+ ReadAttachedProperty (r, at.GetAttachableMember ("Foo"), "x", "x");
+
+ // m:Value
+ Assert.IsTrue (r.Read (), "sm#2-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#sm#2-2");
+ Assert.AreEqual (xt.GetMember ("Value"), r.Member, "sm#2-3");
+
+ // t:Attached
+ Assert.IsTrue (r.Read (), "so#2-1");
+ Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "#so#2-2");
+ Assert.AreEqual (r.SchemaContext.GetXamlType (typeof (Attached)), r.Type, "so#2-3");
+
+ ReadAttachedProperty (r, at.GetAttachableMember ("Foo"), "y", "y");
+
+ Assert.IsTrue (r.Read (), "eo#2-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#eo#2-2");
+
+ // /m:Value
+ Assert.IsTrue (r.Read (), "em#2-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "#em#2-2");
+
+ // /t:AttachedWrapper
+ Assert.IsTrue (r.Read (), "eo#1-1");
+ Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2");
+
+ Assert.IsFalse (r.Read (), "end");
+ }
+
+ void ReadAttachedProperty (XamlReader r, XamlMember xm, string value, string label)
+ {
+ Assert.IsTrue (r.Read (), label + "#1-1");
+ Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, label + "#1-2");
+ Assert.AreEqual (xm, r.Member, label + "#1-3");
+
+ Assert.IsTrue (r.Read (), label + "#2-1");
+ Assert.AreEqual (XamlNodeType.Value, r.NodeType, label + "#2-2");
+ Assert.AreEqual (value, r.Value, label + "2-3");
+
+ Assert.IsTrue (r.Read (), label + "#3-1");
+ Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, label + "#3-2");
+ }
+
protected void Read_CommonXamlPrimitive (object obj)
{
var r = new XamlObjectReader (obj);
Assert.IsTrue (r.Read (), "ebase#1");
Assert.AreEqual (XamlNodeType.EndMember, r.NodeType, "ebase#2");
}
+
+ void ReadNamespace (XamlReader r, string prefix, string ns, string label)
+ {
+ Assert.IsTrue (r.Read (), label + "-1");
+ Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, label + "-2");
+ Assert.IsNotNull (r.Namespace, label + "-3");
+ Assert.AreEqual (prefix, r.Namespace.Prefix, label + "-4");
+ Assert.AreEqual (ns, r.Namespace.Namespace, label + "-5");
+ }
}
}