X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Ftests%2Fsynchronized.cs;h=86ea9a8f02ca45379eba52cd523dbf8c7ce8cf3c;hb=051ffdfbde88161199dd29a2db17fd181afb5e5a;hp=58eda9a209ef36fe813fce6392778fefb2db047b;hpb=9d61782c6e2392d7ceec2006b35be582598a70ae;p=mono.git diff --git a/mono/tests/synchronized.cs b/mono/tests/synchronized.cs index 58eda9a209e..86ea9a8f02c 100644 --- a/mono/tests/synchronized.cs +++ b/mono/tests/synchronized.cs @@ -8,19 +8,20 @@ using System; using System.Threading; using System.Runtime.CompilerServices; -class Test { +class Tests { + + // We use Monitor.Pulse to test that the object is synchronized [MethodImplAttribute(MethodImplOptions.Synchronized)] public int test () { - Monitor.Exit (this); - Monitor.Enter (this); + Monitor.Pulse (this); + //Monitor.Enter (this); return 2 + 2; } [MethodImplAttribute(MethodImplOptions.Synchronized)] public static int test_static () { - Monitor.Exit (typeof (Test)); - Monitor.Enter (typeof (Test)); + Monitor.Pulse (typeof (Tests)); return 2 + 2; } @@ -32,21 +33,36 @@ class Test { [MethodImplAttribute(MethodImplOptions.Synchronized)] public virtual int test_virtual () { - Monitor.Exit (this); - Monitor.Enter (this); + Monitor.Pulse (this); return 2 + 2; } + public static bool is_synchronized (object o) { + try { + Monitor.Pulse (o); + } + catch (SynchronizationLockException ex) { + return false; + } + return true; + } + public delegate int Delegate1 (); static public int Main (String[] args) { - Test b = new Test (); - int res; + Tests b = new Tests (); + int res, err; Console.WriteLine ("Test1..."); b.test (); + if (is_synchronized (b)) + return 1; + Console.WriteLine ("Test2..."); test_static (); + if (is_synchronized (typeof (Tests))) + return 1; + Console.WriteLine ("Test3..."); try { b.test_exception (); @@ -57,21 +73,31 @@ class Test { catch (Exception ex) { // OK } + if (is_synchronized (b)) + return 1; Console.WriteLine ("Test4..."); b.test_virtual (); + if (is_synchronized (b)) + return 1; Console.WriteLine ("Test5..."); Delegate1 d = new Delegate1 (b.test); res = d (); + if (is_synchronized (b)) + return 1; Console.WriteLine ("Test6..."); d = new Delegate1 (test_static); res = d (); + if (is_synchronized (typeof (Tests))) + return 1; Console.WriteLine ("Test7..."); d = new Delegate1 (b.test_virtual); res = d (); + if (is_synchronized (b)) + return 1; Console.WriteLine ("Test8..."); d = new Delegate1 (b.test_exception); @@ -84,6 +110,8 @@ class Test { catch (Exception ex) { // OK } + if (is_synchronized (b)) + return 1; return 0; }