Index: test/Plugins/Wti/Wti.Calculation.Test/Piping/PipingCalculationExceptionTest.cs =================================================================== diff -u --- test/Plugins/Wti/Wti.Calculation.Test/Piping/PipingCalculationExceptionTest.cs (revision 0) +++ test/Plugins/Wti/Wti.Calculation.Test/Piping/PipingCalculationExceptionTest.cs (revision 17ff1f55ba16c96a71a4476845340e38a9fce99f) @@ -0,0 +1,52 @@ +using System; +using NUnit.Framework; +using Wti.Calculation.Piping; + +namespace Wti.Calculation.Test.Piping +{ + public class PipingCalculationExceptionTest + { + [Test] + public void DefaultConstructor_InnerExceptionNullAndMessageDefault() + { + // Setup + var expectedMessage = String.Format("Exception of type '{0}' was thrown.", typeof(PipingCalculationException).FullName); + + // Call + var exception = new PipingCalculationException(); + + // Assert + Assert.IsNull(exception.InnerException); + Assert.AreEqual(expectedMessage, exception.Message); + } + + [Test] + public void Constructor_WithCustomMessage_InnerExceptionNullAndMessageSetToCustom() + { + // Setup + var expectedMessage ="Some exception message"; + + // Call + var exception = new PipingCalculationException(expectedMessage); + + // Assert + Assert.IsNull(exception.InnerException); + Assert.AreEqual(expectedMessage, exception.Message); + } + + [Test] + public void Constructor_WithCustomMessageAndInnerException_InnerExceptionSetAndMessageSetToCustom() + { + // Setup + var expectedMessage = "Some exception message"; + var expectedInnerException = new Exception(); + + // Call + var exception = new PipingCalculationException(expectedMessage, expectedInnerException); + + // Assert + Assert.AreSame(expectedInnerException, exception.InnerException); + Assert.AreEqual(expectedMessage, exception.Message); + } + } +} \ No newline at end of file Index: test/Plugins/Wti/Wti.Calculation.Test/Wti.Calculation.Test.csproj =================================================================== diff -u -ra3b93c36c2051bd6112327bff0d836ae7883737d -r17ff1f55ba16c96a71a4476845340e38a9fce99f --- test/Plugins/Wti/Wti.Calculation.Test/Wti.Calculation.Test.csproj (.../Wti.Calculation.Test.csproj) (revision a3b93c36c2051bd6112327bff0d836ae7883737d) +++ test/Plugins/Wti/Wti.Calculation.Test/Wti.Calculation.Test.csproj (.../Wti.Calculation.Test.csproj) (revision 17ff1f55ba16c96a71a4476845340e38a9fce99f) @@ -42,6 +42,7 @@ + Index: test/Plugins/Wti/Wti.Data.Test/PipingDataTest.cs =================================================================== diff -u -ra8605fbec9c103f6b54775d479ec3c6078b484a2 -r17ff1f55ba16c96a71a4476845340e38a9fce99f --- test/Plugins/Wti/Wti.Data.Test/PipingDataTest.cs (.../PipingDataTest.cs) (revision a8605fbec9c103f6b54775d479ec3c6078b484a2) +++ test/Plugins/Wti/Wti.Data.Test/PipingDataTest.cs (.../PipingDataTest.cs) (revision 17ff1f55ba16c96a71a4476845340e38a9fce99f) @@ -136,44 +136,5 @@ // Call & Assert pipingData.Detach(observer); } - - [Test] - public void Output_SetToNullWithListeners_ListenersNotified() - { - // Setup - var observer = mockRepository.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - mockRepository.ReplayAll(); - - var pipingData = new PipingData(); - pipingData.Attach(observer); - - // Call & Assert - pipingData.Output = null; - } - - [Test] - public void Output_SetToNewOutputWithListeners_ListenersNotified() - { - // Setup - var random = new Random(22); - var pipingData = new PipingData(); - - var observer = mockRepository.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - - pipingData.Attach(observer); - mockRepository.ReplayAll(); - - // Call & Assert - pipingData.Output = new PipingOutput( - random.NextDouble(), - random.NextDouble(), - random.NextDouble(), - random.NextDouble(), - random.NextDouble(), - random.NextDouble() - ); - } } } \ No newline at end of file Index: test/Plugins/Wti/Wti.Data.Test/PipingFailureMechanismTest.cs =================================================================== diff -u -rb16cc39381e4275844ad330e0bc56ede52aa5b88 -r17ff1f55ba16c96a71a4476845340e38a9fce99f --- test/Plugins/Wti/Wti.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision b16cc39381e4275844ad330e0bc56ede52aa5b88) +++ test/Plugins/Wti/Wti.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision 17ff1f55ba16c96a71a4476845340e38a9fce99f) @@ -1,10 +1,20 @@ -using NUnit.Framework; +using DelftTools.Shell.Core; +using NUnit.Framework; +using Rhino.Mocks; namespace Wti.Data.Test { [TestFixture] public class PipingFailureMechanismTest { + private MockRepository mockRepository; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + } + [Test] public void DefaultConstructor_ExpectedValues() { @@ -15,5 +25,94 @@ CollectionAssert.IsEmpty(piping.SurfaceLines); Assert.IsNotNull(piping.PipingData); } + + [Test] + public void Notify_SingleListenerAttached_ListenerIsNotified() + { + // Setup + var observer = mockRepository.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + + mockRepository.ReplayAll(); + + var pipingFailureMechanism = new PipingFailureMechanism(); + + pipingFailureMechanism.Attach(observer); + + // Call & Assert + pipingFailureMechanism.NotifyObservers(); + } + + [Test] + public void Notify_SingleListenerAttachedAndDeattached_ListenerIsNotNotified() + { + // Setup + var observer = mockRepository.StrictMock(); + observer.Expect(o => o.UpdateObserver()).Repeat.Never(); + mockRepository.ReplayAll(); + + var pipingFailureMechanism = new PipingFailureMechanism(); + + pipingFailureMechanism.Attach(observer); + pipingFailureMechanism.Detach(observer); + + // Call & Assert + pipingFailureMechanism.NotifyObservers(); + } + + [Test] + public void Notify_TwoListenersAttached_BothAreNotified() + { + // Setup + var observerA = mockRepository.StrictMock(); + observerA.Expect(o => o.UpdateObserver()); + + var observerB = mockRepository.StrictMock(); + observerB.Expect(o => o.UpdateObserver()); + + mockRepository.ReplayAll(); + + var pipingFailureMechanism = new PipingFailureMechanism(); + + pipingFailureMechanism.Attach(observerA); + pipingFailureMechanism.Attach(observerB); + + // Call & Assert + pipingFailureMechanism.NotifyObservers(); + } + + [Test] + public void Notify_TwoListenersAttachedOneDetached_InvokedOnce() + { + // Setup + var observerA = mockRepository.StrictMock(); + observerA.Expect(o => o.UpdateObserver()).Repeat.Never(); + + var observerB = mockRepository.StrictMock(); + observerB.Expect(o => o.UpdateObserver()); + + mockRepository.ReplayAll(); + + var pipingFailureMechanism = new PipingFailureMechanism(); + + pipingFailureMechanism.Attach(observerA); + pipingFailureMechanism.Attach(observerB); + pipingFailureMechanism.Detach(observerA); + + // Call & Assert + pipingFailureMechanism.NotifyObservers(); + } + + [Test] + public void Detach_DetachNonAttachedObserver_ThrowsNoException() + { + // Setup + var observer = mockRepository.StrictMock(); + + var pipingFailureMechanism = new PipingFailureMechanism(); + + // Call & Assert + pipingFailureMechanism.Detach(observer); + } } } \ No newline at end of file