rwlock.ReleaseReaderLock ();\r
Assert ("u6", !rwlock.IsReaderLockHeld);\r
}\r
+ \r
+ [Test]\r
+ public void TestReaderInsideWriter ()\r
+ {\r
+ // Reader acquires and releases work like the writer equivalent\r
+ \r
+ rwlock = new ReaderWriterLock ();\r
+ rwlock.AcquireWriterLock (-1);\r
+ rwlock.AcquireReaderLock (-1);\r
+ Assert ("u1", !rwlock.IsReaderLockHeld);\r
+ Assert ("u2", rwlock.IsWriterLockHeld);\r
+ rwlock.AcquireReaderLock (-1);\r
+ Assert ("u3", !rwlock.IsReaderLockHeld);\r
+ Assert ("u4", rwlock.IsWriterLockHeld);\r
+ rwlock.ReleaseWriterLock ();\r
+ Assert ("u5", !rwlock.IsReaderLockHeld);\r
+ Assert ("u6", rwlock.IsWriterLockHeld);\r
+ rwlock.ReleaseReaderLock ();\r
+ Assert ("u7", !rwlock.IsReaderLockHeld);\r
+ Assert ("u8", rwlock.IsWriterLockHeld);\r
+ rwlock.ReleaseReaderLock ();\r
+ Assert ("u9", !rwlock.IsReaderLockHeld);\r
+ Assert ("u10", !rwlock.IsWriterLockHeld);\r
+ }\r
}\r
}