using Core.Common.Base; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Piping.Data; using Ringtoets.Piping.Data.TestUtil; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Primitives; namespace Ringtoets.Piping.Forms.Test.PresentationObjects { [TestFixture] public class PipingCalculationScenarioContextTest { [Test] public void DefaultConstructor_ExpectedValues() { // Setup var surfacelines = new[] { new RingtoetsPipingSurfaceLine() }; var soilModels = new[] { new TestStochasticSoilModel() }; var calculation = new PipingCalculationScenario(new GeneralPipingInput(), new NormProbabilityPipingInput()); var mocks = new MockRepository(); var pipingFailureMechanismMock = mocks.StrictMock(); var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); // Call var presentationObject = new PipingCalculationScenarioContext(calculation, surfacelines, soilModels, pipingFailureMechanismMock, assessmentSectionMock); // Assert Assert.IsInstanceOf(presentationObject); Assert.IsInstanceOf>(presentationObject); Assert.IsInstanceOf>(presentationObject); Assert.AreSame(calculation, presentationObject.WrappedData); Assert.AreSame(surfacelines, presentationObject.AvailablePipingSurfaceLines); Assert.AreSame(soilModels, presentationObject.AvailableStochasticSoilModels); Assert.AreSame(pipingFailureMechanismMock, presentationObject.FailureMechanism); Assert.AreSame(assessmentSectionMock, presentationObject.AssessmentSection); } [Test] public void Attach_Observer_ObserverAttachedToPipingCalculation() { // Setup var mocks = new MockRepository(); var pipingFailureMechanismMock = mocks.StrictMock(); var assessmentSectionMock = mocks.StrictMock(); var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); var surfacelines = new[] { new RingtoetsPipingSurfaceLine() }; var soilModels = new[] { new TestStochasticSoilModel() }; var calculation = new PipingCalculationScenario(new GeneralPipingInput(), new NormProbabilityPipingInput()); var context = new PipingCalculationScenarioContext(calculation, surfacelines, soilModels, pipingFailureMechanismMock, assessmentSectionMock); // Call context.Attach(observer); // Assert calculation.NotifyObservers(); // Notification on wrapped object mocks.VerifyAll(); // Expected UpdateObserver call } [Test] public void Detach_Observer_ObserverDetachedFromPipingCalculation() { // Setup var mocks = new MockRepository(); var pipingFailureMechanismMock = mocks.StrictMock(); var assessmentSectionMock = mocks.StrictMock(); var observer = mocks.StrictMock(); mocks.ReplayAll(); var surfacelines = new[] { new RingtoetsPipingSurfaceLine() }; var soilModels = new[] { new TestStochasticSoilModel() }; var calculation = new PipingCalculationScenario(new GeneralPipingInput(), new NormProbabilityPipingInput()); var context = new PipingCalculationScenarioContext(calculation, surfacelines, soilModels, pipingFailureMechanismMock, assessmentSectionMock); context.Attach(observer); // Call context.Detach(observer); // Assert calculation.NotifyObservers(); // Notification on wrapped object mocks.VerifyAll(); // Expected no UpdateObserver call } [Test] public void NotifyObservers_ObserverAttachedToPipingCalculation_NotificationCorrectlyPropagated() { // Setup var mocks = new MockRepository(); var pipingFailureMechanismMock = mocks.StrictMock(); var assessmentSectionMock = mocks.StrictMock(); var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); var surfacelines = new[] { new RingtoetsPipingSurfaceLine() }; var soilModels = new[] { new TestStochasticSoilModel() }; var calculation = new PipingCalculationScenario(new GeneralPipingInput(), new NormProbabilityPipingInput()); var context = new PipingCalculationScenarioContext(calculation, surfacelines, soilModels, pipingFailureMechanismMock, assessmentSectionMock); calculation.Attach(observer); // Attach to wrapped object // Call context.NotifyObservers(); // Notification on context // Assert mocks.VerifyAll(); } } }