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");
// 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");
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");
{
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 ();
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");
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");
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");
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");
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");
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.
// 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");
if (validateInstance != null)
validateInstance ();
+ if (r is XamlXmlReader)
+ ReadBase (r);
+
Assert.IsTrue (r.Read (), "#61");
Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#62");
}
// 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");
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");
// 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");
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");
// 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");
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");
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");
{
Read_TypeOrTypeExtension (r, delegate {
Assert.IsTrue (r.Instance is TypeExtension, "#26");
- });
+ }, XamlLanguage.PositionalParameters);
}
[Test]
{
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);
}
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);
}
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");
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");
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");
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");
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");
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
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");
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");
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");
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);
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
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");
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");
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");
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");
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");
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");
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
obj ["Foo"] = typeof (int);
obj ["Bar"] = typeof (Dictionary<Type,XamlType>);
var r = new XamlObjectReader (obj);
- Read_Dictionary2 (r);
+ Read_Dictionary2 (r, XamlLanguage.PositionalParameters);
}
[Test]
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 ()
{
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 ()
{
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 ()
{
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 ()
{
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 ()
{
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);
+ }
}
}