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

            Assert.IsFalse(l.IsReaderLockHeld);
            l.WithReadLock(() => { Assert.IsTrue(l.IsReaderLockHeld); });
            Assert.IsFalse(l.IsReaderLockHeld);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        public void WithReadLockTimeoutNullActionTest()
        {
            var l = new ReaderWriterLock();

            l.WithReadLock(null, TimeSpan.Zero);
        }
Exemple #6
0
        public void WithReadLockTimeoutNullLockTest()
        {
            ReaderWriterLock l = null;

            l.WithReadLock(() => { }, TimeSpan.Zero);
        }
Exemple #7
0
        public void WithReadLockNullActionTest()
        {
            var l = new ReaderWriterLock();

            l.WithReadLock(null);
        }
Exemple #8
0
        public void WithReadLockNullLockTest()
        {
            ReaderWriterLock l = null;

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