public void WithReadLockTimeoutWithExceptionTest() { var l = new ReaderWriterLock(); var e = new AutoResetEvent(false); var lockGetted = false; var t = new Thread(() => { var b = false; try { l.WithReadLock(() => { lockGetted = true; Assert.IsTrue(l.IsReaderLockHeld); 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.IsFalse(l.IsReaderLockHeld); }
public void WithReadLockSuccessTest() { var l = new ReaderWriterLock(); Assert.IsFalse(l.IsReaderLockHeld); l.WithReadLock(() => { Assert.IsTrue(l.IsReaderLockHeld); }); Assert.IsFalse(l.IsReaderLockHeld); }
public void WithReadLockWithExceptionTest() { var l = new ReaderWriterLock(); Assert.IsFalse(l.IsReaderLockHeld); var thrown = false; try { l.WithReadLock(() => { Assert.IsTrue(l.IsReaderLockHeld); throw new InvalidOperationException(); }); } catch (InvalidOperationException) { thrown = true; } Assert.IsFalse(l.IsReaderLockHeld); Assert.IsTrue(thrown); }
public void WithReadLockTimeoutSuccessTest() { var l = new ReaderWriterLock(); var e = new AutoResetEvent(false); var lockGetted = false; var t = new Thread(() => { l.WithReadLock(() => { Assert.IsTrue(l.IsReaderLockHeld); lockGetted = true; }, TimeSpan.FromSeconds(5)); e.Set(); }); l.AcquireWriterLock(100); t.Start(); Thread.Sleep(1000); Assert.IsFalse(lockGetted); l.ReleaseWriterLock(); e.WaitOne(); Assert.IsTrue(lockGetted); }
public void WithReadLockTimeoutNullActionTest() { var l = new ReaderWriterLock(); l.WithReadLock(null, TimeSpan.Zero); }
public void WithReadLockTimeoutNullLockTest() { ReaderWriterLock l = null; l.WithReadLock(() => { }, TimeSpan.Zero); }
public void WithReadLockNullActionTest() { var l = new ReaderWriterLock(); l.WithReadLock(null); }
public void WithReadLockNullLockTest() { ReaderWriterLock l = null; l.WithReadLock(() => { }); }