Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / load-exceptions.cs
index 96205e5a759c973260e202d380d2204f4bbb3210..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 ();
@@ -237,7 +242,7 @@ public class Tests : LoadMissing {
                return 0;
        }
 
-       #Regression test for #508532
+       //Regression test for #508532
        public static int test_0_assembly_throws_on_loader_error ()
        {
                try {
@@ -247,8 +252,63 @@ public class Tests : LoadMissing {
                } catch (TypeLoadException) {}
                return 0;
        }
-       
-       // FIXME: These do not work yet
+
+       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 ();
+       }
+
+       //Regression test for #508487
+       public static int test_0_missing_outer_type_in_typeref () {
+               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 ();
@@ -259,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);
        }
 }