|
|
@@ -414,6 +414,34 @@ namespace MonoTests.System.Threading
|
|
|
Assert.IsTrue (v.TryEnterReadLock (100), "#3");
|
|
|
}
|
|
|
|
|
|
+ [Test]
|
|
|
+ public void RecursiveReadPlusWriteLockTest ()
|
|
|
+ {
|
|
|
+ var v = new ReaderWriterLockSlim (LockRecursionPolicy.SupportsRecursion);
|
|
|
+
|
|
|
+ try {
|
|
|
+ v.EnterReadLock ();
|
|
|
+ v.EnterWriteLock ();
|
|
|
+ Assert.Fail ("1");
|
|
|
+ } catch (LockRecursionException ex) {
|
|
|
+ Assert.IsNotNull (ex, "#1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void RecursiveReadPlusUpgradeableLockTest ()
|
|
|
+ {
|
|
|
+ var v = new ReaderWriterLockSlim (LockRecursionPolicy.SupportsRecursion);
|
|
|
+
|
|
|
+ try {
|
|
|
+ v.EnterReadLock ();
|
|
|
+ v.EnterUpgradeableReadLock ();
|
|
|
+ Assert.Fail ("1");
|
|
|
+ } catch (LockRecursionException ex) {
|
|
|
+ Assert.IsNotNull (ex, "#1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
[Test]
|
|
|
public void RecursiveWriteLockTest ()
|
|
|
{
|