[runtime] Fix DISABLE_REFLECTION_EMIT build.
[mono.git] / mono / tests / gc-oom-handling2.cs
index 5b3cbf73aaf4c3a7a3f2be4df9b8a2f7a6af2fbf..e048113fb050d0740cd2cea4af611bb1a4a5f8e6 100644 (file)
@@ -1,19 +1,45 @@
 using System;
 using System.Collections.Generic;
+using System.Reflection;
+
 
 class Driver {
+       /*Test that GC handles interning failure correctly*/
+       static void DumpStuff () {
+               Console.WriteLine ("CWL under OOM - should not print {0}", 99);
+               Console.WriteLine ("CWL under OOM - should not print {0}{1}", 22, 44.4);
+       }
+
        static int Main () {
                Console.WriteLine ("start");
+               Assembly corlib = typeof (object).Assembly;
+               Module module = corlib.GetModules ()[0];
                var r = new Random (123456);
                var l = new List<object> ();
                try {
-                       for (int i = 0; i < 40000; ++i) {
+                       for (int i = 0; i < 400000; ++i) {
                                var foo = new byte[r.Next () % 4000];
                                l.Add (foo);
                        }
                        Console.WriteLine ("done");
-                       return -1;
-               } catch (Exception e) {
+                       return 1;
+               } catch (Exception) {
+                       try {
+                               DumpStuff ();
+                               return 2;
+                       } catch (Exception) {}
+
+                       try {
+                               module.GetTypes ();
+                               return 3;
+                       } catch (Exception) {}
+
+                       try {
+                               corlib.GetTypes ();
+                               return 4;
+                       } catch (Exception) {}
+       
+
                        l.Clear ();
                        l = null;
                        Console.WriteLine ("OOM done");