Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs =================================================================== diff -u -r0981b22c56801334d3f71343f1a861070a404e3e -r9d781268ca54cba6a02715876d34a775396407b5 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 0981b22c56801334d3f71343f1a861070a404e3e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 9d781268ca54cba6a02715876d34a775396407b5) @@ -73,6 +73,12 @@ StandardDeviation = (RoundedDouble) 0.5 }; + var effectiveThicknessCoverageLayer = new LogNormalDistribution(2) + { + Mean = RoundedDouble.NaN, + StandardDeviation = (RoundedDouble) 0.5 + }; + var saturatedVolumicWeightOfCoverageLayer = new LogNormalDistribution(2) { Mean = RoundedDouble.NaN, @@ -123,6 +129,7 @@ Assert.AreEqual(generalInputParameters.MeanDiameter70, inputParameters.MeanDiameter70); DistributionAssert.AreEqual(thicknessCoverageLayer, inputParameters.ThicknessCoverageLayer); + DistributionAssert.AreEqual(effectiveThicknessCoverageLayer, inputParameters.EffectiveThicknessCoverageLayer); DistributionAssert.AreEqual(saturatedVolumicWeightOfCoverageLayer, inputParameters.SaturatedVolumicWeightOfCoverageLayer); Assert.AreEqual(2, inputParameters.SaturatedVolumicWeightOfCoverageLayer.Shift.NumberOfDecimalPlaces); @@ -533,25 +540,26 @@ } [Test] - public void ThicknessCoverageLayer_InputWithoutSoilProfile_MeansSetToNaN() + public void ThicknessAquiferLayer_InputWithoutSurfaceLine_MeansSetToNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.StochasticSoilProfile = null; + input.SurfaceLine = null; // Call - LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; + LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(thicknessAquiferLayer.Mean); } [Test] - public void ThicknessAquiferLayer_InputWithoutSurfaceLine_MeansSetToNaN() + [TestCase(1e-6)] + [TestCase(1)] + public void ThicknessAquiferLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) { // Setup - PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.SurfaceLine = null; + PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); // Call LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; @@ -561,41 +569,48 @@ } [Test] - public void ThicknessCoverageLayer_InputWithoutSurfaceLine_MeansSetToNaN() + public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_AquiferMeanSetToConsecutiveAquiferLayerThickness() { // Setup - PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.SurfaceLine = null; + double expectedThickness; + PipingInput input = PipingInputFactory.CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); // Call - LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; + LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.AreEqual(expectedThickness, thicknessAquiferLayer.Mean, 1e-6); } [Test] - [TestCase(1e-6)] - [TestCase(1)] - public void ThicknessCoverageLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) + public void ThicknessAquiferLayer_MeanSetExitPointSetToNaN_ThicknessAquiferLayerNaN() { // Setup - PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.ExitPointL = RoundedDouble.NaN; // Call - LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; + LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(thicknessAquiferLayer.Mean); } [Test] - [TestCase(1e-6)] - [TestCase(1)] - public void ThicknessAquiferLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) + public void ThicknessAquiferLayer_ProfileWithoutAquiferLayer_ThicknessAquiferLayerNaN() { // Setup - PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + 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 = input.ThicknessAquiferLayer; @@ -605,51 +620,49 @@ } [Test] - public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_AquiferMeanSetToConsecutiveAquiferLayerThickness() + public void ThicknessAquiferLayer_SoilProfileSingleAquiferUnderSurfaceLine_ThicknessAquiferLayerMeanSet() { // Setup - double expectedThickness; - PipingInput input = PipingInputFactory.CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); // Call LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.AreEqual(expectedThickness, thicknessAquiferLayer.Mean, 1e-6); + Assert.AreEqual(1.0, thicknessAquiferLayer.Mean.Value); } [Test] - public void ThicknessAquiferLayer_MeanSetExitPointSetToNaN_ThicknessAquiferLayerNaN() + public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToConsecutiveAquiferLayerThickness() { // Setup - PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.ExitPointL = RoundedDouble.NaN; + double expectedThickness; + PipingInput input = PipingInputFactory.CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); // Call LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.AreEqual(expectedThickness, thicknessAquiferLayer.Mean, 1e-6); } [Test] - public void ThicknessCoverageLayer_MeanSetSoilProfileSetToNull_ThicknessCoverageLayerNaN() + public void ThicknessAquiferLayer_MeanSetSoilProfileSetToNull_ThicknessAquiferLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); - input.ThicknessCoverageLayer.Mean = new RoundedDouble(2, new Random(21).NextDouble() + 1); input.StochasticSoilProfile = null; // Call - LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; + LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(thicknessAquiferLayer.Mean); } [Test] - public void ThicknessCoverageLayer_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaN() + public void ThicknessAquiferLayer_InputResultsInZeroAquiferThickness_ThicknessAquiferLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); @@ -660,29 +673,37 @@ new PipingSoilLayer(2.0) { IsAquifer = false + }, + new PipingSoilLayer(0.0) + { + IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; // Call - LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; + LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessCoverageLayer.Mean); + Assert.IsNaN(thicknessAquiferLayer.Mean); } [Test] - public void ThicknessAquiferLayer_ProfileWithoutAquiferLayer_ThicknessAquiferLayerNaN() + public void ThicknessAquiferLayer_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) { SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] { - new PipingSoilLayer(2.0) + new PipingSoilLayer(2.5) { - IsAquifer = false + IsAquifer = true + }, + new PipingSoilLayer(1.5) + { + IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; @@ -691,53 +712,70 @@ LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.AreEqual(2.0, thicknessAquiferLayer.Mean.Value, 1e-6); } [Test] - public void ThicknessAquiferLayer_SoilProfileSingleAquiferUnderSurfaceLine_ThicknessAquiferLayerMeanSet() + public void ThicknessCoverageLayer_InputWithoutSoilProfile_MeansSetToNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.StochasticSoilProfile = null; // Call - LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; // Assert - Assert.AreEqual(1.0, thicknessAquiferLayer.Mean.Value); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToConsecutiveAquiferLayerThickness() + public void ThicknessCoverageLayer_InputWithoutSurfaceLine_MeansSetToNaN() { // Setup - double expectedThickness; - PipingInput input = PipingInputFactory.CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.SurfaceLine = null; // Call - LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; // Assert - Assert.AreEqual(expectedThickness, thicknessAquiferLayer.Mean, 1e-6); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_MeanSetSoilProfileSetToNull_ThicknessAquiferLayerNaN() + [TestCase(1e-6)] + [TestCase(1)] + public void ThicknessCoverageLayer_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) { // Setup + PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + + // Call + LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; + + // Assert + Assert.IsNaN(thicknessCoverageLayer.Mean); + } + + [Test] + public void ThicknessCoverageLayer_MeanSetSoilProfileSetToNull_ThicknessCoverageLayerNaN() + { + // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.ThicknessCoverageLayer.Mean = new RoundedDouble(2, new Random(21).NextDouble() + 1); input.StochasticSoilProfile = null; // Call - LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] - public void ThicknessAquiferLayer_InputResultsInZeroAquiferThickness_ThicknessAquiferLayerNaN() + public void ThicknessCoverageLayer_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); @@ -748,19 +786,15 @@ new PipingSoilLayer(2.0) { IsAquifer = false - }, - new PipingSoilLayer(0.0) - { - IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; // Call - LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; + LogNormalDistribution thicknessCoverageLayer = input.ThicknessCoverageLayer; // Assert - Assert.IsNaN(thicknessAquiferLayer.Mean); + Assert.IsNaN(thicknessCoverageLayer.Mean); } [Test] @@ -790,31 +824,114 @@ Assert.IsNaN(thicknessCoverageLayer.Mean); } + [Test] - public void ThicknessAquiferLayer_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine() + public void EffectiveThicknessCoverageLayer_InputWithoutSoilProfile_MeansSetToNaN() { // Setup PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.StochasticSoilProfile = null; + + // Call + LogNormalDistribution effectiveThicknessCoverageLayer = input.EffectiveThicknessCoverageLayer; + + // Assert + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); + } + + [Test] + public void EffectiveThicknessCoverageLayer_InputWithoutSurfaceLine_MeansSetToNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.SurfaceLine = null; + + // Call + LogNormalDistribution effectiveThicknessCoverageLayer = input.EffectiveThicknessCoverageLayer; + + // Assert + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); + } + + [Test] + [TestCase(1e-6)] + [TestCase(1)] + public void EffectiveThicknessCoverageLayer_SoilProfileSingleAquiferAboveSurfaceLine_EffectiveThicknessCoverageLayerNaN(double deltaAboveSurfaceLine) + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + + // Call + LogNormalDistribution effectiveThicknessCoverageLayer = input.EffectiveThicknessCoverageLayer; + + // Assert + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); + } + + [Test] + public void EffectiveThicknessCoverageLayer_MeanSetSoilProfileSetToNull_EffectiveThicknessCoverageLayerNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.EffectiveThicknessCoverageLayer.Mean = new RoundedDouble(2, new Random(21).NextDouble() + 1); + + input.StochasticSoilProfile = null; + + // Call + LogNormalDistribution effectiveThicknessCoverageLayer = input.EffectiveThicknessCoverageLayer; + + // Assert + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); + } + + [Test] + public void EffectiveThicknessCoverageLayer_ProfileWithoutAquiferLayer_EffectiveThicknessCoverageLayerNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) { SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] { - new PipingSoilLayer(2.5) + new PipingSoilLayer(2.0) { - IsAquifer = true + IsAquifer = false + } + }, SoilProfileType.SoilProfile1D, 0) + }; + + // Call + LogNormalDistribution effectiveThicknessCoverageLayer = input.EffectiveThicknessCoverageLayer; + + // Assert + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); + } + + [Test] + public void EffectiveThicknessCoverageLayer_InputResultsInZeroCoverageThickness_EffectiveThicknessCoverageLayerNaN() + { + // Setup + PipingInput input = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); + input.StochasticSoilProfile = new StochasticSoilProfile(0.0, SoilProfileType.SoilProfile1D, 0) + { + SoilProfile = new PipingSoilProfile(string.Empty, 0, new[] + { + new PipingSoilLayer(2.0) + { + IsAquifer = false }, - new PipingSoilLayer(1.5) + new PipingSoilLayer(2.0) { IsAquifer = true } }, SoilProfileType.SoilProfile1D, 0) }; // Call - LogNormalDistribution thicknessAquiferLayer = input.ThicknessAquiferLayer; + LogNormalDistribution effectiveThicknessCoverageLayer = input.EffectiveThicknessCoverageLayer; // Assert - Assert.AreEqual(2.0, thicknessAquiferLayer.Mean.Value, 1e-6); + Assert.IsNaN(effectiveThicknessCoverageLayer.Mean); } [Test]