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); }