Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs =================================================================== diff -u -r847f6b97f0a6e007a89364ad12d0541bc0d84d1e -rbbfd376aee76613b471f70d2b1214d7e7b08fb1f --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs (.../PipingInputExtensionsTest.cs) (revision 847f6b97f0a6e007a89364ad12d0541bc0d84d1e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs (.../PipingInputExtensionsTest.cs) (revision bbfd376aee76613b471f70d2b1214d7e7b08fb1f) @@ -38,6 +38,34 @@ } [Test] + public void SetSurfaceLine_Null_SetsExitPointLAndSeePageLengthMeanToNaN() + { + // Setup + var inputParameters = new PipingInput(); + RingtoetsPipingSurfaceLine surfaceLine = new RingtoetsPipingSurfaceLine(); + var firstPointX = 1.0; + var secondPointX = 4.0; + var point1 = new Point3D(firstPointX, 0.0, 2.0); + var point2 = new Point3D(secondPointX, 0.0, 1.8); + surfaceLine.SetGeometry(new[] + { + point1, + point2, + }); + surfaceLine.SetDikeToeAtRiverAt(point1); + surfaceLine.SetDikeToeAtPolderAt(point2); + + inputParameters.SetSurfaceLine(surfaceLine); + + // Call + inputParameters.SetSurfaceLine(null); + + // Assert + Assert.IsNaN(inputParameters.SeepageLength.Mean); + Assert.IsNaN(inputParameters.ExitPointL); + } + + [Test] public void SetSurfaceLine_WithoutDikeToeDikeSideAndDikeToeRiverSide_ExitPointAtEndAndSeePageLengthIsLengthInX() { // Setup @@ -259,7 +287,7 @@ [Test] [TestCase(0)] [TestCase(1)] - public void ThicknessCoverageLayer_WithMissingInput_NoChangeInThickness(int inputIndexMissing) + public void ThicknessCoverageLayer_WithMissingInput_ThicknessSetToNaNAndLog(int inputIndexMissing) { // Setup var surfaceLine = new RingtoetsPipingSurfaceLine(); @@ -280,26 +308,55 @@ } }); var input = new PipingInput(); - var previousResult = input.ThicknessCoverageLayer.Mean; + // Call + Action call = null; if (inputIndexMissing != 0) { - input.SetSurfaceLine(surfaceLine); + call = () => input.SetSurfaceLine(surfaceLine); } if (inputIndexMissing != 1) { - input.SetSoilProfile(soilProfile); + call = () => input.SetSoilProfile(soilProfile); } + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer); + Assert.IsNaN(input.ThicknessCoverageLayer.Mean); + } + [Test] + public void ThicknessCoverageLayer_InputCausesPipingCalculatorException_ThicknessSetToNaNAndLog() + { + // Setup + var surfaceLine = new RingtoetsPipingSurfaceLine(); + surfaceLine.SetGeometry(new[] + { + new Point3D(0,0,2.0), + new Point3D(1.0,0,2.0), + }); + var soilProfile = new PipingSoilProfile(String.Empty, 0, new[] + { + new PipingSoilLayer(2.0) + { + IsAquifer = false + } + }); + var input = new PipingInput(); + input.SoilProfile = soilProfile; + // Call - var result = input.ThicknessCoverageLayer.Mean; + Action call = () => input.SetSurfaceLine(surfaceLine); // Assert - Assert.AreEqual(previousResult, result); + TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer); + Assert.IsNaN(input.ThicknessCoverageLayer.Mean); } [Test] - public void ThicknessCoverageLayer_InputResultsInZeroThickness_ThrowsExceptionNoChangeInThickness() + [TestCase(0)] + [TestCase(1)] + public void ThicknessCoverageLayer_HadThicknessCoverageLayerChangeToMissingInput_ThicknessSetToNaNAndLog(int inputIndexMissing) { // Setup var surfaceLine = new RingtoetsPipingSurfaceLine(); @@ -310,24 +367,67 @@ }); var soilProfile = new PipingSoilProfile(String.Empty, 0, new[] { + new PipingSoilLayer(1.0) + { + IsAquifer = true + }, new PipingSoilLayer(2.0) { + IsAquifer = false + } + }); + var input = new PipingInput(); + input.SetSurfaceLine(surfaceLine); + input.SetSoilProfile(soilProfile); + + // Call + Action call = null; + if (inputIndexMissing == 0) + { + call = () => input.SetSurfaceLine(null); + } + if (inputIndexMissing == 1) + { + call = () => input.SetSoilProfile(null); + } + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer); + Assert.IsNaN(input.ThicknessCoverageLayer.Mean); + } + + [Test] + public void ThicknessCoverageLayer_InputResultsInZeroThickness_ThicknessSetToNaNAndLog() + { + // Setup + var surfaceLine = new RingtoetsPipingSurfaceLine(); + surfaceLine.SetGeometry(new[] + { + new Point3D(0,0,2.0), + new Point3D(1.0,0,2.0), + }); + var soilProfile = new PipingSoilProfile(String.Empty, 0, new[] + { + new PipingSoilLayer(2.0) + { IsAquifer = true } }); var input = new PipingInput(); - var previousResult = input.ThicknessCoverageLayer.Mean; input.SetSurfaceLine(surfaceLine); input.SetExitPointL(0.5); // Call - TestDelegate test = () => input.SetSoilProfile(soilProfile); + input.SetSoilProfile(soilProfile); + // Call + Action call = () => input.SetSoilProfile(soilProfile); + // Assert - Assert.Throws(test); - Assert.AreEqual(previousResult, input.ThicknessCoverageLayer.Mean); + TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer); + Assert.IsNaN(input.ThicknessCoverageLayer.Mean); } [Test]