[corlib] Throw correct exception for missing properties called via InvokeMember
[mono.git] / mcs / class / corlib / Test / System / TypeTest.cs
index 6acbac2dd9f4343e294871c32192c68a76bef31b..85c3542f0e152c8a7ae120185354895665c0b505 100644 (file)
@@ -1692,21 +1692,6 @@ namespace MonoTests.System
                        Assert.IsTrue (typeof (TimeSpan).IsValueType, "#6");
                }
 
-               [Test]
-               [Category("NotDotNet")]
-               // Depends on the GAC working, which it doesn't durring make distcheck.
-               [Category ("NotWorking")]
-               public void GetTypeWithWhitespace ()
-               {
-                       Assert.IsNotNull (Type.GetType
-                                                  (@"System.Configuration.NameValueSectionHandler,
-                       System,
-Version=1.0.5000.0,
-Culture=neutral
-,
-PublicKeyToken=b77a5c561934e089"));
-               }
-
                [Test]
                public void GetTypeNonVectorArray ()
                {
@@ -1886,6 +1871,20 @@ PublicKeyToken=b77a5c561934e089"));
                        typeof(B).InvokeMember ("", BindingFlags.CreateInstance, null, null, new object [] { 1 });
                }
 
+               [Test]
+               [ExpectedException (typeof (MissingMethodException))]
+               public void InvokeGetPropertyMissing ()
+               {
+                       typeof(B).InvokeMember ("", BindingFlags.GetProperty, null, null, new object [] { 1 });
+               }
+
+               [Test]
+               [ExpectedException (typeof (MissingMethodException))]
+               public void InvokeSetPropertyMissing ()
+               {
+                       typeof(B).InvokeMember ("", BindingFlags.SetProperty, null, null, new object [] { 1 });
+               }
+
                internal static string bug336841 (string param1, params string [] param2)
                {
                        StringBuilder sb = new StringBuilder ();
@@ -3211,6 +3210,14 @@ PublicKeyToken=b77a5c561934e089"));
                        Assert.AreEqual (t1, t2);
                }
 
+#if !MONOTOUCH
+               [Test]
+               public void SpaceAfterComma () {
+                       string strType = "System.Collections.Generic.Dictionary`2[[System.Int32,mscorlib], [System.String,mscorlib]],mscorlib";
+                       Assert.IsTrue (Type.GetType (strType) != null);
+               }
+#endif
+
 #if !MONOTOUCH
                [Test]
                public void Bug506757 ()
@@ -3663,17 +3670,10 @@ PublicKeyToken=b77a5c561934e089"));
 
                        Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((byte)0), "#11");
                        Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((sbyte)0), "#12");
-                       try {
-                               typeof (MyRealEnum).GetEnumName (false);
-                               Assert.Fail ("#13");
-                       } catch (ArgumentException) { }
-
+                       Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName (false), "#13");
                        Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((short)0), "#14");
                        Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((ushort)0), "#15");
-                       try {
-                               typeof (MyRealEnum).GetEnumName ('c');
-                               Assert.Fail ("#16");
-                       } catch (ArgumentException) { }
+                       Assert.IsNull (typeof (MyRealEnum).GetEnumName ('c'), "#16");
 
                        Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((int)0), "#17");
                        Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((uint)0), "#18");
@@ -3693,18 +3693,12 @@ PublicKeyToken=b77a5c561934e089"));
 
                        Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((byte)0), "#23");
                        Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((sbyte)0), "#24");
-                       try {
-                               typeof (MyRealEnum2).GetEnumName (false);
-                               Assert.Fail ("#22", "#25");
-                       } catch (ArgumentException) { }
+                       Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName (false), "#25");
 
                        Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((short)0), "#26");
                        Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((ushort)0), "#27");
 
-                       try {
-                               typeof (MyRealEnum2).GetEnumName ('c');
-                               Assert.Fail ("#28");
-                       } catch (ArgumentException) { }
+                       Assert.IsNull (typeof (MyRealEnum2).GetEnumName ('c'), "#28");
 
                        Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((int)0), "#29");
                        Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((uint)0), "#30");
@@ -3754,7 +3748,7 @@ PublicKeyToken=b77a5c561934e089"));
                        try {
                                typeof (MyRealEnum).IsEnumDefined (true);
                                Assert.Fail ("#6");
-                       } catch (InvalidOperationException) { }
+                       } catch (ArgumentException) { }
 
                        try {
                                typeof (MyRealEnum).IsEnumDefined (MyRealEnum2.A);
@@ -3764,7 +3758,7 @@ PublicKeyToken=b77a5c561934e089"));
                        try {
                                typeof (MyRealEnum).IsEnumDefined (typeof (MyRealEnum));
                                Assert.Fail ("#8");
-                       } catch (InvalidOperationException) { }
+                       } catch (ArgumentException) { }
 
                        Assert.IsTrue (typeof (MyRealEnum).IsEnumDefined ((short)0), "#9");
                        Assert.IsFalse (typeof (MyRealEnum).IsEnumDefined ((short)88), "#10");