using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
+using System.Linq;
using System.Reflection;
using System.Text;
+using System.Windows.Markup;
using System.Xaml;
using System.Xaml.Schema;
using NUnit.Framework;
Assert.AreEqual (new XamlType (typeof (string), sctx), m.TargetType, "#10");
Assert.IsNotNull (m.Type, "#11");
Assert.AreEqual (typeof (int), m.Type.UnderlyingType, "#11-2");
-// Assert.IsNotNull (m.TypeConverter, "#12");
+ Assert.IsNotNull (m.TypeConverter, "#12");
Assert.IsNull (m.ValueSerializer, "#13");
Assert.IsNull (m.DeferringLoader, "#14");
Assert.AreEqual (str_len, m.UnderlyingMember, "#15");
Assert.AreEqual (new XamlType (typeof (string), sctx), m.TargetType, "#10");
Assert.IsNotNull (m.Type, "#11");
Assert.AreEqual (typeof (object), m.Type.UnderlyingType, "#11-2");
-// Assert.IsNull (m.TypeConverter, "#12");
+ Assert.IsNull (m.TypeConverter, "#12");
Assert.IsNull (m.ValueSerializer, "#13");
Assert.IsNull (m.DeferringLoader, "#14");
Assert.IsNull (m.UnderlyingMember, "#15");
Assert.IsFalse (m.IsAmbient, "#22");
}
- class MyXamlMember : XamlMember
+ [Test]
+ public void UnderlyingMember ()
{
- public MyXamlMember (PropertyInfo pi, XamlSchemaContext sc)
- : base (pi, sc)
- {
- }
-
- public MyXamlMember (EventInfo ei, XamlSchemaContext sc)
- : base (ei, sc)
- {
- }
-
- public MyXamlMember (string name, MethodInfo getter, MethodInfo setter, XamlSchemaContext sc)
- : base (name, getter, setter, sc)
- {
- }
+ Assert.IsTrue (new XamlMember (ass_load, sctx).UnderlyingMember is EventInfo, "#1");
+ Assert.IsTrue (new XamlMember (str_len, sctx).UnderlyingMember is PropertyInfo, "#2");
+ Assert.AreEqual (dummy_get, new XamlMember ("DummyProp", dummy_get, dummy_set, sctx).UnderlyingMember, "#3");
+ Assert.AreEqual (dummy_add, new XamlMember ("DummyAddMethod", dummy_add, sctx).UnderlyingMember, "#4");
+ Assert.IsNull (new XamlMember ("Length", new XamlType (typeof (string), sctx), false).UnderlyingMember, "#5");
+ }
- public MemberInfo UnderlyingMember {
- get { return LookupUnderlyingMember (); }
- }
+ [Test]
+ public void EqualsTest ()
+ {
+ XamlMember m;
+ var xt = XamlLanguage.Type;
+ m = new XamlMember ("Type", xt, false);
+ var type_type = xt.GetMember ("Type");
+ Assert.AreNotEqual (m, xt.GetMember ("Type"), "#1"); // whoa!
+ Assert.AreNotEqual (type_type, m, "#2"); // whoa!
+ Assert.AreEqual (type_type, xt.GetMember ("Type"), "#3");
+ Assert.AreEqual (type_type.ToString (), m.ToString (), "#4");
+
+ Assert.AreEqual (xt.GetAllMembers ().FirstOrDefault (mm => mm.Name == "Type"), xt.GetAllMembers ().FirstOrDefault (mm => mm.Name == "Type"), "#5");
+ Assert.AreEqual (xt.GetAllMembers ().FirstOrDefault (mm => mm.Name == "Type"), xt.GetMember ("Type"), "#6");
+
+ // different XamlSchemaContext
+ Assert.AreNotEqual (m, XamlLanguage.Type.GetMember ("Type"), "#7");
+ Assert.AreNotEqual (XamlLanguage.Type.GetMember ("Type"), new XamlSchemaContext ().GetXamlType (typeof (Type)).GetMember ("Type"), "#7");
+ Assert.AreEqual (XamlLanguage.Type.GetMember ("Type"), new XamlSchemaContext ().GetXamlType (typeof (TypeExtension)).GetMember ("Type"), "#8");
}
[Test]
- public void UnderlyingMember ()
+ public void ToStringTest ()
{
- Assert.IsTrue (new MyXamlMember (ass_load, sctx).UnderlyingMember is EventInfo, "#1");
- Assert.IsTrue (new MyXamlMember (str_len, sctx).UnderlyingMember is PropertyInfo, "#2");
- Assert.AreEqual (dummy_get, new MyXamlMember ("DummyProp", dummy_get, dummy_set, sctx).UnderlyingMember, "#3");
+ Assert.AreEqual ("{http://schemas.microsoft.com/winfx/2006/xaml}_Initialization", XamlLanguage.Initialization.ToString (), "#1");
+
+ // Wow. Uncomment this, and it will show .NET returns the XamlMember.ToString() results *inconsistently*.
+ //Assert.AreEqual ("System.Windows.Markup.XData", XamlLanguage.XData.ToString (), "#2pre");
+ Assert.AreEqual (XamlLanguage.Xaml2006Namespace, XamlLanguage.XData.PreferredXamlNamespace, "#2pre2");
+
+ Assert.AreEqual ("{http://schemas.microsoft.com/winfx/2006/xaml}XData.Text", XamlLanguage.XData.GetMember ("Text").ToString (), "#2");
+
+ var pi = typeof (string).GetProperty ("Length");
+ Assert.AreEqual ("{http://schemas.microsoft.com/winfx/2006/xaml}String.Length", new XamlMember (pi, sctx).ToString (), "#3");
+
+ Assert.AreEqual ("System.Xaml.XamlSchemaContext.FooBar", new XamlMember ("FooBar", typeof (XamlSchemaContext).GetMethod ("GetPreferredPrefix"), null, sctx).ToString (), "#4");
+
+ Assert.AreEqual ("{urn:foo}bar", new XamlDirective ("urn:foo", "bar").ToString (), "#5");
}
}
}