Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs =================================================================== diff -u -r614c1aa4bf54ed2852d93a58ba8d49b549d5f46c -rd515de49557312e4af41b1c051c900d39d1f9e2f --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision 614c1aa4bf54ed2852d93a58ba8d49b549d5f46c) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision d515de49557312e4af41b1c051c900d39d1f9e2f) @@ -180,28 +180,31 @@ var saturatedVolumicWeightOfCoverageLoayer = new ShiftedLognormalDistribution(2); var surfaceLine = ValidSurfaceLine(0.0, 4.0); - StochasticSoilProfile stochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) - { - SoilProfile = new TestPipingSoilProfile() - }; - StochasticSoilModel stochasticSoilModel = new StochasticSoilModel(0, "StochasticSoilModelName", "StochasticSoilModelSegmentName"); - stochasticSoilModel.StochasticSoilProfiles.Add(stochasticSoilProfile); + StochasticSoilModel stochasticSoilModel1 = ValidStochasticSoilModel(0.0, 4.0); + StochasticSoilModel stochasticSoilModel2 = ValidStochasticSoilModel(0.0, 4.0); + var stochasticSoilProfile2 = stochasticSoilModel2.StochasticSoilProfiles.First(); + stochasticSoilModel2.StochasticSoilProfiles.Add(new StochasticSoilProfile(0.0,SoilProfileType.SoilProfile1D, 1234)); + // Call new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, Enumerable.Empty(), - Enumerable.Empty(), + new[] + { + stochasticSoilModel1, + stochasticSoilModel2 + }, assessmentSectionMock), DampingFactorExit = new LognormalDistributionDesignVariable(dampingFactorExit), PhreaticLevelExit = new NormalDistributionDesignVariable(phreaticLevelExit), Diameter70 = new LognormalDistributionDesignVariable(diameter70), DarcyPermeability = new LognormalDistributionDesignVariable(darcyPermeability), SaturatedVolumicWeightOfCoverageLayer = new ShiftedLognormalDistributionDesignVariable(saturatedVolumicWeightOfCoverageLoayer), SurfaceLine = surfaceLine, - StochasticSoilModel = stochasticSoilModel, - StochasticSoilProfile = stochasticSoilProfile, + StochasticSoilModel = stochasticSoilModel2, + StochasticSoilProfile = stochasticSoilProfile2, HydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(assessmentLevel) }; @@ -236,8 +239,8 @@ inputParameters.SaturatedVolumicWeightOfCoverageLayer.GetAccuracy()); Assert.AreEqual(surfaceLine, inputParameters.SurfaceLine); - Assert.AreEqual(stochasticSoilModel, inputParameters.StochasticSoilModel); - Assert.AreEqual(stochasticSoilProfile, inputParameters.StochasticSoilProfile); + Assert.AreEqual(stochasticSoilModel2, inputParameters.StochasticSoilModel); + Assert.AreEqual(stochasticSoilProfile2, inputParameters.StochasticSoilModel.StochasticSoilProfiles.First()); mocks.VerifyAll(); } @@ -471,7 +474,7 @@ } [Test] - public void SurfaceLine_NewSurfaceLine_SoilProfileSetToNull() + public void SurfaceLine_NewSurfaceLine_StochasticSoilModelAndSoilProfileSetToNull() { // Setup var mocks = new MockRepository(); @@ -495,6 +498,7 @@ properties.SurfaceLine = ValidSurfaceLine(0, 2); // Assert + Assert.IsNull(inputParameters.StochasticSoilModel); Assert.IsNull(inputParameters.StochasticSoilProfile); } @@ -511,29 +515,36 @@ { SoilProfile = new TestPipingSoilProfile() }; + var stochasticSoilModel = new StochasticSoilModel(0, "StochasticSoilModelName", "StochasticSoilModelSegmentName"); + stochasticSoilModel.StochasticSoilProfiles.Add(stochasticSoilProfile); var inputParameters = new PipingInput(new GeneralPipingInput()) { SurfaceLine = testSurfaceLine, + StochasticSoilModel = stochasticSoilModel, StochasticSoilProfile = stochasticSoilProfile }; var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, Enumerable.Empty(), - Enumerable.Empty(), + new[] + { + stochasticSoilModel + }, assessmentSectionMock) }; // Call properties.SurfaceLine = testSurfaceLine; // Assert + Assert.AreSame(stochasticSoilModel, inputParameters.StochasticSoilModel); Assert.AreSame(stochasticSoilProfile, inputParameters.StochasticSoilProfile); } [Test] - public void SurfaceLine_DifferentSurfaceLine_SoilProfileSetToNull() + public void SurfaceLine_DifferentSurfaceLine_StochasticSoilModelAndSoilProfileSetToNull() { // Setup var mocks = new MockRepository(); @@ -544,28 +555,78 @@ { SoilProfile = new TestPipingSoilProfile() }; - + var stochasticSoilModel = new StochasticSoilModel(0, "StochasticSoilModelName", "StochasticSoilModelSegmentName"); + stochasticSoilModel.StochasticSoilProfiles.Add(testPipingSoilProfile); var inputParameters = new PipingInput(new GeneralPipingInput()) { SurfaceLine = ValidSurfaceLine(0, 2), + StochasticSoilModel = stochasticSoilModel, StochasticSoilProfile = testPipingSoilProfile }; var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, Enumerable.Empty(), - Enumerable.Empty(), + new[] + { + stochasticSoilModel + }, assessmentSectionMock) }; // Call properties.SurfaceLine = ValidSurfaceLine(0, 2); // Assert + Assert.IsNull(inputParameters.StochasticSoilModel); Assert.IsNull(inputParameters.StochasticSoilProfile); } [Test] + public void StochasticSoilProfile_DifferentStochasticSoilModel_SoilProfileSetToNull() + { + // Setup + var mocks = new MockRepository(); + var assessmentSectionMock = mocks.StrictMock(); + mocks.ReplayAll(); + + var testSurfaceLine = ValidSurfaceLine(0, 2); + var stochasticSoilProfile1 = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) + { + SoilProfile = new TestPipingSoilProfile() + }; + var stochasticSoilModel1 = new StochasticSoilModel(0, "StochasticSoilModel1Name", "StochasticSoilModelSegment1Name"); + stochasticSoilModel1.StochasticSoilProfiles.Add(stochasticSoilProfile1); + + var stochasticSoilProfile2 = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) + { + SoilProfile = new TestPipingSoilProfile() + }; + var stochasticSoilModel2 = new StochasticSoilModel(0, "StochasticSoilModel2Name", "StochasticSoilModelSegment2Name"); + stochasticSoilModel1.StochasticSoilProfiles.Add(stochasticSoilProfile2); + + var inputParameters = new PipingInput(new GeneralPipingInput()) + { + SurfaceLine = testSurfaceLine, + StochasticSoilModel = stochasticSoilModel1, + StochasticSoilProfile = stochasticSoilProfile1 + }; + var properties = new PipingInputContextProperties + { + Data = new PipingInputContext(inputParameters, + Enumerable.Empty(), + Enumerable.Empty(), + assessmentSectionMock) + }; + + // Call + properties.StochasticSoilModel = stochasticSoilModel2; + + // Assert + Assert.IsNull(inputParameters.StochasticSoilProfile); + } + + [Test] [TestCase(1)] [TestCase(2)] public void GivenCompletePipingInputContextProperties_WhenPhreaticLevelExitPropertiesSetThroughProperties_ThenPiezometricHeadExitUpdated(int propertyIndexToChange) @@ -605,6 +666,18 @@ mocks.VerifyAll(); } + private static StochasticSoilModel ValidStochasticSoilModel(double xMin, double xMax) + { + var stochasticSoilModel = new StochasticSoilModel(0, "StochasticSoilModelName", "StochasticSoilModelSegmentName"); + stochasticSoilModel.StochasticSoilProfiles.Add(new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 1234) + { + SoilProfile = new TestPipingSoilProfile() + }); + stochasticSoilModel.Geometry.Add(new Point2D(xMin, 1.0)); + stochasticSoilModel.Geometry.Add(new Point2D(xMax, 0.0)); + return stochasticSoilModel; + } + private static RingtoetsPipingSurfaceLine ValidSurfaceLine(double xMin, double xMax) { var surfaceLine = new RingtoetsPipingSurfaceLine();