Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void WithWriteLockSuccessTest()
        {
            var l = new ReaderWriterLock();

            Assert.IsFalse(l.IsWriterLockHeld);
            l.WithWriteLock(() => { Assert.IsTrue(l.IsWriterLockHeld); });
            Assert.IsFalse(l.IsWriterLockHeld);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        public void WithWriteLockTimeoutNullActionTest()
        {
            var l = new ReaderWriterLock();

            l.WithWriteLock(null, TimeSpan.Zero);
        }
Beispiel #6
0
        public void WithWriteLockTimeoutNullLockTest()
        {
            ReaderWriterLock l = null;

            l.WithWriteLock(() => { }, TimeSpan.Zero);
        }
Beispiel #7
0
        public void WithhWriteLockNullActionTest()
        {
            var l = new ReaderWriterLock();

            l.WithWriteLock(null);
        }
Beispiel #8
0
        public void WithWriteLockNullLockTest()
        {
            ReaderWriterLock l = null;

            l.WithWriteLock(() => { });
        }