X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Ftests%2Fload-exceptions.cs;h=ed6f8cb357c07475312bd93926d91d1091745641;hb=2867ac38a0e04282cad42360ebc3cd4b02bf4b98;hp=b84c7b4eb7d2f7370d252837dbb6083f1c4f3ea7;hpb=948dbf8d4581ac17f5420cc4f7dc375e3c502576;p=mono.git diff --git a/mono/tests/load-exceptions.cs b/mono/tests/load-exceptions.cs index b84c7b4eb7d..ed6f8cb357c 100644 --- a/mono/tests/load-exceptions.cs +++ b/mono/tests/load-exceptions.cs @@ -3,6 +3,8 @@ // using System; +using System.IO; +using System.Reflection; class Miss1 : Missing.Foo1 { } @@ -36,6 +38,15 @@ public class Tests : LoadMissing { return 1; } + internal static int check_file_not_found (TestDel d){ + try { + d (); + } catch (FileNotFoundException ex){ + return 0; + } + return 1; + } + internal static int check_missing_field (TestDel d) { try { d (); @@ -48,6 +59,7 @@ public class Tests : LoadMissing { return 1; } + // // Base instructions // @@ -85,6 +97,9 @@ public class Tests : LoadMissing { return check_type_load (new TestDel (missing_cpobj)); } + public static int test_0_missing_type_on_parameter () { + return check_type_load (new TestDel (missing_external_type_reference_on_parameter)); + } public static int test_0_initobj () { return check_type_load (new TestDel (missing_initobj)); } @@ -187,12 +202,30 @@ public class Tests : LoadMissing { return check_type_load (new TestDel (missing_unbox_any)); } +#if false + // Bummer: we regressed! I should have put this before + public static int test_0_missing_assembly_in_fieldref () { + return check_file_not_found (new TestDel (missing_assembly_in_fieldref)); + } +#endif + + // FIXME: the corrent exception here is FileNotFoundException + public static int test_0_missing_assembly_in_call () { + return check_type_load (new TestDel (missing_assembly_in_call)); + } + + 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 (); @@ -204,6 +237,28 @@ 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 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)); + } + +#if FALSE public static void missing_parent () { new Miss1 (); }