Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mcs / class / corlib / Test / System / WeakReferenceTest.cs
index a9609e40d86838cbbbe35fc06ca879be57977081..717a99b6e1cba9263ce50e2ee00abdde649a65d3 100644 (file)
@@ -95,6 +95,44 @@ namespace MonoTests.System {
                                Assert.IsFalse (wr.TrackResurrection, "TrackResurrection");
                        }
                }
+
+               class Foo {
+                       WeakReference wr;
+
+                       public static bool failed;
+
+                       public Foo () {
+                               wr = new WeakReference (new object ());
+                       }
+
+                       ~Foo () {
+                               try {
+                                       var b = wr.IsAlive;
+                               } catch (Exception) {
+                                       failed = true;
+                               }
+                       }
+               }
+
+               [Test]
+               public void WeakReference_IsAlive_Finalized ()
+               {
+                       var f = new Foo ();
+                       f = null;
+                       GC.Collect ();
+                       GC.WaitForPendingFinalizers ();
+                       Assert.IsFalse (Foo.failed);
+               }
+
+#if NET_4_5
+               [Test]
+               public void WeakReferenceT_TryGetTarget_NullTarget ()
+               {
+                       var r = new WeakReference <object> (null);
+                       object obj;
+                       Assert.IsFalse (r.TryGetTarget (out obj), "#1");
+               }
+#endif
        }
 }