コード例 #1
0
        public void ShouldClearAndLock()
        {
            // Arrange
            MockSemaphoreSlimBookEnd mockSemaphoreSlimBookEnd = new MockSemaphoreSlimBookEnd.Builder().WaitSync().Release().Build();
            MockCacheSync <string>   mockCache = new MockCacheSync <string> .Builder().Clear().Build();

            BlockingClassCacheSync <string> subject = new BlockingClassCacheSync <string>(mockSemaphoreSlimBookEnd, mockCache);

            // Act
            subject.Clear();

            // Assert
            mockCache.AssertClearInvoked();
            mockSemaphoreSlimBookEnd.AssertWaitSyncInvoked();
            mockSemaphoreSlimBookEnd.AssertReleaseInvoked();
        }
コード例 #2
0
        public void ShouldReleaseLockOnExceptionFromClear()
        {
            // Arrange
            MockSemaphoreSlimBookEnd mockSemaphoreSlimBookEnd = new MockSemaphoreSlimBookEnd.Builder().WaitSync().Release().Build();
            MockCacheSync <string>   mockCache = new MockCacheSync <string> .Builder().Clear(() => throw new Exception()).Build();

            BlockingClassCacheSync <string> subject = new BlockingClassCacheSync <string>(mockSemaphoreSlimBookEnd, mockCache);

            // Act
            Action action = () => subject.Clear();

            // Assert
            action.Should().Throw <Exception>();
            mockCache.AssertClearInvoked();
            mockSemaphoreSlimBookEnd.AssertWaitSyncInvoked();
            mockSemaphoreSlimBookEnd.AssertReleaseInvoked();
        }