public void WithhWriteLockNullActionTest()
 {
     var l = new ReaderWriterLock();
     l.WithWriteLock(null);
 }
 public void WithWriteLockWithExceptionTest()
 {
     var l = new ReaderWriterLock();
     Assert.IsFalse(l.IsWriterLockHeld);
     var thrown = false;
     try
     {
         l.WithWriteLock(() =>
         {
             Assert.IsTrue(l.IsWriterLockHeld);
             throw new InvalidOperationException();
         });
     }
     catch (InvalidOperationException)
     {
         thrown = true;
     }
     Assert.IsFalse(l.IsWriterLockHeld);
     Assert.IsTrue(thrown);
 }
 public void WithWriteLockTimeoutWithExceptionTest()
 {
     var l = new ReaderWriterLock();
     var e = new AutoResetEvent(false);
     var lockGetted = false;
     var t = new Thread(() =>
     {
         var b = false;
         try
         {
             l.WithWriteLock(() =>
             {
                 lockGetted = true;
                 Assert.IsTrue(l.IsWriterLockHeld);
                 throw new InvalidOperationException();
             }, TimeSpan.FromSeconds(5));
         }
         catch (InvalidOperationException)
         {
             b = true;
         }
         Assert.IsTrue(b);
         e.Set();
     });
     l.AcquireWriterLock(100);
     t.Start();
     Thread.Sleep(1000);
     Assert.IsFalse(lockGetted);
     l.ReleaseWriterLock();
     e.WaitOne();
     Assert.IsTrue(lockGetted);
     Assert.IsFalse(l.IsWriterLockHeld);
 }
 public void WithWriteLockTimeoutSuccessTest()
 {
     var l = new ReaderWriterLock();
     var e = new AutoResetEvent(false);
     var lockGetted = false;
     var t = new Thread(() =>
     {
         l.WithWriteLock(() =>
         {
             lockGetted = true;
             Assert.IsTrue(l.IsWriterLockHeld);
         }, TimeSpan.FromSeconds(5));
         e.Set();
     });
     l.AcquireWriterLock(100);
     t.Start();
     Thread.Sleep(1000);
     Assert.IsFalse(lockGetted);
     l.ReleaseWriterLock();
     e.WaitOne();
     Assert.IsTrue(lockGetted);
     Assert.IsFalse(l.IsWriterLockHeld);
 }
 public void WithWriteLockTimeoutNullActionTest()
 {
     var l = new ReaderWriterLock();
     l.WithWriteLock(null, TimeSpan.Zero);
 }
 public void WithWriteLockSuccessTest()
 {
     var l = new ReaderWriterLock();
     Assert.IsFalse(l.IsWriterLockHeld);
     l.WithWriteLock(() => { Assert.IsTrue(l.IsWriterLockHeld); });
     Assert.IsFalse(l.IsWriterLockHeld);
 }