public void SaveSettings_Locks_And_Unlocks_When_Save_Successful() { // Arrange var testBundle = new SettingsManagerTestBundle(); // Act testBundle.SettingsManager.SaveSettings(); // Assert testBundle.MockSemaphore.Verify(x => x.WaitOne(), Times.Once); testBundle.MockSemaphore.Verify(x => x.Release(), Times.Once); }
public void GetSettings_Returns_Null_When_Semaphore_Interrupted() { // Arrange var testBundle = new SettingsManagerTestBundle(); testBundle.MockSemaphore.Setup(x => x.WaitOne()).Throws(new AbandonedMutexException()); // Act var settings = testBundle.SettingsManager.GetSettings(); // Assert Assert.IsNull(settings); }
public void GetSettings_Returns_Settings_Object() { // Arrange var testBundle = new SettingsManagerTestBundle(); var mockSettingsRoot = new Mock <SettingsRoot>(); testBundle.MockSettingsRepository.Setup(x => x.Load()).Returns(mockSettingsRoot.Object); // Act var settings = testBundle.SettingsManager.GetSettings(); // Assert Assert.IsNotNull(settings); Assert.AreSame(mockSettingsRoot.Object, settings); }
public void GetSettings_Returns_New_Settings_Object_After_Save_Succeeds() { // Arrange var testBundle = new SettingsManagerTestBundle(); var mockSettingsRoot = new Mock <SettingsRoot>(); testBundle.MockSettingsRepository.Setup(x => x.Load()).Returns((SettingsRoot)null); testBundle.MockSettingsRepository.Setup(x => x.CreateNewSettings()).Returns(mockSettingsRoot.Object); // Act var settings = testBundle.SettingsManager.GetSettings(); // Assert Assert.AreSame(mockSettingsRoot.Object, settings); testBundle.MockSemaphore.Verify(x => x.WaitOne(), Times.Once); testBundle.MockSemaphore.Verify(x => x.Release(), Times.Once); }
public void SettingsManagerReturnsSameSettingsObjectAfterMultipleCalls() { // Arrange var testBundle = new SettingsManagerTestBundle(); var mockSettingsRoot = new Mock <SettingsRoot>(); testBundle.MockSettingsRepository.Setup(x => x.Load()).Returns(mockSettingsRoot.Object); // Act var s1 = testBundle.SettingsManager.GetSettings(); var s2 = testBundle.SettingsManager.GetSettings(); // Assert Assert.AreSame(mockSettingsRoot.Object, s1); Assert.AreSame(mockSettingsRoot.Object, s2); Assert.AreSame(s1, s2); }
public void GetSettings_Returns_New_Settings_Object_After_Save_Fails() { // Arrange var testBundle = new SettingsManagerTestBundle(); var mockSettingsRoot = new Mock<SettingsRoot>(); testBundle.MockSettingsRepository.Setup(x => x.Load()).Returns((SettingsRoot)null); testBundle.MockSettingsRepository.Setup(x => x.CreateNewSettings()).Returns(mockSettingsRoot.Object); testBundle.MockSettingsRepository.Setup(x => x.Save(mockSettingsRoot.Object)).Throws(new IOException("Test Exception")); // Act var settings = testBundle.SettingsManager.GetSettings(); // Assert Assert.AreSame(mockSettingsRoot.Object, settings); testBundle.MockSemaphore.Verify(x => x.WaitOne(), Times.Once); testBundle.MockSemaphore.Verify(x => x.Release(), Times.Once); }
public void GetSettings_Rethrows_Exception() { var testBundle = new SettingsManagerTestBundle(); var testException = new NullReferenceException(); Exception caughtException = null; testBundle.MockSettingsRepository.Setup(x => x.Load()).Throws(testException); // Act try { testBundle.SettingsManager.GetSettings(); } catch (Exception ex) { caughtException = ex; } // Assert Assert.AreSame(testException, caughtException); }
public void SaveSettings_Throws_Exception_When_Serialization_Fails() { // Arrange var testException = new ThreadInterruptedException(); var testBundle = new SettingsManagerTestBundle(); Exception thrownException = null; testBundle.MockSettingsRepository.Setup(x => x.Save(It.IsAny <SettingsRoot>())).Throws(testException); // Act try { testBundle.SettingsManager.SaveSettings(); } catch (Exception ex) { thrownException = ex; } // Assert testBundle.MockSemaphore.Verify(x => x.WaitOne(), Times.Once); testBundle.MockSemaphore.Verify(x => x.Release(), Times.Once); Assert.IsNotNull(thrownException); }
public void SettingsManagerReturnsSameSettingsObjectAfterMultipleCalls() { // Arrange var testBundle = new SettingsManagerTestBundle(); var mockSettingsRoot = new Mock<SettingsRoot>(); testBundle.MockSettingsRepository.Setup(x => x.Load()).Returns(mockSettingsRoot.Object); // Act var s1 = testBundle.SettingsManager.GetSettings(); var s2 = testBundle.SettingsManager.GetSettings(); // Assert Assert.AreSame(mockSettingsRoot.Object, s1); Assert.AreSame(mockSettingsRoot.Object, s2); Assert.AreSame(s1, s2); }
public void SaveSettings_Throws_Exception_When_Serialization_Fails() { // Arrange var testException = new ThreadInterruptedException(); var testBundle = new SettingsManagerTestBundle(); Exception thrownException = null; testBundle.MockSettingsRepository.Setup(x => x.Save(It.IsAny<SettingsRoot>())).Throws(testException); // Act try { testBundle.SettingsManager.SaveSettings(); } catch (Exception ex) { thrownException = ex; } // Assert testBundle.MockSemaphore.Verify(x => x.WaitOne(), Times.Once); testBundle.MockSemaphore.Verify(x => x.Release(), Times.Once); Assert.IsNotNull(thrownException); }
public void GetSettings_Returns_Settings_Object() { // Arrange var testBundle = new SettingsManagerTestBundle(); var mockSettingsRoot = new Mock<SettingsRoot>(); testBundle.MockSettingsRepository.Setup(x => x.Load()).Returns(mockSettingsRoot.Object); // Act var settings = testBundle.SettingsManager.GetSettings(); // Assert Assert.IsNotNull(settings); Assert.AreSame(mockSettingsRoot.Object, settings); }