Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilProfile.cs
===================================================================
diff -u -rdc2b06cb5a46cf2508d28fe9a6f8dcaa710346a7 -r935ddb05bb15494732dea93d6c67a40bb318fb85
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilProfile.cs (.../PipingSoilProfile.cs) (revision dc2b06cb5a46cf2508d28fe9a6f8dcaa710346a7)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilProfile.cs (.../PipingSoilProfile.cs) (revision 935ddb05bb15494732dea93d6c67a40bb318fb85)
@@ -73,23 +73,40 @@
}
private set
{
- if (value == null)
- {
- throw new ArgumentNullException(@"value", string.Format(Resources.Error_Cannot_Construct_PipingSoilProfile_Without_Layers));
- }
- if (!value.Any())
- {
- throw new ArgumentException(Resources.Error_Cannot_Construct_PipingSoilProfile_Without_Layers);
- }
- if (value.Any(l => l.Top < Bottom))
- {
- throw new ArgumentException(Resources.PipingSoilProfile_Layers_Layer_top_below_profile_bottom);
- }
+ ValidateLayersCollection(value);
layers = value.OrderByDescending(l => l.Top).ToArray();
}
}
///
+ /// Validates the given . A valid has layers which
+ /// all have values for which are greater than or equal to .
+ ///
+ /// The collection of to validate.
+ /// Thrown when is null.
+ /// Thrown when
+ ///
+ /// - contains no layers
+ /// - contains a layer with the less than
+ ///
+ ///
+ private void ValidateLayersCollection(IEnumerable collection)
+ {
+ if (collection == null)
+ {
+ throw new ArgumentNullException(@"collection", string.Format(Resources.Error_Cannot_Construct_PipingSoilProfile_Without_Layers));
+ }
+ if (!collection.Any())
+ {
+ throw new ArgumentException(Resources.Error_Cannot_Construct_PipingSoilProfile_Without_Layers);
+ }
+ if (collection.Any(l => l.Top < Bottom))
+ {
+ throw new ArgumentException(Resources.PipingSoilProfile_Layers_Layer_top_below_profile_bottom);
+ }
+ }
+
+ ///
/// Gets the thickness of the given layer in the .
/// Thickness of a layer is determined by its top and the top of the layer below it.
///
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Extensions/PipingInputExtensions.cs
===================================================================
diff -u -rdc2b06cb5a46cf2508d28fe9a6f8dcaa710346a7 -r935ddb05bb15494732dea93d6c67a40bb318fb85
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Extensions/PipingInputExtensions.cs (.../PipingInputExtensions.cs) (revision dc2b06cb5a46cf2508d28fe9a6f8dcaa710346a7)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Extensions/PipingInputExtensions.cs (.../PipingInputExtensions.cs) (revision 935ddb05bb15494732dea93d6c67a40bb318fb85)
@@ -1,5 +1,6 @@
using System;
using System.Linq;
+using Core.Common.Base.Geometry;
using log4net;
using Ringtoets.Piping.Calculation;
using Ringtoets.Piping.Data;
@@ -70,52 +71,111 @@
private static void UpdateThicknessAquiferLayer(this PipingInput input)
{
- var soilProfile = input.SoilProfile;
- if (soilProfile != null && input.SurfaceLine != null && !double.IsNaN(input.ExitPointL))
+ PipingSoilProfile soilProfile = input.SoilProfile;
+ RingtoetsPipingSurfaceLine surfaceLine = input.SurfaceLine;
+ double exitPointL = input.ExitPointL;
+
+ double thicknessTopAquiferLayer = GetThicknessTopAquiferLayer(soilProfile, surfaceLine, exitPointL);
+ TrySetThicknessAquiferLayerMean(input, thicknessTopAquiferLayer);
+
+ if (double.IsNaN(input.ThicknessAquiferLayer.Mean))
{
- var aquiferLayersBelowSurfaceLine = soilProfile.Layers.Where(l => l.IsAquifer && l.Top <= input.SurfaceLine.GetZAtL(input.ExitPointL)).ToArray();
- if (aquiferLayersBelowSurfaceLine.Any())
+ logger.Warn(Resources.PipingInputExtensions_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer);
+ }
+ }
+
+ private static double GetThicknessTopAquiferLayer(PipingSoilProfile soilProfile, RingtoetsPipingSurfaceLine surfaceLine, double exitPointL)
+ {
+ var thicknessTopAquiferLayer = double.NaN;
+
+ if (soilProfile != null && surfaceLine != null && !double.IsNaN(exitPointL))
+ {
+ thicknessTopAquiferLayer = GetTopAquiferLayerThicknessBelowSurfaceLine(soilProfile, surfaceLine, exitPointL);
+ }
+
+ return thicknessTopAquiferLayer;
+ }
+
+ private static void TrySetThicknessAquiferLayerMean(PipingInput input, double thicknessTopAquiferLayer)
+ {
+ try
+ {
+ input.ThicknessAquiferLayer.Mean = thicknessTopAquiferLayer;
+ }
+ catch (ArgumentOutOfRangeException)
+ {
+ input.ThicknessAquiferLayer.Mean = double.NaN;
+ }
+ }
+
+ private static double GetTopAquiferLayerThicknessBelowSurfaceLine(PipingSoilProfile profile, RingtoetsPipingSurfaceLine surfaceLine, double atL)
+ {
+ double surfaceLineTop = surfaceLine.GetZAtL(atL);
+ PipingSoilLayer[] layers = profile.Layers.ToArray();
+ PipingSoilLayer topAquiferLayer = null;
+ var thickness = double.NaN;
+
+ var i = layers.Length - 1;
+
+ while (i >= 0)
+ {
+ PipingSoilLayer pipingSoilLayer = layers.ElementAt(i);
+ if (pipingSoilLayer.Top < surfaceLineTop && topAquiferLayer != null)
{
- try
- {
- input.ThicknessAquiferLayer.Mean = soilProfile.GetLayerThickness(aquiferLayersBelowSurfaceLine.First());
- return;
- }
- catch (ArgumentOutOfRangeException)
- {
- // error handling performed after try-catch
- }
+ break;
}
+ if (pipingSoilLayer.IsAquifer)
+ {
+ topAquiferLayer = pipingSoilLayer;
+ }
+ i--;
}
- logger.Warn(Resources.PipingInputExtensions_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer);
- input.ThicknessAquiferLayer.Mean = double.NaN;
+
+ if (topAquiferLayer != null)
+ {
+ thickness = profile.GetLayerThickness(topAquiferLayer);
+ thickness -= Math.Max(0, topAquiferLayer.Top - surfaceLineTop);
+ }
+ return thickness;
}
private static void UpdateThicknessCoverageLayer(this PipingInput input)
{
- if (input.SurfaceLine != null && input.SoilProfile != null)
+ double derivedThickness = GetThicknessCoverageLayer(input);
+ TrySetThicknessCoverageLayer(input, derivedThickness);
+
+ if (double.IsNaN(input.ThicknessCoverageLayer.Mean))
{
+ logger.Warn(Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ }
+ }
+
+ private static double GetThicknessCoverageLayer(PipingInput input)
+ {
+ if (input.SurfaceLine != null && input.SoilProfile != null && !double.IsNaN(input.ExitPointL))
+ {
try
{
- double derivedThickness = PipingCalculationService.CalculateThicknessCoverageLayer(input);
- if (!double.IsNaN(derivedThickness))
- {
- input.ThicknessCoverageLayer.Mean = derivedThickness;
- return;
- }
+ return PipingCalculationService.CalculateThicknessCoverageLayer(input);
}
- catch (ArgumentOutOfRangeException)
- {
- // error handling performed after try-catch
- }
catch (PipingCalculatorException)
{
- // error handling performed after try-catch
+ return double.NaN;
}
}
+ return double.NaN;
+ }
- logger.Warn(Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
- input.ThicknessCoverageLayer.Mean = double.NaN;
+ private static void TrySetThicknessCoverageLayer(PipingInput input, double derivedThickness)
+ {
+ try
+ {
+ input.ThicknessCoverageLayer.Mean = derivedThickness;
+ }
+ catch (ArgumentOutOfRangeException)
+ {
+ input.ThicknessCoverageLayer.Mean = Double.NaN;
+ }
}
private static void UpdateValuesBasedOnSurfaceLine(this PipingInput input)
@@ -127,20 +187,20 @@
}
else
{
- var entryPointIndex = Array.IndexOf(input.SurfaceLine.Points, input.SurfaceLine.DikeToeAtRiver);
- var exitPointIndex = Array.IndexOf(input.SurfaceLine.Points, input.SurfaceLine.DikeToeAtPolder);
+ int entryPointIndex = Array.IndexOf(input.SurfaceLine.Points, input.SurfaceLine.DikeToeAtRiver);
+ int exitPointIndex = Array.IndexOf(input.SurfaceLine.Points, input.SurfaceLine.DikeToeAtPolder);
- var localGeometry = input.SurfaceLine.ProjectGeometryToLZ().ToArray();
+ Point2D[] localGeometry = input.SurfaceLine.ProjectGeometryToLZ().ToArray();
- var tempEntryPointL = localGeometry[0].X;
- var tempExitPointL = localGeometry[localGeometry.Length - 1].X;
+ double tempEntryPointL = localGeometry[0].X;
+ double tempExitPointL = localGeometry[localGeometry.Length - 1].X;
- var differentPoints = entryPointIndex < 0 || exitPointIndex < 0 || entryPointIndex < exitPointIndex;
- if (differentPoints && exitPointIndex > 0)
+ bool isDifferentPoints = entryPointIndex < 0 || exitPointIndex < 0 || entryPointIndex < exitPointIndex;
+ if (isDifferentPoints && exitPointIndex > 0)
{
tempExitPointL = localGeometry.ElementAt(exitPointIndex).X;
}
- if (differentPoints && entryPointIndex > -1)
+ if (isDifferentPoints && entryPointIndex > -1)
{
tempEntryPointL = localGeometry.ElementAt(entryPointIndex).X;
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs
===================================================================
diff -u -rdc2b06cb5a46cf2508d28fe9a6f8dcaa710346a7 -r935ddb05bb15494732dea93d6c67a40bb318fb85
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs (.../PipingInputExtensionsTest.cs) (revision dc2b06cb5a46cf2508d28fe9a6f8dcaa710346a7)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs (.../PipingInputExtensionsTest.cs) (revision 935ddb05bb15494732dea93d6c67a40bb318fb85)
@@ -11,6 +11,7 @@
[TestFixture]
public class PipingInputExtensionsTest
{
+
[Test]
public void SetSurfaceLine_WithDikeToeDikeSideAndDikeToeRiverSide_SetsExitPointLAndSeePageLength()
{
@@ -184,6 +185,27 @@
}
[Test]
+ public void SetEntryPointL_SetResultInInvalidSeePage_SeepageSetToNaN()
+ {
+ // Setup
+ var surfaceLine = ValidSurfaceLine(0.0, 4.0);
+
+ var l = 2.0;
+ var input = new PipingInput(new GeneralPipingInput())
+ {
+ SurfaceLine = surfaceLine,
+ ExitPointL = l
+ };
+
+ // Call
+ input.SetEntryPointL(l);
+
+ // Assert
+ Assert.IsNaN(input.SeepageLength.Mean);
+ Assert.IsNaN(input.SeepageLength.StandardDeviation);
+ }
+
+ [Test]
[TestCase(0)]
[TestCase(-1e-6)]
[TestCase(-6)]
@@ -222,61 +244,106 @@
}
[Test]
- public void SetEntryPointL_SetResultInInvalidSeePage_SeepageSetToNaN()
+ public void SetExitPointL_SetResultInInvalidSeePage_SeePageSetToNaN()
{
// Setup
- var surfaceLine = ValidSurfaceLine(0.0, 4.0);
+ var exitPointOld = 4.0;
+ var surfaceLine = ValidSurfaceLine(0.0, exitPointOld);
+ var input = new PipingInput(new GeneralPipingInput());
+ input.SetSurfaceLine(surfaceLine);
+ var entryPointL = 1.0;
+ input.SetEntryPointL(entryPointL);
- var l = 2.0;
- var input = new PipingInput(new GeneralPipingInput())
- {
- SurfaceLine = surfaceLine,
- ExitPointL = l
- };
-
// Call
- input.SetEntryPointL(l);
+ input.SetExitPointL(entryPointL);
// Assert
Assert.IsNaN(input.SeepageLength.Mean);
Assert.IsNaN(input.SeepageLength.StandardDeviation);
}
[Test]
- public void SetExitPointL_SetResultInInvalidSeePage_SeePageSetToNaN()
+ public void SetSurfaceLine_InputWithoutEntryPointL_EntryPointLAtStartOfSurfaceLine()
{
// Setup
- var exitPointOld = 4.0;
- var surfaceLine = ValidSurfaceLine(0.0, exitPointOld);
- var input = new PipingInput(new GeneralPipingInput());
- input.SetSurfaceLine(surfaceLine);
- var entryPointL = 1.0;
- input.SetEntryPointL(entryPointL);
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.EntryPointL = double.NaN;
// Call
- input.SetExitPointL(entryPointL);
+ input.SetSurfaceLine(input.SurfaceLine);
// Assert
- Assert.IsNaN(input.SeepageLength.Mean);
- Assert.IsNaN(input.SeepageLength.StandardDeviation);
+ Assert.AreEqual(0.0, input.EntryPointL);
}
+ #region thickness of the coverage layer
+
[Test]
- [TestCase(0)]
- [TestCase(1)]
- [TestCase(2)]
- public void ThicknessCoverageLayer_WithMissingInput_ThicknessSetToNaNAndLog(int inputIndexMissing)
+ public void SetExitPointL_CompleteInput_ThicknessUpdated()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+
+ // Call
+ input.SetExitPointL(input.ExitPointL);
+
+ // Assert
+ var thickness = input.ThicknessCoverageLayer.Mean;
+ Assert.AreEqual(1.0, thickness);
+ }
+
+ [Test]
+ public void SetExitPointL_InputWithoutSurfaceLine_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SurfaceLine = null;
+
+ // Call
+ Action call = () => input.SetExitPointL(0.5);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_InputWithoutSoilProfile_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = null;
+
+ // Call
+ Action call = () => input.SetExitPointL(0.5);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_MeanSetExitPointSetToNaN_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer(true);
+
+ // Call
+ Action call = () => input.SetExitPointL(double.NaN);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_AquiferLayerThicknessZero_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
+ new PipingSoilLayer(2.0)
{
IsAquifer = true
},
@@ -285,74 +352,103 @@
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput());
// Call
- Action call = null;
- if (inputIndexMissing != 0)
- {
- call = () => input.SetSurfaceLine(surfaceLine);
- }
- if (inputIndexMissing != 1)
- {
- call = () => input.SetSoilProfile(soilProfile);
- }
- if (inputIndexMissing != 2)
- {
- call = () => input.SetExitPointL(0.5);
- }
-
+ Action call = () => input.SetExitPointL(input.ExitPointL);
+
// Assert
TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
}
[Test]
- public void ThicknessCoverageLayer_InputCausesPipingCalculatorException_ThicknessSetToNaNAndLog()
+ public void SetExitPointL_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaNAndLog()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, 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(new GeneralPipingInput())
- {
- SoilProfile = soilProfile
- };
+
// Call
- Action call = () => input.SetSurfaceLine(surfaceLine);
+ Action call = () => input.SetExitPointL(input.ExitPointL);
// Assert
TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
}
[Test]
- [TestCase(0)]
- [TestCase(1)]
- [TestCase(2)]
- public void ThicknessCoverageLayer_ChangeToMissingInput_ThicknessSetToNaNAndLog(int inputIndexMissing)
+ public void SetSurfaceLine_CompleteInput_ThicknessUpdated()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+
+ // Call
+ input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ var thickness = input.ThicknessCoverageLayer.Mean;
+ Assert.AreEqual(1.0, thickness);
+ }
+
+ [Test]
+ public void SetSurfaceLine_InputWithoutExitPointL_ExitPointLAtEndOfSurfaceLineThicknessUpdated()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.ExitPointL = double.NaN;
+
+ // Call
+ input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ Assert.AreEqual(1.0, input.ExitPointL);
+ Assert.AreEqual(1.0, input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_InputWithoutSoilProfile_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = null;
+
+ // Call
+ Action call = () => input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_MeanSetSurfacelineSetToNull_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer(true);
+
+ // Call
+ Action call = () => input.SetSurfaceLine(null);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_AquiferLayerThicknessZero_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
+ new PipingSoilLayer(2.0)
{
IsAquifer = true
},
@@ -361,81 +457,102 @@
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput());
- input.SetSurfaceLine(surfaceLine);
- input.SetSoilProfile(soilProfile);
// Call
- Action call = null;
- if (inputIndexMissing == 0)
- {
- call = () => input.SetSurfaceLine(null);
- }
- if (inputIndexMissing == 1)
- {
- call = () => input.SetSoilProfile(null);
- }
- if (inputIndexMissing == 2)
- {
- call = () => input.SetExitPointL(double.NaN);
- }
+ Action call = () => input.SetSurfaceLine(input.SurfaceLine);
// Assert
TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
}
[Test]
- public void ThicknessCoverageLayer_InputResultsInZeroThickness_ThicknessSetToNaNAndLog()
+ public void SetSurfaceLine_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaNAndLog()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, 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
- },
- new PipingSoilLayer(2.0)
- {
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput());
+ // Call
+ Action call = () => input.SetSurfaceLine(input.SurfaceLine);
- input.SetSurfaceLine(surfaceLine);
- input.SetExitPointL(0.5);
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+ [Test]
+ public void SetSoilProfile_CompleteInput_ThicknessCoverageLayerUpdated()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+
// Call
- input.SetSoilProfile(soilProfile);
+ input.SetSoilProfile(input.SoilProfile);
+ // Assert
+ var thickness = input.ThicknessCoverageLayer.Mean;
+ Assert.AreEqual(1.0, thickness);
+ }
+
+ [Test]
+ public void SetSoilProfile_InputWithoutSurfaceLine_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SurfaceLine = null;
+
// Call
- Action call = () => input.SetSoilProfile(soilProfile);
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
// Assert
TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
}
[Test]
- public void SetSurfaceLine_WithSoilProfileAndExitPointL_ThicknessUpdated()
+ public void SetSoilProfile_InputWithoutExitPointL_ThicknessCoverageLayerNaNAndLog()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.ExitPointL = double.NaN;
+
+ // Call
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_MeanSetSoilProfileSetToNull_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer(true);
+
+ // Call
+ Action call = () => input.SetSoilProfile(null);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_AquiferLayerThicknessZero_ThicknessCoverageLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
+ new PipingSoilLayer(2.0)
{
IsAquifer = true
},
@@ -444,81 +561,135 @@
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput())
- {
- SoilProfile = soilProfile,
- ExitPointL = 0.5
- };
- var previousResult = input.ThicknessCoverageLayer.Mean;
-
- input.SetSurfaceLine(surfaceLine);
-
// Call
- var result = input.ThicknessCoverageLayer.Mean;
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
// Assert
- Assert.AreSame(surfaceLine, input.SurfaceLine);
- Assert.AreNotEqual(previousResult, result);
- Assert.AreEqual(1.0, result);
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
}
[Test]
- public void SetSoilProfile_WithSurfaceLineAndExitPointL_CoverageThicknessUpdated()
+ public void SetSoilProfile_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaNAndLog()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new []
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
- {
- IsAquifer = true
- },
new PipingSoilLayer(2.0)
{
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput())
- {
- SurfaceLine = surfaceLine,
- ExitPointL = 0.5
- };
- var previousResult = input.ThicknessCoverageLayer.Mean;
+ // Call
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
- input.SetSoilProfile(soilProfile);
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessCoverageLayer.Mean);
+ }
+ #endregion
+
+ #region thickness of the aquifer layer
+
+ [Test]
+ public void SetExitPointL_SoilProfileSingleAquiferUnderSurfaceLine_ThicknessAquiferLayerMeanSet()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+
// Call
- var result = input.ThicknessCoverageLayer.Mean;
+ input.SetExitPointL(input.ExitPointL);
// Assert
- Assert.AreSame(soilProfile, input.SoilProfile);
- Assert.AreNotEqual(previousResult, result);
- Assert.AreEqual(1.0, result);
+ Assert.AreEqual(1.0, input.ThicknessAquiferLayer.Mean);
}
[Test]
- [TestCase(0)]
+ public void SetExitPointL_WithoutSoilProfile_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = null;
+
+ // Call
+ Action call = () => input.SetExitPointL(input.ExitPointL);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_WithoutSurfaceLine_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SurfaceLine = null;
+
+ // Call
+ Action call = () => input.SetExitPointL(input.ExitPointL);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ [TestCase(1e-6)]
[TestCase(1)]
- [TestCase(2)]
- public void ThicknessAquiferLayer_WithMissingInput_ThicknessSetToNaNAndLog(int inputIndexMissing)
+ public void SetExitPointL_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessAquiferLayerNaNAndLog(double deltaAboveSurfaceLine)
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine);
+
+ // Call
+ Action call = () => input.SetExitPointL(input.ExitPointL);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopAquiferThickness()
+ {
+ // Setup
+ double expectedThickness;
+ var input = CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness);
+
+ // Call
+ input.SetExitPointL(input.ExitPointL);
+
+ // Assert
+ Assert.AreEqual(expectedThickness, input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_MeanSetExitPointSetToNaN_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer(true);
+
+ // Call
+ Action call = () => input.SetExitPointL(double.NaN);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, "Kan de dikte van het watervoerend pakket niet afleiden op basis van de invoer.");
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetExitPointL_InputResultsInZeroThickness_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
+ new PipingSoilLayer(0.0)
{
IsAquifer = true
},
@@ -527,165 +698,270 @@
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput());
// Call
- Action call = null;
- if (inputIndexMissing != 0)
- {
- call = () => input.SetSurfaceLine(surfaceLine);
- }
- if (inputIndexMissing != 1)
- {
- call = () => input.SetSoilProfile(soilProfile);
- }
- if (inputIndexMissing != 2)
- {
- call = () => input.SetExitPointL(0.5);
- }
+ Action call = () => input.SetExitPointL(input.ExitPointL);
// Assert
- TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer);
Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
}
[Test]
- public void ThicknessAquiferLayer_SoilProfileSingleAquiferUnderSurfaceLine_MeanSet()
+ public void SetExitPointL_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
+ new PipingSoilLayer(1.5)
{
IsAquifer = true
},
- new PipingSoilLayer(2.0)
+ new PipingSoilLayer(2.5)
{
- IsAquifer = false
+ IsAquifer = true
}
});
- var input = new PipingInput(new GeneralPipingInput())
- {
- SurfaceLine = surfaceLine,
- ExitPointL = 0.5
- };
- input.SetSoilProfile(soilProfile);
+ // Call
+ input.SetExitPointL(input.ExitPointL);
+ // Assert
+ Assert.AreEqual(0.5, input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_SoilProfileSingleAquiferUnderSurfaceLine_ThicknessAquiferLayerMeanSet()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+
// Call
- var result = input.ThicknessAquiferLayer.Mean;
+ input.SetSurfaceLine(input.SurfaceLine);
// Assert
- Assert.AreSame(soilProfile, input.SoilProfile);
- Assert.AreEqual(1.0, result);
+ Assert.AreEqual(1.0, input.ThicknessAquiferLayer.Mean);
}
[Test]
+ public void SetSurfaceLine_WithExitPointLSetToNaN_ExitPointLAtEndOfSurfaceLineAndThicknessUpdated()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.ExitPointL = double.NaN;
+
+ // Call
+ input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ Assert.AreEqual(1.0, input.ExitPointL);
+ Assert.AreEqual(1.0, input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_WithoutSoilProfile_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = null;
+
+ // Call
+ Action call = () => input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
[TestCase(1e-6)]
[TestCase(1)]
- public void ThicknessAquiferLayer_SoilProfileSingleAquiferAboveSurfaceLine_MeanSetToNaN(double deltaAboveSurfaceLine)
+ public void SetSurfaceLine_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessAquiferLayerNaNAndLog(double deltaAboveSurfaceLine)
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- var surfaceLineTopLevel = 2.0;
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine);
+
+ // Call
+ Action call = () => input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopAquiferThickness()
+ {
+ // Setup
+ double expectedThickness;
+ var input = CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness);
+
+ // Call
+ input.SetSurfaceLine(input.SurfaceLine);
+
+ // Assert
+ Assert.AreEqual(expectedThickness, input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_MeanSetSurfaceLineSetToNull_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer(true);
+
+ // Call
+ Action call = () => input.SetSurfaceLine(null);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, "Kan de dikte van het watervoerend pakket niet afleiden op basis van de invoer.");
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSurfaceLine_InputResultsInZeroThickness_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,surfaceLineTopLevel),
- new Point3D(1.0,0,surfaceLineTopLevel),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine)
+ new PipingSoilLayer(0.0)
{
- IsAquifer = false
+ IsAquifer = true
},
- new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine + 1)
+ new PipingSoilLayer(2.0)
{
- IsAquifer = true
+ IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput())
- {
- SurfaceLine = surfaceLine,
- ExitPointL = 0.5
- };
- input.SetSoilProfile(soilProfile);
-
// Call
- var result = input.ThicknessAquiferLayer.Mean;
+ Action call = () => input.SetSurfaceLine(input.SurfaceLine);
// Assert
- Assert.AreSame(soilProfile, input.SoilProfile);
- Assert.IsNaN(result);
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
}
[Test]
- public void ThicknessAquiferLayer_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopAquiferThickness()
+ public void SetSurfaceLine_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- var firstAquiferThickness = 1.1;
- var secondAquiferThickness = 2.2;
- var totalAquiferThickness = firstAquiferThickness + secondAquiferThickness;
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,totalAquiferThickness),
- new Point3D(1.0,0,totalAquiferThickness),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(firstAquiferThickness)
+ new PipingSoilLayer(1.5)
{
IsAquifer = true
},
- new PipingSoilLayer(firstAquiferThickness + secondAquiferThickness)
+ new PipingSoilLayer(2.5)
{
IsAquifer = true
- },
- new PipingSoilLayer(totalAquiferThickness + 1)
- {
- IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput())
- {
- SurfaceLine = surfaceLine,
- ExitPointL = 0.5
- };
- input.SetSoilProfile(soilProfile);
+ // Call
+ input.SetSurfaceLine(input.SurfaceLine);
+ // Assert
+ Assert.AreEqual(0.5, input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_SoilProfileSingleAquiferUnderSurfaceLine_ThicknessAquiferLayerMeanSet()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+
// Call
- var result = input.ThicknessAquiferLayer.Mean;
+ input.SetSoilProfile(input.SoilProfile);
// Assert
- Assert.AreSame(soilProfile, input.SoilProfile);
- Assert.AreEqual(secondAquiferThickness, result);
+ Assert.AreEqual(1.0, input.ThicknessAquiferLayer.Mean);
}
[Test]
- [TestCase(0)]
+ public void SetSoilProfile_WithExitPointLSetToNaN_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.ExitPointL = double.NaN;
+
+ // Call
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_WithoutSurfaceLine_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SurfaceLine = null;
+
+ // Call
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ [TestCase(1e-6)]
[TestCase(1)]
- [TestCase(2)]
- public void ThicknessAquiferLayer_ChangeToMissingInput_ThicknessSetToNaNAndLog(int inputIndexMissing)
+ public void SetSoilProfile_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessAquiferLayerNaNAndLog(double deltaAboveSurfaceLine)
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine);
+
+ // Call
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer);
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopAquiferThickness()
+ {
+ // Setup
+ double expectedThickness;
+ var input = CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness);
+
+ // Call
+ input.SetSoilProfile(input.SoilProfile);
+
+ // Assert
+ Assert.AreEqual(expectedThickness, input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_MeanSetSoilProfileSetToNull_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer(true);
+
+ // Call
+ Action call = () => input.SetSoilProfile(null);
+
+ // Assert
+ TestHelper.AssertLogMessageIsGenerated(call, "Kan de dikte van het watervoerend pakket niet afleiden op basis van de invoer.");
+ Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ }
+
+ [Test]
+ public void SetSoilProfile_InputResultsInZeroThickness_ThicknessAquiferLayerNaNAndLog()
+ {
+ // Setup
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(1.0)
+ new PipingSoilLayer(0.0)
{
IsAquifer = true
},
@@ -694,77 +970,61 @@
IsAquifer = false
}
});
- var input = new PipingInput(new GeneralPipingInput());
- input.SetSurfaceLine(surfaceLine);
- input.SetSoilProfile(soilProfile);
// Call
- Action call = null;
- if (inputIndexMissing == 0)
- {
- call = () => input.SetSurfaceLine(null);
- }
- if (inputIndexMissing == 1)
- {
- call = () => input.SetSoilProfile(null);
- }
- if (inputIndexMissing == 2)
- {
- call = () => input.SetExitPointL(double.NaN);
- }
+ Action call = () => input.SetSoilProfile(input.SoilProfile);
// Assert
- TestHelper.AssertLogMessageIsGenerated(call, "Kan de dikte van het watervoerend pakket niet afleiden op basis van de invoer.");
+ TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer);
Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
}
[Test]
- public void ThicknessAquiferLayer_InputResultsInZeroThickness_ThicknessSetToNaNAndLog()
+ public void SetSoilProfile_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine()
{
// Setup
- var surfaceLine = new RingtoetsPipingSurfaceLine();
- surfaceLine.SetGeometry(new[]
+ var input = CreateInputWithAquiferAndCoverageLayer();
+ input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
- });
- var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
- {
- new PipingSoilLayer(0.0)
+ new PipingSoilLayer(1.5)
{
IsAquifer = true
},
- new PipingSoilLayer(2.0)
+ new PipingSoilLayer(2.5)
{
- IsAquifer = false
+ IsAquifer = true
}
});
- var input = new PipingInput(new GeneralPipingInput());
+ // Call
+ input.SetSoilProfile(input.SoilProfile);
- input.SetSurfaceLine(surfaceLine);
- input.SetExitPointL(0.5);
+ // Assert
+ Assert.AreEqual(0.5, input.ThicknessAquiferLayer.Mean);
+ }
- // Call
- input.SetSoilProfile(soilProfile);
+ #endregion
- // Call
- Action call = () => input.SetSoilProfile(soilProfile);
+ #region test input creation helpers
- // Assert
- TestHelper.AssertLogMessageIsGenerated(call, Resources.PipingInputExtensions_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer);
- Assert.IsNaN(input.ThicknessAquiferLayer.Mean);
+ private static RingtoetsPipingSurfaceLine ValidSurfaceLine(double xMin, double xMax)
+ {
+ var surfaceLine = new RingtoetsPipingSurfaceLine();
+ surfaceLine.SetGeometry(new[]
+ {
+ new Point3D(xMin, 0.0, 0.0),
+ new Point3D(xMax, 0.0, 1.0)
+ });
+ return surfaceLine;
}
- [Test]
- public void SetExitPointL_WithSoilProfileAndExitPointL_ThicknessUpdated()
+ private static PipingInput CreateInputWithAquiferAndCoverageLayer(bool meanSet = false)
{
- // Setup
var surfaceLine = new RingtoetsPipingSurfaceLine();
surfaceLine.SetGeometry(new[]
{
- new Point3D(0,0,2.0),
- new Point3D(1.0,0,2.0),
+ new Point3D(0, 0, 2.0),
+ new Point3D(1.0, 0, 2.0),
});
var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
{
@@ -777,35 +1037,88 @@
IsAquifer = false
}
});
+ var input = new PipingInput(new GeneralPipingInput());
+ var exitPointL = 0.5;
+ if (meanSet)
+ {
+ input.SetSurfaceLine(surfaceLine);
+ input.SetSoilProfile(soilProfile);
+ input.SetExitPointL(exitPointL);
+ }
+ else
+ {
+ input.SurfaceLine = surfaceLine;
+ input.SoilProfile = soilProfile;
+ input.ExitPointL = exitPointL;
+ }
+ return input;
+ }
+
+ private static PipingInput CreateInputWithSingleAquiferLayerAboveSurfaceLine(double deltaAboveSurfaceLine)
+ {
+ var surfaceLine = new RingtoetsPipingSurfaceLine();
+ var surfaceLineTopLevel = 2.0;
+ surfaceLine.SetGeometry(new[]
+ {
+ new Point3D(0, 0, surfaceLineTopLevel),
+ new Point3D(1.0, 0, surfaceLineTopLevel),
+ });
+ var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
+ {
+ new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine + 1)
+ {
+ IsAquifer = true
+ }
+ });
var input = new PipingInput(new GeneralPipingInput())
{
SurfaceLine = surfaceLine,
- SoilProfile = soilProfile
+ SoilProfile = soilProfile,
+ ExitPointL = 0.5
};
-
- var previousResult = input.ThicknessCoverageLayer.Mean;
-
- var exitPointL = 0.5;
- input.SetExitPointL(exitPointL);
-
- // Call
- var result = input.ThicknessCoverageLayer.Mean;
-
- // Assert
- Assert.AreEqual(exitPointL, input.ExitPointL);
- Assert.AreNotEqual(previousResult, result);
- Assert.AreEqual(1.0, result);
+ return input;
}
- private static RingtoetsPipingSurfaceLine ValidSurfaceLine(double xMin, double xMax)
+ private static PipingInput CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out double expectedThickness)
{
var surfaceLine = new RingtoetsPipingSurfaceLine();
+ var firstAquiferThickness = 1.1;
+ var secondAquiferThickness = 2.2;
+ var totalAquiferThickness = firstAquiferThickness + secondAquiferThickness;
surfaceLine.SetGeometry(new[]
{
- new Point3D(xMin, 0.0, 0.0),
- new Point3D(xMax, 0.0, 1.0)
+ new Point3D(0, 0, totalAquiferThickness),
+ new Point3D(1.0, 0, totalAquiferThickness),
});
- return surfaceLine;
+ var soilProfile = new PipingSoilProfile(String.Empty, 0, new[]
+ {
+ new PipingSoilLayer(firstAquiferThickness)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(firstAquiferThickness + secondAquiferThickness)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(totalAquiferThickness + 1)
+ {
+ IsAquifer = false
+ }
+ });
+ var input = new PipingInput(new GeneralPipingInput())
+ {
+ SurfaceLine = surfaceLine,
+ SoilProfile = soilProfile,
+ ExitPointL = 0.5
+ };
+ expectedThickness = secondAquiferThickness;
+ return input;
}
+ #endregion
+
}
}
\ No newline at end of file