Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingInputContext.cs =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingInputContext.cs (.../PipingInputContext.cs) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingInputContext.cs (.../PipingInputContext.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -19,9 +19,12 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Piping.Data; +using Ringtoets.Piping.Forms.Properties; using Ringtoets.Piping.Primitives; namespace Ringtoets.Piping.Forms.PresentationObjects @@ -37,11 +40,47 @@ /// Creates a new instance of /// /// The piping input instance wrapped by this context object. + /// The piping calculation item the belongs to. /// The surface lines available within the piping context. /// The stochastic soil models available within the piping context. + /// The failure mechanism which the piping context belongs to. /// The assessment section which the piping context belongs to. - /// When any input parameter is null. - public PipingInputContext(PipingInput pipingInput, IEnumerable surfaceLines, IEnumerable stochasticSoilModels, IAssessmentSection assessmentSection) - : base(pipingInput, surfaceLines, stochasticSoilModels, assessmentSection) {} + /// When any input parameter is null. + public PipingInputContext(PipingInput pipingInput, + IPipingCalculationItem pipingCalculationItem, + IEnumerable surfaceLines, + IEnumerable stochasticSoilModels, + PipingFailureMechanism pipingFailureMechanism, + IAssessmentSection assessmentSection) + : base(pipingInput, surfaceLines, stochasticSoilModels, assessmentSection) + { + if (pipingCalculationItem == null) + { + var message = String.Format(Resources.PipingContext_AssertInputsAreNotNull_DataDescription_0_cannot_be_null, + Resources.PipingContext_DataDescription_PipingCalculationItem); + + throw new ArgumentNullException("pipingCalculationItem", message); + } + if (pipingFailureMechanism == null) + { + var message = String.Format(Resources.PipingContext_AssertInputsAreNotNull_DataDescription_0_cannot_be_null, + Resources.PipingContext_DataDescription_PipingFailureMechanism); + + throw new ArgumentNullException("pipingFailureMechanism", message); + } + + PipingCalculationItem = pipingCalculationItem; + PipingFailureMechanism = pipingFailureMechanism; + } + + /// + /// Gets the calculation item which the piping context belongs to. + /// + public IPipingCalculationItem PipingCalculationItem { get; private set; } + + /// + /// Gets the failure mechanism which the piping context belongs to. + /// + public PipingFailureMechanism PipingFailureMechanism { get; private set; } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r3cf7cee528e08dbf46d6a2c08e0fbe4416059e0c -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 3cf7cee528e08dbf46d6a2c08e0fbe4416059e0c) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -807,6 +807,15 @@ } /// + /// Looks up a localized string similar to De berekening. + /// + public static string PipingContext_DataDescription_PipingCalculationItem { + get { + return ResourceManager.GetString("PipingContext_DataDescription_PipingCalculationItem", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Het piping faalmechanisme. /// public static string PipingContext_DataDescription_PipingFailureMechanism { Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx =================================================================== diff -u -r3cf7cee528e08dbf46d6a2c08e0fbe4416059e0c -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 3cf7cee528e08dbf46d6a2c08e0fbe4416059e0c) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -745,4 +745,7 @@ Stochastisch ondergrondmodellen + + De berekening + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -171,8 +171,12 @@ { if (!ReferenceEquals(value, data.WrappedData.SurfaceLine)) { + var oldSurfaceLine = data.WrappedData.SurfaceLine; + data.WrappedData.SurfaceLine = value; PipingInputService.SetMatchingStochasticSoilModel(data.WrappedData, GetAvailableStochasticSoilModels()); + + PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine((PipingCalculationScenario)data.PipingCalculationItem, new PipingFailureMechanism(), oldSurfaceLine); data.WrappedData.NotifyObservers(); } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs =================================================================== diff -u -r1279dcba187f56c0ba96dfdb962067304e333475 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 1279dcba187f56c0ba96dfdb962067304e333475) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -830,8 +830,10 @@ { selection = new PipingInputContext( pipingCalculationRow.PipingCalculation.InputParameters, + pipingCalculationRow.PipingCalculation, pipingFailureMechanism.SurfaceLines, pipingFailureMechanism.StochasticSoilModels, + pipingFailureMechanism, assessmentSection); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -r1279dcba187f56c0ba96dfdb962067304e333475 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 1279dcba187f56c0ba96dfdb962067304e333475) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -501,8 +501,10 @@ { new CommentContext(pipingCalculationContext.WrappedData), new PipingInputContext(pipingCalculationContext.WrappedData.InputParameters, + pipingCalculationContext.WrappedData, pipingCalculationContext.AvailablePipingSurfaceLines, pipingCalculationContext.AvailableStochasticSoilModels, + pipingCalculationContext.PipingFailureMechanism, pipingCalculationContext.AssessmentSection) }; Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationScenarioService.cs =================================================================== diff -u --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationScenarioService.cs (revision 0) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationScenarioService.cs (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -0,0 +1,100 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Linq; +using Core.Common.Base.Geometry; +using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Piping.Data; +using Ringtoets.Piping.Primitives; + +namespace Ringtoets.Piping.Service +{ + /// + /// Class responsible for piping calculation scenarios in sync. + /// + public static class PipingCalculationScenarioService + { + /// + /// Sets the to the corresponding for the . + /// + /// The calculation scenario to set containing the new surface line. + /// The failure mechanism containing the . + /// The old surface line for the calculation scenario. + public static void SyncCalculationScenarioWithNewSurfaceLine(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism, RingtoetsPipingSurfaceLine oldSurfaceLine) + { + if (calculationScenario == null) + { + throw new ArgumentNullException("calculationScenario"); + } + + if (failureMechanism == null) + { + throw new ArgumentNullException("failureMechanism"); + } + + if (oldSurfaceLine == null) + { + throw new ArgumentNullException("oldSurfaceLine"); + } + + if (RemoveScenarioFromOldSectionResult(calculationScenario, failureMechanism, oldSurfaceLine)) + { + AddScenarioToNewSectionResult(calculationScenario, failureMechanism); + } + } + + private static void AddScenarioToNewSectionResult(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism) + { + foreach (var failureMechanismSectionResult in failureMechanism.SectionResults) + { + var lineSegments = Math2D.ConvertLinePointsToLineSegments(failureMechanismSectionResult.Section.Points); + + if (calculationScenario.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)) + { + failureMechanismSectionResult.CalculationScenarios.Add(calculationScenario); + break; + } + } + } + + private static bool RemoveScenarioFromOldSectionResult(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism, RingtoetsPipingSurfaceLine oldSurfaceLine) + { + for (int i = 0; i < failureMechanism.SectionResults.Count(); i++) + { + var sectionResult = failureMechanism.SectionResults.ElementAt(i); + + for (int j = 0; j < sectionResult.CalculationScenarios.Count; j++) + { + var pipingCalculation = (PipingCalculation)sectionResult.CalculationScenarios[j]; + + if (pipingCalculation.Equals(calculationScenario) && !calculationScenario.InputParameters.SurfaceLine.Equals(oldSurfaceLine)) + { + sectionResult.CalculationScenarios.Remove(calculationScenario); + return true; + } + } + } + + return false; + } + } +} Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/Ringtoets.Piping.Service.csproj =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/src/Ringtoets.Piping.Service/Ringtoets.Piping.Service.csproj (.../Ringtoets.Piping.Service.csproj) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/Ringtoets.Piping.Service.csproj (.../Ringtoets.Piping.Service.csproj) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -57,6 +57,7 @@ + Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingInputContextTest.cs =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingInputContextTest.cs (.../PipingInputContextTest.cs) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingInputContextTest.cs (.../PipingInputContextTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -40,7 +40,7 @@ public void ParameteredConstructor_ExpectedValues() { // Setup - var pipingInput = new PipingInput(new GeneralPipingInput()); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); var surfaceLines = new[] { new RingtoetsPipingSurfaceLine() @@ -51,16 +51,19 @@ }; var mocks = new MockRepository(); + var failureMechanism = new PipingFailureMechanism(); var assessmentSection = mocks.StrictMock(); mocks.ReplayAll(); // Call - var context = new PipingInputContext(pipingInput, surfaceLines, stochasticSoilModels, assessmentSection); + var context = new PipingInputContext(calculationItem.InputParameters, calculationItem, surfaceLines, stochasticSoilModels, failureMechanism, assessmentSection); // Assert Assert.IsInstanceOf>(context); - Assert.AreSame(pipingInput, context.WrappedData); + Assert.AreSame(calculationItem.InputParameters, context.WrappedData); + Assert.AreSame(calculationItem, context.PipingCalculationItem); + Assert.AreSame(failureMechanism, context.PipingFailureMechanism); Assert.AreSame(assessmentSection, context.AssessmentSection); CollectionAssert.AreEqual(surfaceLines, context.AvailablePipingSurfaceLines); CollectionAssert.AreEqual(stochasticSoilModels, context.AvailableStochasticSoilModels); @@ -72,7 +75,7 @@ public void ParameteredConstructor_AssessmentSectionIsNull_ThrowArgumentNullException() { // Setup - var input = new PipingInput(new GeneralPipingInput()); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); var surfaceLines = new[] { new RingtoetsPipingSurfaceLine() @@ -81,15 +84,71 @@ { new TestStochasticSoilModel() }; + var failureMechanism = new PipingFailureMechanism(); // Call - TestDelegate call = () => new PipingInputContext(input, surfaceLines, stochasticSoilModels, null); + TestDelegate call = () => new PipingInputContext(calculationItem.InputParameters, calculationItem, surfaceLines, stochasticSoilModels, failureMechanism, null); // Assert TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "Het traject mag niet 'null' zijn."); } [Test] + public void ParameteredConstructor_CalculationItemNull_ThrowsArgumentNullException() + { + // Setup + var calculationInput = new PipingInput(new GeneralPipingInput()); + var surfaceLines = new[] + { + new RingtoetsPipingSurfaceLine() + }; + var stochasticSoilModels = new[] + { + new TestStochasticSoilModel() + }; + var failureMechanism = new PipingFailureMechanism(); + + var mocks = new MockRepository(); + var assessmentSection = mocks.StrictMock(); + + mocks.ReplayAll(); + + // Call + TestDelegate call = () => new PipingInputContext(calculationInput, null, surfaceLines, stochasticSoilModels, failureMechanism, assessmentSection); + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "De berekening mag niet 'null' zijn."); + mocks.VerifyAll(); + } + + [Test] + public void ParameteredConstructor_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var surfaceLines = new[] + { + new RingtoetsPipingSurfaceLine() + }; + var stochasticSoilModels = new[] + { + new TestStochasticSoilModel() + }; + + var mocks = new MockRepository(); + var assessmentSection = mocks.StrictMock(); + + mocks.ReplayAll(); + + // Call + TestDelegate call = () => new PipingInputContext(calculationItem.InputParameters, calculationItem, surfaceLines, stochasticSoilModels, null, assessmentSection); + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "Het piping faalmechanisme mag niet 'null' zijn."); + mocks.VerifyAll(); + } + + [Test] public void Attach_Observer_ObserverAttachedToPipingInput() { // Setup @@ -99,17 +158,20 @@ observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); - var pipingInput = new PipingInput(new GeneralPipingInput()); - var context = new PipingInputContext(pipingInput, + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var context = new PipingInputContext(calculationItem.InputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); // Call context.Attach(observer); // Assert - pipingInput.NotifyObservers(); // Notification on wrapped object + calculationItem.InputParameters.NotifyObservers(); // Notification on wrapped object mocks.VerifyAll(); // Expected UpdateObserver call } @@ -122,10 +184,13 @@ var observer = mocks.StrictMock(); mocks.ReplayAll(); - var pipingInput = new PipingInput(new GeneralPipingInput()); - var context = new PipingInputContext(pipingInput, + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var context = new PipingInputContext(calculationItem.InputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); context.Attach(observer); @@ -134,7 +199,7 @@ context.Detach(observer); // Assert - pipingInput.NotifyObservers(); // Notification on wrapped object + calculationItem.InputParameters.NotifyObservers(); // Notification on wrapped object mocks.VerifyAll(); // Expected no UpdateObserver call } @@ -148,13 +213,16 @@ observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); - var pipingInput = new PipingInput(new GeneralPipingInput()); - var context = new PipingInputContext(pipingInput, + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var context = new PipingInputContext(calculationItem.InputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); - pipingInput.Attach(observer); // Attach to wrapped object + calculationItem.InputParameters.Attach(observer); // Attach to wrapped object // Call context.NotifyObservers(); // Notification on context Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -89,11 +89,16 @@ inputParameters.StochasticSoilModel = stochasticSoilModel; inputParameters.StochasticSoilProfile = (stochasticSoilProfile); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -134,14 +139,19 @@ projectObserver.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); inputParameters.Attach(projectObserver); var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -166,7 +176,13 @@ projectObserver.Expect(o => o.UpdateObserver()).Repeat.Times(numberProperties); mocks.ReplayAll(); - var inputParameters = new PipingInput(new GeneralPipingInput()); + var calculationItem = new PipingCalculationScenario(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + + var inputParameters = new PipingInput(new GeneralPipingInput()) + { + SurfaceLine = ValidSurfaceLine(0.0, 4.0) + }; inputParameters.Attach(projectObserver); Random random = new Random(22); @@ -190,12 +206,14 @@ new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), new[] { stochasticSoilModel1, stochasticSoilModel2 }, + failureMechanism, assessmentSectionMock), DampingFactorExit = new LognormalDistributionDesignVariable(dampingFactorExit), PhreaticLevelExit = new NormalDistributionDesignVariable(phreaticLevelExit), @@ -262,6 +280,9 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()) { SurfaceLine = surfaceLine @@ -271,8 +292,10 @@ var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock), ExitPointL = (RoundedDouble) exitPoint, EntryPointL = (RoundedDouble) entryPoint @@ -298,15 +321,20 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); inputParameters.SurfaceLine = surfaceLine; inputParameters.Attach(inputObserver); var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock), EntryPointL = (RoundedDouble) 0.5, ExitPointL = (RoundedDouble) 2 @@ -331,6 +359,9 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()) { SurfaceLine = surfaceLine @@ -339,8 +370,10 @@ var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -369,14 +402,19 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); inputParameters.SurfaceLine = surfaceLine; var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -405,6 +443,9 @@ mocks.ReplayAll(); double assessmentLevel = new Random(21).NextDouble(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()) { HydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, String.Empty, 0.0, 0.0) @@ -417,8 +458,10 @@ var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -447,14 +490,19 @@ projectObserver.Expect(o => o.UpdateObserver()).Repeat.Times(1); mocks.ReplayAll(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); inputParameters.Attach(projectObserver); var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -481,12 +529,20 @@ var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); - var inputParameters = new PipingInput(new GeneralPipingInput()); + var calculationItem = new PipingCalculationScenario(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + + var inputParameters = new PipingInput(new GeneralPipingInput()) + { + SurfaceLine = ValidSurfaceLine(0.0, 4.0) + }; var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; inputParameters.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) @@ -518,6 +574,9 @@ var stochasticSoilModel = new StochasticSoilModel(0, "StochasticSoilModelName", "StochasticSoilModelSegmentName"); stochasticSoilModel.StochasticSoilProfiles.Add(stochasticSoilProfile); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()) { SurfaceLine = testSurfaceLine, @@ -527,11 +586,13 @@ var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), new[] { stochasticSoilModel }, + failureMechanism, assessmentSectionMock) }; @@ -563,14 +624,19 @@ StochasticSoilModel = stochasticSoilModel, StochasticSoilProfile = testPipingSoilProfile }; + var calculationItem = new PipingCalculationScenario(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), new[] { stochasticSoilModel }, + failureMechanism, assessmentSectionMock) }; @@ -611,11 +677,16 @@ StochasticSoilModel = stochasticSoilModel1, StochasticSoilProfile = stochasticSoilProfile1 }; + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; @@ -636,12 +707,17 @@ var typeDescriptorContextMock = mocks.StrictMock(); var assessmentSectionMock = mocks.StrictMock(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); var contextProperties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock) }; inputParameters.HydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, string.Empty, 0, 0) Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingInputContextTreeNodeInfoTest.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingInputContextTreeNodeInfoTest.cs (.../PipingInputContextTreeNodeInfoTest.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingInputContextTreeNodeInfoTest.cs (.../PipingInputContextTreeNodeInfoTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -5,7 +5,6 @@ using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; -using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; @@ -56,7 +55,13 @@ { // Setup var assessmentSection = mocks.StrictMock(); - var pipingInputContext = mocks.StrictMock(new PipingInput(new GeneralPipingInput()), Enumerable.Empty(), Enumerable.Empty(), assessmentSection); + var pipingInputContext = new PipingInputContext( + new PipingInput(new GeneralPipingInput()), + new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()), + Enumerable.Empty(), + Enumerable.Empty(), + new PipingFailureMechanism(), + assessmentSection); mocks.ReplayAll(); @@ -74,7 +79,13 @@ { // Setup var assessmentSection = mocks.StrictMock(); - var pipingInputContext = mocks.StrictMock(new PipingInput(new GeneralPipingInput()), Enumerable.Empty(), Enumerable.Empty(), assessmentSection); + var pipingInputContext = new PipingInputContext( + new PipingInput(new GeneralPipingInput()), + new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()), + Enumerable.Empty(), + Enumerable.Empty(), + new PipingFailureMechanism(), + assessmentSection); mocks.ReplayAll(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TypeConverters/LognormalDistributionDesignVariableTypeConverterTest.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TypeConverters/LognormalDistributionDesignVariableTypeConverterTest.cs (.../LognormalDistributionDesignVariableTypeConverterTest.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TypeConverters/LognormalDistributionDesignVariableTypeConverterTest.cs (.../LognormalDistributionDesignVariableTypeConverterTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -198,10 +198,15 @@ var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); var inputParametersContext = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); var inputParameterContextProperties = new PipingInputContextProperties Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TypeConverters/NormalDistributionDesignVariableTypeConverterTest.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TypeConverters/NormalDistributionDesignVariableTypeConverterTest.cs (.../NormalDistributionDesignVariableTypeConverterTest.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TypeConverters/NormalDistributionDesignVariableTypeConverterTest.cs (.../NormalDistributionDesignVariableTypeConverterTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -197,10 +197,15 @@ var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var inputParameters = new PipingInput(new GeneralPipingInput()); var inputParametersContext = new PipingInputContext(inputParameters, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); var inputParameterContextProperties = new PipingInputContextProperties { Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextHydraulicBoundaryLocationEditorTest.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextHydraulicBoundaryLocationEditorTest.cs (.../PipingInputContextHydraulicBoundaryLocationEditorTest.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextHydraulicBoundaryLocationEditorTest.cs (.../PipingInputContextHydraulicBoundaryLocationEditorTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -36,13 +36,18 @@ var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); hydraulicBoundaryDatabase.Locations.Add(hydraulicBoundaryLocation); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { HydraulicBoundaryLocation = new TestHydraulicBoundaryLocation() }; var pipingInputContext = new PipingInputContext(pipingInput, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties @@ -84,14 +89,19 @@ .Repeat.AtLeastOnce(); var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { HydraulicBoundaryLocation = hydraulicBoundaryLocation }; hydraulicBoundaryDatabase.Locations.Add(hydraulicBoundaryLocation); var inputParametersContext = new PipingInputContext(pipingInput, + calculationItem, Enumerable.Empty(), Enumerable.Empty(), + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextStochasticSoilModelSelectionEditorTest.cs =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextStochasticSoilModelSelectionEditorTest.cs (.../PipingInputContextStochasticSoilModelSelectionEditorTest.cs) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextStochasticSoilModelSelectionEditorTest.cs (.../PipingInputContextStochasticSoilModelSelectionEditorTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -51,16 +51,21 @@ var context = mockRepository.DynamicMock(); var assessmentSectionMock = mockRepository.StrictMock(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { StochasticSoilModel = new StochasticSoilModel(0, "StochasticSoilModelName", "StochasticSoilModelSegmentName") }; var pipingInputContext = new PipingInputContext(pipingInput, + calculationItem, Enumerable.Empty(), new[] { new TestStochasticSoilModel() }, + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties @@ -120,18 +125,23 @@ new Point3D(2, 3, 0) }); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { SurfaceLine = surfaceLine, StochasticSoilModel = stochasticSoilModel, StochasticSoilProfile = stochasticSoilProfile }; var inputParametersContext = new PipingInputContext(pipingInput, + calculationItem, Enumerable.Empty(), new[] { stochasticSoilModel }, + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextStochasticSoilProfileSelectionEditorTest.cs =================================================================== diff -u -rcda9bb0707f49cfb8e685d3ec04da01240c73f26 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextStochasticSoilProfileSelectionEditorTest.cs (.../PipingInputContextStochasticSoilProfileSelectionEditorTest.cs) (revision cda9bb0707f49cfb8e685d3ec04da01240c73f26) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextStochasticSoilProfileSelectionEditorTest.cs (.../PipingInputContextStochasticSoilProfileSelectionEditorTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -51,6 +51,9 @@ var context = mockRepository.DynamicMock(); var assessmentSectionMock = mockRepository.StrictMock(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { StochasticSoilProfile = new StochasticSoilProfile(1.0, SoilProfileType.SoilProfile1D, 2) @@ -59,11 +62,13 @@ } }; var pipingInputContext = new PipingInputContext(pipingInput, + calculationItem, Enumerable.Empty(), new[] { new TestStochasticSoilModel() }, + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties @@ -123,18 +128,23 @@ new Point3D(2, 3, 0) }); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { SurfaceLine = surfaceLine, StochasticSoilModel = stochasticSoilModel, StochasticSoilProfile = stochasticSoilProfile }; var inputParametersContext = new PipingInputContext(pipingInput, + calculationItem, Enumerable.Empty(), new[] { stochasticSoilModel }, + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextSurfaceLineSelectionEditorTest.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextSurfaceLineSelectionEditorTest.cs (.../PipingInputContextSurfaceLineSelectionEditorTest.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/UITypeEditors/PipingInputContextSurfaceLineSelectionEditorTest.cs (.../PipingInputContextSurfaceLineSelectionEditorTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -29,16 +29,21 @@ var context = mockRepository.DynamicMock(); var assessmentSectionMock = mockRepository.StrictMock(); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { SurfaceLine = ValidSurfaceLine() }; var inputParametersContext = new PipingInputContext(pipingInput, + calculationItem, new[] { new RingtoetsPipingSurfaceLine() }, Enumerable.Empty(), + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties @@ -81,16 +86,21 @@ new Point3D(0.0, 0.0, 0.0), new Point3D(1.0, 0.0, 1.0) }); + var calculationItem = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = new PipingFailureMechanism(); + var pipingInput = new PipingInput(new GeneralPipingInput()) { SurfaceLine = surfaceLine }; var inputParametersContext = new PipingInputContext(pipingInput, + calculationItem, new[] { surfaceLine }, Enumerable.Empty(), + failureMechanism, assessmentSectionMock); var properties = new PipingInputContextProperties Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingCalculationsViewTest.cs =================================================================== diff -u -r1279dcba187f56c0ba96dfdb962067304e333475 -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingCalculationsViewTest.cs (.../PipingCalculationsViewTest.cs) (revision 1279dcba187f56c0ba96dfdb962067304e333475) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingCalculationsViewTest.cs (.../PipingCalculationsViewTest.cs) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -339,14 +339,17 @@ { // Setup var pipingCalculationsView = ShowFullyConfiguredPipingCalculationsView(); - var secondPipingInputItem = ((PipingCalculation) ((PipingCalculationGroup) pipingCalculationsView.Data).Children[1]).InputParameters; + var secondPipingCalculationItem = ((PipingCalculation) ((PipingCalculationGroup) pipingCalculationsView.Data).Children[1]); + var secondPipingInputItem = secondPipingCalculationItem.InputParameters; var mocks = new MockRepository(); var applicationSelectionMock = mocks.StrictMock(); applicationSelectionMock.Stub(asm => asm.Selection).Return(null); applicationSelectionMock.Expect(asm => asm.Selection = new PipingInputContext(secondPipingInputItem, + secondPipingCalculationItem, pipingCalculationsView.PipingFailureMechanism.SurfaceLines, pipingCalculationsView.PipingFailureMechanism.StochasticSoilModels, + pipingCalculationsView.PipingFailureMechanism, pipingCalculationsView.AssessmentSection)); mocks.ReplayAll(); @@ -369,12 +372,15 @@ var mocks = new MockRepository(); var applicationSelectionMock = mocks.StrictMock(); var pipingCalculationsView = ShowFullyConfiguredPipingCalculationsView(); - var secondPipingInputItem = ((PipingCalculation) ((PipingCalculationGroup) pipingCalculationsView.Data).Children[1]).InputParameters; + var secondPipingCalculationItem = ((PipingCalculation)((PipingCalculationGroup)pipingCalculationsView.Data).Children[1]); + var secondPipingInputItem = secondPipingCalculationItem.InputParameters; applicationSelectionMock.Stub(asm => asm.Selection) .Return(new PipingInputContext(secondPipingInputItem, + secondPipingCalculationItem, pipingCalculationsView.PipingFailureMechanism.SurfaceLines, pipingCalculationsView.PipingFailureMechanism.StochasticSoilModels, + pipingCalculationsView.PipingFailureMechanism, pipingCalculationsView.AssessmentSection)); mocks.ReplayAll(); @@ -398,12 +404,15 @@ var mocks = new MockRepository(); var applicationSelectionMock = mocks.StrictMock(); var pipingCalculationsView = ShowFullyConfiguredPipingCalculationsView(); - var secondPipingInputItem = ((PipingCalculation) ((PipingCalculationGroup) pipingCalculationsView.Data).Children[1]).InputParameters; + var secondPipingCalculationItem = ((PipingCalculation)((PipingCalculationGroup)pipingCalculationsView.Data).Children[1]); + var secondPipingInputItem = secondPipingCalculationItem.InputParameters; applicationSelectionMock.Stub(asm => asm.Selection).Return(null); applicationSelectionMock.Expect(asm => asm.Selection = new PipingInputContext(secondPipingInputItem, + secondPipingCalculationItem, pipingCalculationsView.PipingFailureMechanism.SurfaceLines, pipingCalculationsView.PipingFailureMechanism.StochasticSoilModels, + pipingCalculationsView.PipingFailureMechanism, pipingCalculationsView.AssessmentSection)); mocks.ReplayAll(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationScenarioServiceTest.cs =================================================================== diff -u --- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationScenarioServiceTest.cs (revision 0) +++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationScenarioServiceTest.cs (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -0,0 +1,204 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Linq; +using Core.Common.Base.Geometry; +using NUnit.Framework; +using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Piping.Data; +using Ringtoets.Piping.Data.TestUtil; +using Ringtoets.Piping.Forms; +using Ringtoets.Piping.Primitives; + +namespace Ringtoets.Piping.Service.Test +{ + [TestFixture] + public class PipingCalculationScenarioServiceTest + { + [Test] + public void SyncCalculationScenarioWithNewSurfaceLine_CalculationScenarioNull_ThrowsArgumentNullException() + { + // Setup + var failureMechanism = GetFailureMechanism(); + + // Call + TestDelegate test = () => PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine(null, failureMechanism, new RingtoetsPipingSurfaceLine()); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("calculationScenario", exception.ParamName); + } + + [Test] + public void SyncCalculationScenarioWithNewSurfaceLine_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var pipingCalculationScenario = new PipingCalculationScenario(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var surfaceLine = new RingtoetsPipingSurfaceLine(); + + // Call + TestDelegate call = () => PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine(pipingCalculationScenario, null, surfaceLine); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + } + + [Test] + public void SyncCalculationScenarioWithNewSurfaceLine_SurfaceLineNull_ThrowsArgumentNullException() + { + // Setup + var pipingCalculationScenario = new PipingCalculationScenario(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var failureMechanism = GetFailureMechanism(); + + // Call + TestDelegate call = () => PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine(pipingCalculationScenario, failureMechanism, null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("oldSurfaceLine", exception.ParamName); + } + + [Test] + public void SyncCalculationScenarioWithNewSurfaceLine_NewSurfaceLineSameAsOld_SectionResultsNotUpdated() + { + // Setup + var failureMechanism = GetFailureMechanism(); + var calculationGroup = failureMechanism.CalculationsGroup.Children.First() as PipingCalculationGroup; + var calculationToSync = calculationGroup.Children.First() as PipingCalculationScenario; + + // Precondition + Assert.IsNotNull(calculationToSync); + + var expectedSectionResultScenarios = failureMechanism.SectionResults.First().CalculationScenarios.ToList(); + + // Call + PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine(calculationToSync, failureMechanism, calculationToSync.InputParameters.SurfaceLine); + + // Assert + CollectionAssert.AreEqual(expectedSectionResultScenarios, failureMechanism.SectionResults.First().CalculationScenarios); + } + + [Test] + public void SyncCalculationScenarioWithNewSurfaceLine_NewSurfaceLine_SectionResultsUpdated() + { + // Setup + var failureMechanism = GetFailureMechanism(); + var newSurfaceLine = failureMechanism.SurfaceLines.ElementAt(1); + + var calculationGroup = failureMechanism.CalculationsGroup.Children.First() as PipingCalculationGroup; + var calculationToSync = calculationGroup.Children.First() as PipingCalculationScenario; + + // Precondition + Assert.IsNotNull(calculationToSync); + + var oldSurfaceLine = calculationToSync.InputParameters.SurfaceLine; + calculationToSync.InputParameters.SurfaceLine = newSurfaceLine; + + var sectionResultScenariosBeforeSync = failureMechanism.SectionResults.First().CalculationScenarios.ToList(); + var sectionResultScenariosBeforeSync2 = failureMechanism.SectionResults.ElementAt(1).CalculationScenarios.ToList(); + + // Call + PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine(calculationToSync, failureMechanism, oldSurfaceLine); + + // Assert + CollectionAssert.AreNotEqual(sectionResultScenariosBeforeSync, failureMechanism.SectionResults.First().CalculationScenarios); + CollectionAssert.AreNotEqual(sectionResultScenariosBeforeSync2, failureMechanism.SectionResults.ElementAt(1).CalculationScenarios); + } + + private static PipingFailureMechanism GetFailureMechanism() + { + var surfaceLine1 = new RingtoetsPipingSurfaceLine + { + Name = "Surface line 1", + ReferenceLineIntersectionWorldPoint = new Point2D(0.0, 0.0) + }; + + surfaceLine1.SetGeometry(new[] + { + new Point3D(0.0, 5.0, 0.0), + new Point3D(0.0, 0.0, 1.0), + new Point3D(0.0, -5.0, 0.0) + }); + + var surfaceLine2 = new RingtoetsPipingSurfaceLine + { + Name = "Surface line 2", + ReferenceLineIntersectionWorldPoint = new Point2D(10.0, 0.0) + }; + + surfaceLine2.SetGeometry(new[] + { + new Point3D(10.0, 10.0, 0.0), + new Point3D(10.0, 0.0, 5.0), + new Point3D(10.0, -10.0, 0.0) + }); + + var failureMechanism = new PipingFailureMechanism + { + SurfaceLines = + { + surfaceLine1, + surfaceLine2 + }, + StochasticSoilModels = + { + new TestStochasticSoilModel + { + Geometry = + { + new Point2D(0.0, 0.0), new Point2D(5.0, 0.0) + }, + } + } + }; + + failureMechanism.AddSection(new FailureMechanismSection("Section 1", new List + { + new Point2D(0.0, 0.0), + new Point2D(5.0, 0.0) + })); + + failureMechanism.AddSection(new FailureMechanismSection("Section 2", new List + { + new Point2D(5.0, 0.0), + new Point2D(10.0, 0.0) + })); + + var calculationsStructure = PipingCalculationConfigurationHelper.GenerateCalculationsStructure( + failureMechanism.SurfaceLines, + failureMechanism.StochasticSoilModels, + failureMechanism.GeneralInput, + failureMechanism.SemiProbabilisticInput); + + foreach (var item in calculationsStructure) + { + failureMechanism.CalculationsGroup.Children.Add(item); + } + + failureMechanism.CalculationsGroup.AddCalculationScenariosToFailureMechanismSectionResult(failureMechanism); + + return failureMechanism; + } + } +} \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/Ringtoets.Piping.Service.Test.csproj =================================================================== diff -u -rd515de49557312e4af41b1c051c900d39d1f9e2f -r52fb2dd367bdca54564201857ed6e0b3cc244693 --- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/Ringtoets.Piping.Service.Test.csproj (.../Ringtoets.Piping.Service.Test.csproj) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/Ringtoets.Piping.Service.Test.csproj (.../Ringtoets.Piping.Service.Test.csproj) (revision 52fb2dd367bdca54564201857ed6e0b3cc244693) @@ -59,6 +59,7 @@ + @@ -82,6 +83,10 @@ {70F8CC9C-5BC8-4FB2-B201-EAE7FA8088C2} Ringtoets.HydraRing.Data + + {7CD038E1-E111-4969-ACED-22C5BD2974E1} + Ringtoets.Piping.Forms + {97F6406A-6338-4863-92A6-0D5C00A5F7C9} Ringtoets.Piping.InputParameterCalculation