Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingInputTest.cs =================================================================== diff -u -r6a19166f5818e07d3430442efc50b8dfabb92e1b -r04e39e2be6e56f40de8ca5ade95a2e9c0c736c85 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingInputTest.cs (.../DerivedPipingInputTest.cs) (revision 6a19166f5818e07d3430442efc50b8dfabb92e1b) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingInputTest.cs (.../DerivedPipingInputTest.cs) (revision 04e39e2be6e56f40de8ca5ade95a2e9c0c736c85) @@ -101,159 +101,183 @@ } [Test] - public void ThicknessAquiferLayer_SoilProfileSingleAquiferAndCoverageUnderSurfaceLine_ReturnsMeanExpectedThicknessAquiferLayer() + public void EffectiveThicknessCoverageLayer_SoilProfileSingleAquiferAndCoverageUnderSurfaceLine_ReturnsThicknessCoverageLayer() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); var derivedInput = new DerivedPipingInput(input); // Call - var thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + var effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - Assert.AreEqual(1.0, thicknessAquiferLayer.Mean.Value); + Assert.AreEqual(2.0, effectiveThicknessCoverageLayer.Mean.Value); } [Test] - public void ThicknessCoverageLayer_SoilProfileSingleAquiferAndCoverageUnderSurfaceLine_ReturnsThicknessCoverageLayer() + public void EffectiveThicknessCoverageLayer_InputWithoutSurfaceLine_MeansSetToNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.SurfaceLine = null; var derivedInput = new DerivedPipingInput(input); // Call - var thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; + LogNormalDistribution effectiveThicknessCoverageLayer = null; + Action call = () => effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - Assert.AreEqual(2.0, thicknessCoverageLayer.Mean.Value); + TestHelper.AssertLogMessagesCount(call, 0); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_InputWithoutSoilProfile_ReturnMeanNaN() + [TestCase(1e-6)] + [TestCase(1)] + public void EffectiveThicknessCoverageLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) { // Setup - PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.StochasticSoilProfile = null; + PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); var derivedInput = new DerivedPipingInput(input); // Call - var thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + LogNormalDistribution effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test] - public void ThicknessCoverageLayer_InputWithoutSoilProfile_MeansSetToNaN() + public void EffectiveThicknessCoverageLayer_MeanSetSoilProfileSetToNull_ThicknessCoverageLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.StochasticSoilProfile = null; + input.ThicknessCoverageLayer.Mean = new RoundedDouble(2, new Random(21).NextDouble() + 1); var derivedInput = new DerivedPipingInput(input); + input.StochasticSoilProfile = null; + // Call - var thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; + LogNormalDistribution effectiveThicknessCoverageLayer = null; + Action call = () => effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + TestHelper.AssertLogMessagesCount(call, 0); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_InputWithoutSurfaceLine_ReturnMeanNaN() + public void EffectiveThicknessCoverageLayer_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.SurfaceLine = null; var derivedInput = new DerivedPipingInput(input); + input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) + { + SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] + { + new PipingSoilLayer(2.0) + { + IsAquifer = false + } + }, SoilProfileType.SoilProfile1D, 0) + }; // Call - LogNormalDistribution thicknessAquiferLayer = null; - Action call = () => thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + LogNormalDistribution effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - TestHelper.AssertLogMessagesCount(call, 0); - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test] - public void ThicknessCoverageLayer_InputWithoutSurfaceLine_MeansSetToNaN() + public void EffectiveThicknessCoverageLayer_InputResultsInZeroCoverageThickness_ThicknessCoverageLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.SurfaceLine = null; var derivedInput = new DerivedPipingInput(input); + input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) + { + SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] + { + new PipingSoilLayer(2.0) + { + IsAquifer = false + }, + new PipingSoilLayer(2.0) + { + IsAquifer = true + } + }, SoilProfileType.SoilProfile1D, 0) + }; // Call - LogNormalDistribution thicknessCoverageLayer = null; - Action call = () => thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; + LogNormalDistribution effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - TestHelper.AssertLogMessagesCount(call, 0); - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test] - [TestCase(1e-6)] - [TestCase(1)] - public void ThicknessCoverageLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) + public void EffectiveThicknessCoverageLayer_InputWithoutSoilProfile_MeansSetToNaN() { // Setup - PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.StochasticSoilProfile = null; var derivedInput = new DerivedPipingInput(input); // Call - LogNormalDistribution thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; + var effectiveThicknessCoverageLayer = derivedInput.EffectiveThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test] - [TestCase(1e-6)] - [TestCase(1)] - public void ThicknessAquiferLayer_SoilProfileSingleAquiferAboveSurfaceLine_ReturnMeanNaN(double deltaAboveSurfaceLine) + public void ThicknessCoverageLayer_SoilProfileSingleAquiferAndCoverageUnderSurfaceLine_ReturnsThicknessCoverageLayer() { // Setup - PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); var derivedInput = new DerivedPipingInput(input); // Call - LogNormalDistribution thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + var thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.AreEqual(2.0, thicknessCoverageLayer.Mean.Value); } [Test] - public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopmostConsecutiveAquiferLayerThickness() + public void ThicknessCoverageLayer_InputWithoutSurfaceLine_MeansSetToNaN() { // Setup - double expectedThickness; - PipingInput input = PipingInputFactory.CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.SurfaceLine = null; var derivedInput = new DerivedPipingInput(input); // Call - LogNormalDistribution thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = null; + Action call = () => thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; // Assert - Assert.AreEqual(expectedThickness, thicknessAquiferLayer.Mean, 1e-6); + TestHelper.AssertLogMessagesCount(call, 0); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_MeanSetExitPointSetToNaN_ReturnMeanNaN() + [TestCase(1e-6)] + [TestCase(1)] + public void ThicknessCoverageLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) { // Setup - PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.ExitPointL = RoundedDouble.NaN; + PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); var derivedInput = new DerivedPipingInput(input); // Call - LogNormalDistribution thicknessAquiferLayer = null; - Action call = () => thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; // Assert - TestHelper.AssertLogMessagesCount(call, 0); - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] @@ -300,7 +324,7 @@ } [Test] - public void ThicknessAquiferLayer_ProfileWithoutAquiferLayer_ReturnMeanNaN() + public void ThicknessCoverageLayer_InputResultsInZeroCoverageThickness_ThicknessCoverageLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); @@ -312,40 +336,58 @@ new PipingSoilLayer(2.0) { IsAquifer = false + }, + new PipingSoilLayer(2.0) + { + IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; // Call - LogNormalDistribution thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_SoilProfileSingleAquiferUnderSurfaceLine_ReturnMeanExpectedThicknessAquiferLayer() + public void ThicknessCoverageLayer_InputWithoutSoilProfile_MeansSetToNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.StochasticSoilProfile = null; var derivedInput = new DerivedPipingInput(input); // Call + var thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; + + // Assert + Assert.IsNaN(thicknessCoverageLayer.Mean); + } + + [Test] + public void ThicknessAquiferLayer_SoilProfileSingleAquiferAndCoverageUnderSurfaceLine_ReturnsMeanExpectedThicknessAquiferLayer() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + var derivedInput = new DerivedPipingInput(input); + + // Call var thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; // Assert Assert.AreEqual(1.0, thicknessAquiferLayer.Mean.Value); } [Test] - public void ThicknessAquiferLayer_MeanSetSoilProfileSetToNull_ReturnMeanNaN() + public void ThicknessAquiferLayer_InputWithoutSoilProfile_ReturnMeanNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.StochasticSoilProfile = null; var derivedInput = new DerivedPipingInput(input); - input.StochasticSoilProfile = null; - // Call var thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; @@ -354,22 +396,83 @@ } [Test] - public void ThicknessAquiferLayer_InputResultsInZeroAquiferThickness_ReturnMeanNaN() + public void ThicknessAquiferLayer_InputWithoutSurfaceLine_ReturnMeanNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.SurfaceLine = null; var derivedInput = new DerivedPipingInput(input); + + // Call + LogNormalDistribution thicknessAquiferLayer = null; + Action call = () => thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.IsNaN(thicknessAquiferLayer.Mean); + } + + [Test] + [TestCase(1e-6)] + [TestCase(1)] + public void ThicknessAquiferLayer_SoilProfileSingleAquiferAboveSurfaceLine_ReturnMeanNaN(double deltaAboveSurfaceLine) + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + var derivedInput = new DerivedPipingInput(input); + + // Call + LogNormalDistribution thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + + // Assert + Assert.IsNaN(thicknessAquiferLayer.Mean); + } + + [Test] + public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopmostConsecutiveAquiferLayerThickness() + { + // Setup + double expectedThickness; + PipingInput input = PipingInputFactory.CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); + var derivedInput = new DerivedPipingInput(input); + + // Call + LogNormalDistribution thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + + // Assert + Assert.AreEqual(expectedThickness, thicknessAquiferLayer.Mean, 1e-6); + } + + [Test] + public void ThicknessAquiferLayer_MeanSetExitPointSetToNaN_ReturnMeanNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.ExitPointL = RoundedDouble.NaN; + var derivedInput = new DerivedPipingInput(input); + + // Call + LogNormalDistribution thicknessAquiferLayer = null; + Action call = () => thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.IsNaN(thicknessAquiferLayer.Mean); + } + + [Test] + public void ThicknessAquiferLayer_ProfileWithoutAquiferLayer_ReturnMeanNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + var derivedInput = new DerivedPipingInput(input); input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) { SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] { new PipingSoilLayer(2.0) { IsAquifer = false - }, - new PipingSoilLayer(0.0) - { - IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; @@ -382,11 +485,41 @@ } [Test] - public void ThicknessCoverageLayer_InputResultsInZeroCoverageThickness_ThicknessCoverageLayerNaN() + public void ThicknessAquiferLayer_SoilProfileSingleAquiferUnderSurfaceLine_ReturnMeanExpectedThicknessAquiferLayer() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); var derivedInput = new DerivedPipingInput(input); + + // Call + var thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + + // Assert + Assert.AreEqual(1.0, thicknessAquiferLayer.Mean.Value); + } + + [Test] + public void ThicknessAquiferLayer_MeanSetSoilProfileSetToNull_ReturnMeanNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + var derivedInput = new DerivedPipingInput(input); + + input.StochasticSoilProfile = null; + + // Call + var thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; + + // Assert + Assert.IsNaN(thicknessAquiferLayer.Mean); + } + + [Test] + public void ThicknessAquiferLayer_InputResultsInZeroAquiferThickness_ReturnMeanNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + var derivedInput = new DerivedPipingInput(input); input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) { SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] @@ -395,18 +528,18 @@ { IsAquifer = false }, - new PipingSoilLayer(2.0) + new PipingSoilLayer(0.0) { IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; // Call - LogNormalDistribution thicknessCoverageLayer = derivedInput.ThicknessCoverageLayer; + LogNormalDistribution thicknessAquiferLayer = derivedInput.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(thicknessAquiferLayer.Mean); } [Test]