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