Esempio n. 1
0
        public void WithLockAction_ExceptionInAcquire_ThrowLockException()
        {
            // setup
            var semaphore = new SemaphoreSlim(1);
            var value     = new List();
            var subject   = new AsyncSynchronized <List>(semaphore, value);

            semaphore.Dispose();

            // act and assert
            var exception = Should.Throw <LockException>(() => subject.WithLock((v) =>
            {
            }));

            exception.InnerException.ShouldBeOfType <ObjectDisposedException>();
        }
Esempio n. 2
0
        public void WithLockAction_ExceptionInRelease_ThrowUnlockException()
        {
            // setup
            var semaphore = new SemaphoreSlim(1);
            var value     = new List();
            var subject   = new AsyncSynchronized <List>(semaphore, value);

            // act and assert
            var exception = Should.Throw <UnlockException>(() => subject.WithLock((v) =>
            {
                semaphore.Dispose();
            }));

            exception.PriorException.ShouldBeNull();
            exception.InnerExceptions
            .ToDictionary(kv => kv.Key, kv => kv.Value.GetType())
            .ShouldBe(new Dictionary <int, Type>
            {
                [0] = typeof(ObjectDisposedException)
            });
        }