Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / load-exceptions.cs
index ed6f8cb357c07475312bd93926d91d1091745641..5bfa3a89da58104ebfd20516c665ed37dbf4bdb2 100644 (file)
@@ -9,6 +9,11 @@ using System.Reflection;
 class Miss1 : Missing.Foo1 {
 }
 
+public class Miss2 {
+       public class Foo : Missing.Foo1 {
+       }
+}
+
 public class Tests : LoadMissing {
 
        public delegate void TestDel ();
@@ -248,6 +253,41 @@ public class Tests : LoadMissing {
                return 0;
        }
 
+       public static int test_0_bad_method_override1 ()
+       {
+               try {
+                       BadOverridesDriver.bad_override1 ();
+                       return 1;
+               } catch (TypeLoadException) {}
+               return 0;
+       }
+
+       public static int test_0_bad_method_override2 ()
+       {
+               try {
+                       BadOverridesDriver.bad_override2 ();
+                       return 1;
+               } catch (TypeLoadException) {}
+               return 0;
+       }
+
+       public static int test_0_bad_method_override3 ()
+       {
+               try {
+                       BadOverridesDriver.bad_override3 ();
+                       return 1;
+               } catch (TypeLoadException) {}
+               return 0;
+       }
+
+       public static int test_0_bad_method_override4 ()
+       {
+               try {
+                       BadOverridesDriver.bad_override4 ();
+                       return 1;
+               } catch (TypeLoadException) {}
+               return 0;
+       }
 
        public static void missing_outer () {
                new Missing.Foo1.InnerFoo ();
@@ -258,6 +298,17 @@ public class Tests : LoadMissing {
                return check_type_load (new TestDel (missing_outer));
        }
 
+       // #524498
+       public static int test_0_exception_while_jitting_cctor () {
+               try {
+                       CCtorClass.foo ();
+               } catch (TypeInitializationException) {
+                       return 0;
+               }
+
+               return 1;
+       }
+
 #if FALSE
        public static void missing_parent () {
                new Miss1 ();
@@ -268,7 +319,38 @@ public class Tests : LoadMissing {
        }
 #endif
 
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
+       public static int test_0_missing_nested () {
+               if (typeof (Miss2).GetNestedTypes ().Length != 0)
+                       return 1;
+               return 0;
+       }
+
+       public static int test_0_reflection_on_field_with_missing_type () {
+               var t = typeof (BadOverridesDriver).Assembly.GetType ("FieldWithMissingType");
+               foreach (var f in t.GetFields (BindingFlags.Public | BindingFlags.Static)) {
+                       try {
+                               Console.WriteLine (f.Name);
+                               f.GetValue (null);
+                               return 1;
+                       } catch (TypeLoadException) {
+                               return 0;
+                       }
+               }
+               return 2;
+       }
+
+       public static int test_0_reflection_on_field_with_missing_custom_attr () {
+               var t = typeof (BadOverridesDriver).Assembly.GetType ("FieldWithMissingCustomAttribute");
+               try {
+                       Console.WriteLine (t.GetFields ()[0].CustomAttributes);
+                       return 1;
+               } catch (FileNotFoundException) {
+                       return 0;
+               }
+               return 2;
+       }
+
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
        }
 }