diff --git a/src/testsuite.in b/src/testsuite.in
index 27afa032d1a17b6677f5f0d3aba1472a5e3f166f..3f03f5da4d9c775da8cdfaf155e29ce382f533c8 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -1,4 +1,4 @@
-test_true([["$Id: testsuite.in,v 1.27 1997/02/27 12:32:13 hubbe Exp $"]])
+test_true([["$Id: testsuite.in,v 1.28 1997/02/27 13:17:58 hubbe Exp $"]])
 teste_eval_error(mixed foo=({}); sort(@foo); )
 test_compile_error([[int foo() { return 1} ; constant foo=(["foo":foo]); return foo->foo();]])
 test_eval_error(mixed *foo=({}); return mkmapping(foo,({1})); )
@@ -128,7 +128,13 @@ cond([[all_constants()->thread_create]],
   test_true(_tmp_mutex->lock())
   test_true(_tmp_mutex->trylock())
   test_true(_tmp_mutex->trylock())
+  test_do(add_constant("_tmp_mutex_lock",_tmp_mutex->lock()))
+  test_false(_tmp_mutex->trylock())
+  test_do(add_constant("_tmp_mutex_lock"))
+  test_true(_tmp_mutex->trylock())
   test_do(add_constant("_tmp_mutex"))
+  test_any([[mixed *data=({0,Thread.Mutex(),Thread.Mutex(),0}); data[3]=data[2]->lock(); thread_create(lambda(mixed *data) { data[3]=data[1]->lock(); sleep(5); data[0]=1; destruct(data[3]); } data[3]=data[2]->lock();  return data[0]; ]],1)
+  test_any([[mixed *data=({1, Thread.Mutex()}); for(int e=0;e<3;e++) thread_create(lambda(mixed *data) { for(int e=0;e<1000;e++) { object o=data[1]->lock(); data[0]*=2; for(int d=0;d<5;d++) { data[0]--; data[0]*=2; } data[0]--; destruct(o); }}, data); return data[0];]],1)
 
 // /precompiled/condition
   test_true(Thread.Condition())