X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Ftests%2Fload-exceptions.cs;h=5bfa3a89da58104ebfd20516c665ed37dbf4bdb2;hb=HEAD;hp=53480c6ff2f7e1ef6b9192a20cee35e049623529;hpb=bdb88e635bd313f15bfabefb79f2fb0daf2e329f;p=mono.git diff --git a/mono/tests/load-exceptions.cs b/mono/tests/load-exceptions.cs index 53480c6ff2f..5bfa3a89da5 100644 --- a/mono/tests/load-exceptions.cs +++ b/mono/tests/load-exceptions.cs @@ -4,10 +4,16 @@ using System; using System.IO; +using System.Reflection; class Miss1 : Missing.Foo1 { } +public class Miss2 { + public class Foo : Missing.Foo1 { + } +} + public class Tests : LoadMissing { public delegate void TestDel (); @@ -216,13 +222,15 @@ public class Tests : LoadMissing { public static int test_0_missing_assembly_in_newobj () { return check_type_load (new TestDel (missing_assembly_in_newobj)); } + + public static int test_0_missing_delegate_ctor_argument () { + return check_type_load (new TestDel (missing_delegate_ctor_argument)); + } // // Missing classes referenced from metadata // - // FIXME: These do not work yet -#if FALSE public static int test_0_missing_local () { try { missing_local (); @@ -234,6 +242,74 @@ public class Tests : LoadMissing { return 0; } + //Regression test for #508532 + public static int test_0_assembly_throws_on_loader_error () + { + try { + Assembly asm = Assembly.Load ("load-missing"); + asm.GetType ("BrokenClass", false); + return 1; + } catch (TypeLoadException) {} + 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 (); + } + + //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 (); } @@ -243,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); } }