diff --git a/src/testsuite.in b/src/testsuite.in
index b356388a5fa42678d738cd798c8f68f80200fe6e..227b89e8b1ac71da9c41bb10d84116f5565f5560 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -1,4 +1,4 @@
-test_true([["$Id: testsuite.in,v 1.328 2000/09/10 09:17:05 mirar Exp $"]]);
+test_true([["$Id: testsuite.in,v 1.329 2000/09/15 00:31:43 mast Exp $"]]);
 
 cond([[all_constants()->_verify_internals]],
 [[
@@ -2003,6 +2003,46 @@ ifefun(gc,
     gc(); return a;
   }]], ({4711, 0x54325827a124*0x12348795482485425}))
 
+  test_any_equal([[{
+    object o = class Live {
+      object o;
+      array a = ({17});
+      void create() {o = this_object();}
+      void destroy() {all_constants()->kablutt = a;}
+    }();
+    o = 0;
+    gc();
+    return all_constants()->kablutt;
+  }]], ({17}));
+  test_any([[{
+    object o = class Live {
+      object o;
+      array a = set_weak_flag (({({17})}), 1);
+      void create() {o = this_object();}
+      void destroy() {
+	if (!equal (a, ({({17})})))
+	  error ("Contents in weak array zapped: %O.\n", a);
+      }
+    }();
+    o = 0;
+    return gc() >= 3;
+  }]], 1);
+  test_any_equal([[{
+    object o = class Live {
+      object o;
+      array a = set_weak_flag (({({17})}), 1);
+      void create() {o = this_object();}
+      void destroy() {all_constants()->blatinka = a;}
+    }();
+    o = 0;
+    gc();
+    if (!equal (all_constants()->blatinka, ({({17})})))
+      error ("Contents in saved weak array zapped: %O.\n",
+	     all_constants()->blatinka);
+    gc();
+    return all_constants()->blatinka;
+  }]], ({0}));
+
   test_any([[{
     class Dead {object o;};
     object o = Dead(); o->o = Dead();
@@ -2169,6 +2209,10 @@ ifefun(gc,
     gc();
     return sizeof (a) == 1 && sizeof (b) == 1;
   }]], 1);
+  test_any([[{
+    mapping a = set_weak_flag (([17: set_weak_flag (({({17})}), 1)]), 1);
+    return gc() >= 2 && !sizeof (a);
+  }]], 1);
 
   test_do([[{
     int got_error = 0;
@@ -4672,6 +4716,9 @@ do_test_copy_value( ({1}) )
 do_test_copy_value( ([]) )
 do_test_copy_value( (<>) )
 do_test_copy_value( (< ([]), ({1}) ,"" , 1.0 >) )
+test_true(get_weak_flag(copy_value(set_weak_flag(({17}), 1))))
+test_true(get_weak_flag(copy_value(set_weak_flag(([17:17]), 1))))
+test_true(get_weak_flag(copy_value(set_weak_flag((<17>), 1))))
 
 // - crypt
 test_true(stringp(crypt("hej")))