Index: Ringtoets/Common/src/Ringtoets.Common.Service/CalculationServiceHelper.cs
===================================================================
diff -u -r3d9b418d483c122040e11a7e074d666c64e9d7b5 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Common/src/Ringtoets.Common.Service/CalculationServiceHelper.cs (.../CalculationServiceHelper.cs) (revision 3d9b418d483c122040e11a7e074d666c64e9d7b5)
+++ Ringtoets/Common/src/Ringtoets.Common.Service/CalculationServiceHelper.cs (.../CalculationServiceHelper.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -91,6 +91,18 @@
}
///
+ /// Logs messages as warnings.
+ ///
+ /// The messages to log.
+ public static void LogMessagesAsWarning(params string[] warningMessages)
+ {
+ foreach (var errorMessage in warningMessages)
+ {
+ log.Warn(errorMessage);
+ }
+ }
+
+ ///
/// Logs the begin time of the validation.
///
/// The name of the object being validated.
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingInput.cs
===================================================================
diff -u -r2363244674e6b7b97bead9a6855806420d368d80 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingInput.cs (.../DerivedPipingInput.cs) (revision 2363244674e6b7b97bead9a6855806420d368d80)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingInput.cs (.../DerivedPipingInput.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using System.Collections.Generic;
using System.Linq;
using Core.Common.Base.Data;
using Ringtoets.Common.Data.Probabilistics;
@@ -264,17 +265,17 @@
private void UpdateSaturatedVolumicWeightOfCoverageLayerParameters(ShiftedLogNormalDistribution volumicWeightDistribution)
{
- PipingSoilLayer[] aquitardLayers = GetConsecutiveAquitardLayers();
+ PipingSoilLayer[] coverageLayers = GetConsecutiveCoverageLayers();
- if (HasUniqueShiftAndDeviationSaturatedWeightDefinition(aquitardLayers))
+ if (HasUniqueShiftAndDeviationSaturatedWeightDefinition(coverageLayers))
{
- PipingSoilLayer topMostAquitardLayer = aquitardLayers.First();
+ PipingSoilLayer topMostAquitardLayer = coverageLayers.First();
volumicWeightDistribution.Shift = (RoundedDouble) topMostAquitardLayer.BelowPhreaticLevelShift;
volumicWeightDistribution.StandardDeviation = (RoundedDouble) topMostAquitardLayer.BelowPhreaticLevelDeviation;
var weightedMean = new RoundedDouble(volumicWeightDistribution.Mean.NumberOfDecimalPlaces,
GetWeightedMeanForVolumicWeightOfCoverageLayer(
- aquitardLayers,
+ coverageLayers,
input.StochasticSoilProfile.SoilProfile,
input.SurfaceLine.GetZAtL(input.ExitPointL)));
@@ -333,18 +334,33 @@
return new PipingSoilLayer[0];
}
- private PipingSoilLayer[] GetConsecutiveAquitardLayers()
+ private PipingSoilLayer[] GetConsecutiveCoverageLayers()
{
RingtoetsPipingSurfaceLine surfaceLine = input.SurfaceLine;
PipingSoilProfile soilProfile = input.StochasticSoilProfile != null ? input.StochasticSoilProfile.SoilProfile : null;
RoundedDouble exitPointL = input.ExitPointL;
+ var consecutiveCoverageLayers = new PipingSoilLayer[0];
+
if (surfaceLine != null && soilProfile != null && !double.IsNaN(exitPointL))
{
- return soilProfile.GetConsecutiveAquitardLayersBelowLevel(surfaceLine.GetZAtL(exitPointL)).ToArray();
+ PipingSoilLayer topAquifer = soilProfile
+ .GetConsecutiveAquiferLayersBelowLevel(surfaceLine.GetZAtL(exitPointL))
+ .FirstOrDefault();
+
+ PipingSoilLayer[] consecutiveAquitardLayersBelowLevel = soilProfile
+ .GetConsecutiveAquitardLayersBelowLevel(surfaceLine.GetZAtL(exitPointL))
+ .ToArray();
+
+ if (topAquifer != null
+ && consecutiveAquitardLayersBelowLevel.Any()
+ && topAquifer.Top < consecutiveAquitardLayersBelowLevel.First().Top)
+ {
+ consecutiveCoverageLayers = consecutiveAquitardLayersBelowLevel;
+ }
}
- return new PipingSoilLayer[0];
+ return consecutiveCoverageLayers;
}
private bool AlmostEquals(double a, double b)
Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs
===================================================================
diff -u -rc33fbb6a840ef596c665774b609f82b948f3b512 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision c33fbb6a840ef596c665774b609f82b948f3b512)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -20,10 +20,14 @@
// All rights reserved.
using System.Collections.Generic;
+using System.Linq;
+using Core.Common.Base.Data;
+using log4net;
using Ringtoets.Common.Service;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.KernelWrapper;
using Ringtoets.Piping.KernelWrapper.SubCalculator;
+using Ringtoets.Piping.Primitives;
using Ringtoets.Piping.Service.Properties;
using RingtoetsCommonServiceResources = Ringtoets.Common.Service.Properties.Resources;
@@ -56,6 +60,8 @@
return false;
}
+ CalculationServiceHelper.LogMessagesAsWarning(GetInputWarnings(calculation.InputParameters).ToArray());
+
var validationResults = new PipingCalculator(CreateInputFromData(calculation.InputParameters), PipingSubCalculatorFactory.Instance).Validate();
CalculationServiceHelper.LogMessagesAsError(Resources.Error_in_piping_validation_0, validationResults.ToArray());
@@ -154,11 +160,63 @@
{
validationResult.Add(Resources.PipingCalculationService_ValidateInput_Cannot_determine_thickness_coverage_layer);
}
+
+ var pipingSoilProfile = inputParameters.StochasticSoilProfile.SoilProfile;
+ var surfaceLevel = inputParameters.SurfaceLine.GetZAtL(inputParameters.ExitPointL);
+
+ if (pipingSoilProfile != null)
+ {
+ IEnumerable consecutiveAquiferLayersBelowLevel = pipingSoilProfile.GetConsecutiveAquiferLayersBelowLevel(surfaceLevel).ToArray();
+ IEnumerable consecutiveAquitardLayersBelowLevel = pipingSoilProfile.GetConsecutiveAquitardLayersBelowLevel(surfaceLevel).ToArray();
+
+ var hasAquiferLayers = consecutiveAquiferLayersBelowLevel.Any();
+ var hasAquitardLayers = consecutiveAquitardLayersBelowLevel.Any();
+
+ if (!hasAquiferLayers)
+ {
+ validationResult.Add(Resources.PipingCalculationService_ValidateInput_No_aquifer_layer_at_ExitPointL_under_SurfaceLine);
+ }
+ if (!hasAquitardLayers || (hasAquiferLayers && consecutiveAquiferLayersBelowLevel.First().Top > consecutiveAquitardLayersBelowLevel.First().Top))
+ {
+ validationResult.Add(Resources.PipingCalculationService_ValidateInput_No_coverage_layer_at_ExitPointL_under_SurfaceLine);
+ }
+ }
}
+
return validationResult;
}
+ private static List GetInputWarnings(PipingInput inputParameters)
+ {
+ List warnings = new List();
+
+ var exitPointL = inputParameters.ExitPointL;
+
+ var isSoilProfileMissing = inputParameters.StochasticSoilProfile == null;
+ var isSurfaceLineMissing = inputParameters.SurfaceLine == null;
+ var isExitPointLMissing = double.IsNaN(exitPointL);
+
+ if (!isSurfaceLineMissing && !isSoilProfileMissing && !isExitPointLMissing)
+ {
+ var pipingSoilProfile = inputParameters.StochasticSoilProfile.SoilProfile;
+ var surfaceLevel = inputParameters.SurfaceLine.GetZAtL(exitPointL);
+
+ IEnumerable consecutiveAquiferLayersBelowLevel = pipingSoilProfile.GetConsecutiveAquiferLayersBelowLevel(surfaceLevel);
+ IEnumerable consecutiveAquitardLayersBelowLevel = pipingSoilProfile.GetConsecutiveAquitardLayersBelowLevel(surfaceLevel);
+ if (consecutiveAquiferLayersBelowLevel.Count() > 1)
+ {
+ warnings.Add(Resources.PipingCalculationService_GetInputWarnings_Multiple_aquifer_layers_values_for_DiameterD70_and_DarcyPermeability_taken_from_top_layer);
+ }
+ if (consecutiveAquitardLayersBelowLevel.Count() > 1)
+ {
+ warnings.Add(Resources.PipingCalculationService_GetInputWarnings_Multiple_coverage_layers_values_for_saturated_weight_taken_as_weighted_mean_from_all_coverage_layers);
+ }
+ }
+
+ return warnings;
+ }
+
private static PipingCalculatorInput CreateInputFromData(PipingInput inputParameters)
{
return new PipingCalculatorInput(
Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.Designer.cs
===================================================================
diff -u -rc33fbb6a840ef596c665774b609f82b948f3b512 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c33fbb6a840ef596c665774b609f82b948f3b512)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.17929
+// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -79,6 +79,26 @@
}
///
+ /// Looks up a localized string similar to Meerdere aaneengesloten watervoerende lagen gevonden. De definities voor de korrelgrootte en doorlatendheid van de bovenste watervoerende laag worden gebruikt in de berekening..
+ ///
+ internal static string PipingCalculationService_GetInputWarnings_Multiple_aquifer_layers_values_for_DiameterD70_and_DarcyPermeability_taken_from_top_layer {
+ get {
+ return ResourceManager.GetString("PipingCalculationService_GetInputWarnings_Multiple_aquifer_layers_values_for_Diam" +
+ "eterD70_and_DarcyPermeability_taken_from_top_layer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Meerdere aaneengesloten deklagen gevonden. Het gewogen gemiddelde van de definities voor het verzadigd gewicht van de deklagen wordt gebruikt in de berekening..
+ ///
+ internal static string PipingCalculationService_GetInputWarnings_Multiple_coverage_layers_values_for_saturated_weight_taken_as_weighted_mean_from_all_coverage_layers {
+ get {
+ return ResourceManager.GetString("PipingCalculationService_GetInputWarnings_Multiple_coverage_layers_values_for_sat" +
+ "urated_weight_taken_as_weighted_mean_from_all_coverage_layers", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to Kan het toetspeil niet afleiden op basis van de invoer..
///
internal static string PipingCalculationService_ValidateInput_Cannot_determine_AssessmentLevel {
@@ -115,6 +135,26 @@
}
///
+ /// Looks up a localized string similar to Geen watervoerende laag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt..
+ ///
+ internal static string PipingCalculationService_ValidateInput_No_aquifer_layer_at_ExitPointL_under_SurfaceLine {
+ get {
+ return ResourceManager.GetString("PipingCalculationService_ValidateInput_No_aquifer_layer_at_ExitPointL_under_Surfa" +
+ "ceLine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Geen deklaag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt..
+ ///
+ internal static string PipingCalculationService_ValidateInput_No_coverage_layer_at_ExitPointL_under_SurfaceLine {
+ get {
+ return ResourceManager.GetString("PipingCalculationService_ValidateInput_No_coverage_layer_at_ExitPointL_under_Surf" +
+ "aceLine", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to Er is geen hydraulische randvoorwaardenlocatie geselecteerd..
///
internal static string PipingCalculationService_ValidateInput_No_HydraulicBoundaryLocation_selected {
Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.resx
===================================================================
diff -u -rc33fbb6a840ef596c665774b609f82b948f3b512 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.resx (.../Resources.resx) (revision c33fbb6a840ef596c665774b609f82b948f3b512)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.resx (.../Resources.resx) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -153,4 +153,16 @@
Er is geen waarde voor het uittredepunt opgegeven.
+
+ Geen deklaag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt.
+
+
+ Meerdere aaneengesloten watervoerende lagen gevonden. De definities voor de korrelgrootte en doorlatendheid van de bovenste watervoerende laag worden gebruikt in de berekening.
+
+
+ Meerdere aaneengesloten deklagen gevonden. Het gewogen gemiddelde van de definities voor het verzadigd gewicht van de deklagen wordt gebruikt in de berekening.
+
+
+ Geen watervoerende laag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt.
+
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingInputTest.cs
===================================================================
diff -u -r2363244674e6b7b97bead9a6855806420d368d80 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingInputTest.cs (.../DerivedPipingInputTest.cs) (revision 2363244674e6b7b97bead9a6855806420d368d80)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingInputTest.cs (.../DerivedPipingInputTest.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -628,8 +628,57 @@
Assert.IsNaN(result.Shift);
Assert.IsNaN(result.StandardDeviation);
}
+ [Test]
+ public void SaturatedVolumicWeightOfCoverageLayer_NoAquiferLayers_ReturnsNaNForParameters()
+ {
+ // Setup
+ var input = PipingCalculationFactory.CreateInputWithAquiferAndCoverageLayer();
+ var derivedInput = new DerivedPipingInput(input);
+ input.StochasticSoilProfile.SoilProfile = new PipingSoilProfile("", -2.0, new []
+ {
+ new PipingSoilLayer(1.0)
+ {
+ IsAquifer = false
+ }
+ }, SoilProfileType.SoilProfile1D, 0);
+ // Call
+ var result = derivedInput.SaturatedVolumicWeightOfCoverageLayer;
+
+ // Assert
+ Assert.IsNaN(result.Mean);
+ Assert.IsNaN(result.Shift);
+ Assert.IsNaN(result.StandardDeviation);
+ }
+
[Test]
+ public void SaturatedVolumicWeightOfCoverageLayer_NoCoverageLayersAboveTopAquiferLayer_ReturnsNaNForParameters()
+ {
+ // Setup
+ var input = PipingCalculationFactory.CreateInputWithAquiferAndCoverageLayer();
+ var derivedInput = new DerivedPipingInput(input);
+ input.StochasticSoilProfile.SoilProfile = new PipingSoilProfile("", -2.0, new []
+ {
+ new PipingSoilLayer(2.0)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(1.0)
+ {
+ IsAquifer = true
+ }
+ }, SoilProfileType.SoilProfile1D, 0);
+
+ // Call
+ var result = derivedInput.SaturatedVolumicWeightOfCoverageLayer;
+
+ // Assert
+ Assert.IsNaN(result.Mean);
+ Assert.IsNaN(result.Shift);
+ Assert.IsNaN(result.StandardDeviation);
+ }
+
+ [Test]
public void SaturatedVolumicWeightOfCoverageLayer_SingleLayer_ReturnsWithParametersFromLayer()
{
// Setup
@@ -647,6 +696,10 @@
BelowPhreaticLevelShift = shift,
BelowPhreaticLevelMean = belowPhreaticLevelMean
},
+ new PipingSoilLayer(0.5)
+ {
+ IsAquifer = true
+ },
}, SoilProfileType.SoilProfile1D, 0);
// Call
@@ -682,14 +735,18 @@
BelowPhreaticLevelDeviation = deviation,
BelowPhreaticLevelShift = shift,
BelowPhreaticLevelMean = belowPhreaticLevelMeanB
- }
+ },
+ new PipingSoilLayer(-1.5)
+ {
+ IsAquifer = true
+ },
}, SoilProfileType.SoilProfile1D, 0);
// Call
var result = derivedInput.SaturatedVolumicWeightOfCoverageLayer;
// Assert
- Assert.AreEqual((belowPhreaticLevelMeanA * 2.5 + belowPhreaticLevelMeanB * 1.5) / 4, result.Mean, result.Mean.GetAccuracy());
+ Assert.AreEqual((belowPhreaticLevelMeanA * 2.5 + belowPhreaticLevelMeanB * 1.0) / 3.5, result.Mean, result.Mean.GetAccuracy());
Assert.AreEqual(shift, result.Shift, result.Shift.GetAccuracy());
Assert.AreEqual(deviation, result.StandardDeviation, result.StandardDeviation.GetAccuracy());
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileExtensionsTest.cs
===================================================================
diff -u -r2363244674e6b7b97bead9a6855806420d368d80 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileExtensionsTest.cs (.../PipingSoilProfileExtensionsTest.cs) (revision 2363244674e6b7b97bead9a6855806420d368d80)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileExtensionsTest.cs (.../PipingSoilProfileExtensionsTest.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -20,6 +20,7 @@
// All rights reserved.
using System.Collections.Generic;
+using System.Linq;
using NUnit.Framework;
using Ringtoets.Piping.Primitives;
@@ -28,18 +29,124 @@
[TestFixture]
public class PipingSoilProfileExtensionsTest
{
+ private PipingSoilLayer[] testCaseTwoAquitard = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = false
+ }
+ };
+
+ private PipingSoilLayer[] testCaseTwoAquifer = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = true
+ }
+ };
+
+ private PipingSoilLayer[] testCaseOneAquiferOneAquitard = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = false
+ }
+ };
+
+ private PipingSoilLayer[] testCaseOneAquitardOneAquifer = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = true
+ }
+ };
+
+ private PipingSoilLayer[] testCaseOneAquifer = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = true
+ }
+ };
+
+ private PipingSoilLayer[] testCaseOneAquitard = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = false
+ }
+ };
+
+ private PipingSoilLayer[] testCaseOneAquiferOneAquitardOneAquifer = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(1.5)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = true
+ }
+ };
+
+ private PipingSoilLayer[] testCaseTwoAquiferOneAquitardOneAquifer = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(1.0)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(0.5)
+ {
+ IsAquifer = true
+ }
+ };
+
+ private PipingSoilLayer[] testCaseTwoAquitardOneAquiferOneAquitard = {
+ new PipingSoilLayer(2.1)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(1.1)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(1.0)
+ {
+ IsAquifer = true
+ },
+ new PipingSoilLayer(0.5)
+ {
+ IsAquifer = false
+ }
+ };
+
#region GetTopmostConsecutiveAquiferLayerThicknessBelowLevel
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_NoAquiferLayer_NaN()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1),
- new PipingSoilLayer(1.1)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.0);
@@ -52,15 +159,7 @@
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerAboveLevel_NaN()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquiferOneAquitard);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.0);
@@ -73,14 +172,7 @@
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerCompletelyBelowLevel_ReturnAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquifer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.2);
@@ -93,14 +185,7 @@
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerPartlyBelowLevel_ReturnAquiferLayerThicknessUpTillLevel()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquifer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.6);
@@ -113,176 +198,98 @@
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerTopEqualToLevel_ReturnAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(1.6)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquifer);
// Call
- double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.6);
+ double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.1);
// Assert
- Assert.AreEqual(1.6, result, 1e-6);
+ Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
+ public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AquiferLayerBottomEqualToLevel_NaN()
+ {
+ // Setup
+ var profile = CreateTestProfile(testCaseOneAquifer);
+
+ // Call
+ double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(0.0);
+
+ // Assert
+ Assert.IsNaN(result);
+ }
+
+ [Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TwoAquiferLayersCompletelyBelowLevel_ReturnConsecutiveAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(0.5)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.2);
// Assert
- Assert.AreEqual(1.6, result, 1e-6);
+ Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerTopEqualToLevel_ReturnConsecutiveAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(0.5)
- {
- IsAquifer = false
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.1);
// Assert
- Assert.AreEqual(1.6, result, 1e-6);
+ Assert.AreEqual(2.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerTopPartlyBelowLevel_ReturnConsecutiveAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(0.5)
- {
- IsAquifer = false
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(2.0);
// Assert
- Assert.AreEqual(1.5, result, 1e-6);
+ Assert.AreEqual(2.0, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerCompletelyAboveLevel_ReturnBottomAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.5)
- {
- IsAquifer = false
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.3);
+ double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(0.5);
// Assert
- Assert.AreEqual(1.1, result, 1e-6);
+ Assert.AreEqual(0.5, result, 1e-6);
}
[Test]
- public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TopmostAquiferLayerPartlyAboveLevel_ReturnConsecutiveAquiferLayerThicknessUpTillLevel()
+ public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_BottomAquiferLayerTopEqualToLevel_BottomAquiferLayerThickness()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.5);
+ double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.1);
// Assert
- Assert.AreEqual(1.5, result, 1e-6);
+ Assert.AreEqual(1.1, result, 1e-6);
}
[Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_TwoConsecutiveAquiferLayersAndOneNonConsecutiveAquiferLayer_ReturnConsecutiveAquiferLayerThicknessUpTillLevel()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.0),
- new PipingSoilLayer(0.5)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquiferOneAquitardOneAquifer);
// Call
double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.5);
@@ -292,72 +299,13 @@
}
[Test]
- public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_AllAquiferLayersAboveLevel_NaN()
- {
- // Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(0.6)
- {
- IsAquifer = false
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
-
- // Call
- double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(0.5);
-
- // Assert
- Assert.IsNaN(result);
- }
-
- [Test]
- public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_BottomAquiferLayerTopEqualToLevel_BottomAquiferLayerThickness()
- {
- // Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
-
- // Call
- double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(1.1);
-
- // Assert
- Assert.AreEqual(1.1, result, 1e-6);
- }
-
- [Test]
public void GetTopmostConsecutiveAquiferLayerThicknessBelowLevel_LevelBelowProfile_NaN()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.5, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(0.0);
+ double result = profile.GetTopmostConsecutiveAquiferLayerThicknessBelowLevel(-1.0);
// Assert
Assert.IsNaN(result);
@@ -368,15 +316,10 @@
#region GetConsecutiveAquiferLayersBelowLevel
[Test]
- public void GetConsecutiveAquiferLayersBelowLevel_NoAquiferLayer_ReturnsEmptyCollection()
+ public void GetConsecutiveAquiferLayersBelowLevel_NoAquiferLayer_ReturnEmptyCollection()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1),
- new PipingSoilLayer(1.1)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.0);
@@ -386,18 +329,10 @@
}
[Test]
- public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerAboveLevel_ReturnsEmptyCollection()
+ public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerAboveLevel_ReturnEmptyCollection()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquiferOneAquitard);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.0);
@@ -410,632 +345,323 @@
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerCompletelyBelowLevel_ReturnAquiferLayer()
{
// Setup
- var aquiferLayer = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayer
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquifer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.2);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayer }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(0) }, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerPartlyBelowLevel_ReturnCollectionWithAquiferLayer()
{
// Setup
- var aquiferLayer = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayer
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquifer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.6);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayer }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(0) }, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerTopEqualToLevel_ReturnCollectionWithAquiferLayer()
{
// Setup
- var aquiferLayer = new PipingSoilLayer(1.6)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayer
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquifer);
// Call
- IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.6);
+ IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.1);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayer }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(0) }, result);
}
[Test]
+ public void GetConsecutiveAquiferLayersBelowLevel_AquiferLayerBottomEqualToLevel_ReturnEmptyCollection()
+ {
+ // Setup
+ var profile = CreateTestProfile(testCaseOneAquifer);
+
+ // Call
+ IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(0.0);
+
+ // Assert
+ Assert.IsEmpty(result);
+ }
+
+ [Test]
public void GetConsecutiveAquiferLayersBelowLevel_TwoAquiferLayersCompletelyBelowLevel_ReturnConsecutiveAquiferLayers()
{
// Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- aquiferLayerB,
- new PipingSoilLayer(0.5)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.2);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerA, aquiferLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerTopEqualToLevel_ReturnConsecutiveAquiferLayers()
{
// Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- aquiferLayerB,
- new PipingSoilLayer(0.5)
- {
- IsAquifer = false
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.1);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerA, aquiferLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerTopPartlyBelowLevel_ReturnCollectionWithAquiferLayer()
{
// Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- aquiferLayerB,
- new PipingSoilLayer(0.5)
- {
- IsAquifer = false
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(2.0);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerA, aquiferLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerCompletelyAboveLevel_ReturnCollectionWithoutTopmostAquiferLayer()
{
// Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- new PipingSoilLayer(1.5)
- {
- IsAquifer = false
- },
- aquiferLayerB
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.3);
+ IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(0.5);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerB }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(1) }, result);
}
-
+
[Test]
- public void GetConsecutiveAquiferLayersBelowLevel_TopmostAquiferLayerPartlyAboveLevel_ReturnCollectionWithTopmostAquiferLayer()
+ public void GetConsecutiveAquiferLayersBelowLevel_BottomAquiferLayerTopEqualToLevel_ReturnCollectionWithBottomAquiferLayer()
{
// Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- aquiferLayerB
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.5);
+ IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.1);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerA, aquiferLayerB }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(1) }, result);
}
[Test]
public void GetConsecutiveAquiferLayersBelowLevel_TwoConsecutiveAquiferLayersAndOneNonConsecutiveAquiferLayer_ReturnConsecutiveAquiferLayers()
{
// Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- aquiferLayerB,
- new PipingSoilLayer(1.0),
- new PipingSoilLayer(0.5)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquiferOneAquitardOneAquifer);
// Call
IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.5);
// Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerA, aquiferLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
- public void GetConsecutiveAquiferLayersBelowLevel_AllAquiferLayersAboveLevel_ReturnsEmptyCollection()
+ public void GetConsecutiveAquiferLayersBelowLevel_LevelBelowProfile_ReturnEmptyCollection()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(0.6)
- {
- IsAquifer = false
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(0.5);
+ IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(-1.0);
// Assert
Assert.IsEmpty(result);
}
- [Test]
- public void GetConsecutiveAquiferLayersBelowLevel_BottomAquiferLayerTopEqualToLevel_ReturnsCollectionWithBottomAquiferLayer()
- {
- // Setup
- var aquiferLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- };
- var aquiferLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- };
- var pipingSoilLayers = new[]
- {
- aquiferLayerA,
- aquiferLayerB
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ #endregion
- // Call
- IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(1.1);
+ #region GetConsecutiveAquitardLayersBelowLevel
- // Assert
- CollectionAssert.AreEqual(new[] { aquiferLayerB }, result);
- }
-
[Test]
- public void GetConsecutiveAquiferLayersBelowLevel_LevelBelowProfile_ReturnsEmptyCollection()
+ public void GetConsecutiveAquitardLayersBelowLevel_NoAquitardLayer_ReturnEmptyCollection()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.5, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquifer);
// Call
- IEnumerable result = profile.GetConsecutiveAquiferLayersBelowLevel(0.0);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.0);
// Assert
Assert.IsEmpty(result);
}
- #endregion
-
- #region GetConsecutiveAquitardLayersBelowLevel
-
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_NoAquitardLayer_ReturnsEmptyCollection()
+ public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerAboveLevel_ReturnEmptyCollection()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquitardOneAquifer);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.0);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.1);
// Assert
Assert.IsEmpty(result);
}
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerAboveLevel_ReturnsEmptyCollection()
+ public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerCompletelyBelowLevel_ReturnAquitardLayer()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1),
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.0);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(2.2);
// Assert
- Assert.IsEmpty(result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerCompletelyBelowLevel_ReturnAquitardLayer()
+ public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
- var aquitardLayer = new PipingSoilLayer(2.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayer
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(2.2);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.6);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayer }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
+ public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerTopEqualToLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
- var aquitardLayer = new PipingSoilLayer(2.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayer
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.6);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(2.1);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayer }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerTopEqualToLevel_ReturnCollectionWithAquitardLayer()
+ public void GetConsecutiveAquitardLayersBelowLevel_AquitardLayerBottomEqualToLevel_ReturnEmptyCollection()
{
// Setup
- var aquitardLayer = new PipingSoilLayer(1.6);
- var pipingSoilLayers = new[]
- {
- aquitardLayer
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseOneAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.6);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(0.0);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayer }, result);
+ Assert.IsEmpty(result);
}
[Test]
public void GetConsecutiveAquitardLayersBelowLevel_TwoAquitardLayersCompletelyBelowLevel_ReturnConsecutiveAquitardLayers()
{
// Setup
- var aquitardLayerA = new PipingSoilLayer(2.1);
- var aquitardLayerB = new PipingSoilLayer(1.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- aquitardLayerB,
- new PipingSoilLayer(0.5)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(2.2);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerA, aquitardLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquitardLayersBelowLevel_TopmostAquitardLayerTopEqualToLevel_ReturnConsecutiveAquitardLayers()
{
// Setup
- var aquitardLayerA = new PipingSoilLayer(2.1);
- var aquitardLayerB = new PipingSoilLayer(1.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- aquitardLayerB,
- new PipingSoilLayer(0.5)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(2.1);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerA, aquitardLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquitardLayersBelowLevel_TopmostAquitardLayerTopPartlyBelowLevel_ReturnCollectionWithAquitardLayer()
{
// Setup
- var aquitardLayerA = new PipingSoilLayer(2.1);
- var aquitardLayerB = new PipingSoilLayer(1.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- aquitardLayerB,
- new PipingSoilLayer(0.5)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(2.0);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerA, aquitardLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers, result);
}
[Test]
public void GetConsecutiveAquitardLayersBelowLevel_TopmostAquitardLayerCompletelyAboveLevel_ReturnCollectionWithoutTopmostAquitardLayer()
{
// Setup
- var aquitardLayerA = new PipingSoilLayer(2.1);
- var aquitardLayerB = new PipingSoilLayer(1.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- new PipingSoilLayer(1.5)
- {
- IsAquifer = true
- },
- aquitardLayerB
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.3);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(0.5);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerB }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(1) }, result);
}
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_TopmostAquitardLayerPartlyAboveLevel_ReturnCollectionWithTopmostAquitardLayer()
+ public void GetConsecutiveAquitardLayersBelowLevel_BottomAquitardLayerTopEqualToLevel_ReturnCollectionWithBottomAquitardLayer()
{
// Setup
- var aquitardLayerA = new PipingSoilLayer(2.1);
- var aquitardLayerB = new PipingSoilLayer(1.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- aquitardLayerB
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.5);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.1);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerA, aquitardLayerB }, result);
+ CollectionAssert.AreEqual(new[] { profile.Layers.ElementAt(1) }, result);
}
[Test]
public void GetConsecutiveAquitardLayersBelowLevel_TwoConsecutiveAquitardLayersAndOneNonConsecutiveAquitardLayer_ReturnConsecutiveAquitardLayers()
{
// Setup
- var aquitardLayerA = new PipingSoilLayer(2.1);
- var aquitardLayerB = new PipingSoilLayer(1.1);
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- aquitardLayerB,
- new PipingSoilLayer(1.0)
- {
- IsAquifer = true
- },
- new PipingSoilLayer(0.5)
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitardOneAquiferOneAquitard);
// Call
IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.5);
// Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerA, aquitardLayerB }, result);
+ CollectionAssert.AreEqual(profile.Layers.Take(2), result);
}
[Test]
- public void GetConsecutiveAquitardLayersBelowLevel_AllAquitardLayersAboveLevel_ReturnsEmptyCollection()
+ public void GetConsecutiveAquitardLayersBelowLevel_LevelBelowProfile_ReturnEmptyCollection()
{
// Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(2.1)
- {
- IsAquifer = false
- },
- new PipingSoilLayer(1.1)
- {
- IsAquifer = false
- },
- new PipingSoilLayer(0.6)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ var profile = CreateTestProfile(testCaseTwoAquitard);
// Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(0.5);
+ IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(-1.0);
// Assert
Assert.IsEmpty(result);
}
- [Test]
- public void GetConsecutiveAquitardLayersBelowLevel_BottomAquitardLayerTopEqualToLevel_ReturnsCollectionWithBottomAquitardLayer()
- {
- // Setup
- var aquitardLayerA = new PipingSoilLayer(2.1)
- {
- IsAquifer = false
- };
- var aquitardLayerB = new PipingSoilLayer(1.1)
- {
- IsAquifer = false
- };
- var pipingSoilLayers = new[]
- {
- aquitardLayerA,
- aquitardLayerB
- };
- var profile = new PipingSoilProfile(string.Empty, 0.0, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
+ #endregion
- // Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(1.1);
-
- // Assert
- CollectionAssert.AreEqual(new[] { aquitardLayerB }, result);
- }
-
- [Test]
- public void GetConsecutiveAquitardLayersBelowLevel_LevelBelowProfile_ReturnsEmptyCollection()
+ private PipingSoilProfile CreateTestProfile(PipingSoilLayer[] layers)
{
- // Setup
- var pipingSoilLayers = new[]
- {
- new PipingSoilLayer(1.1)
- {
- IsAquifer = true
- }
- };
- var profile = new PipingSoilProfile(string.Empty, 0.5, pipingSoilLayers, SoilProfileType.SoilProfile1D, 0);
-
- // Call
- IEnumerable result = profile.GetConsecutiveAquitardLayersBelowLevel(0.0);
-
- // Assert
- Assert.IsEmpty(result);
+ return new PipingSoilProfile(string.Empty, 0.0, layers, SoilProfileType.SoilProfile1D, 0);
}
-
- #endregion
-
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs
===================================================================
diff -u -rc33fbb6a840ef596c665774b609f82b948f3b512 -r6744bc3cd2ffd54b89e8ee19c2953059ae698e80
--- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision c33fbb6a840ef596c665774b609f82b948f3b512)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 6744bc3cd2ffd54b89e8ee19c2953059ae698e80)
@@ -30,6 +30,7 @@
using Ringtoets.Piping.KernelWrapper.SubCalculator;
using Ringtoets.Piping.KernelWrapper.TestUtil;
using Ringtoets.Piping.KernelWrapper.TestUtil.SubCalculator;
+using Ringtoets.Piping.Primitives;
namespace Ringtoets.Piping.Service.Test
{
@@ -245,8 +246,9 @@
calculation.InputParameters.StochasticSoilProfile = null;
calculation.Name = name;
- // Call
bool isValid = false;
+
+ // Call
Action call = () => isValid = PipingCalculationService.Validate(calculation);
// Assert
@@ -262,18 +264,142 @@
}
[Test]
- public void PerformValidatedCalculation_ValidPipingCalculation_LogStartAndEndOfValidatingInputsAndCalculation()
+ public void Validate_CalculationWithoutAquiferLayer_LogsErrorAndReturnsFalse()
{
// Setup
const string name = "";
+
+ PipingCalculation calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+ calculation.InputParameters.StochasticSoilProfile.SoilProfile = new PipingSoilProfile(
+ string.Empty,
+ 0.0,
+ new[]
+ {
+ new PipingSoilLayer(2.0)
+ {
+ IsAquifer = false
+ },
+ },
+ SoilProfileType.SoilProfile1D,
+ -1);
+ calculation.Name = name;
+ bool isValid = false;
+
+ // Call
+ Action call = () => isValid = PipingCalculationService.Validate(calculation);
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ var msgs = messages.ToArray();
+ Assert.AreEqual(5, msgs.Length);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' gestart om: ", name), msgs.First());
+ StringAssert.StartsWith("Validatie mislukt: Kan de dikte van het watervoerend pakket niet afleiden op basis van de invoer.", msgs[1]);
+ StringAssert.StartsWith("Validatie mislukt: Kan de totale deklaagdikte bij het uittredepunt niet afleiden op basis van de invoer.", msgs[2]);
+ StringAssert.StartsWith("Validatie mislukt: Geen watervoerende laag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt.", msgs[3]);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' beëindigd om: ", name), msgs.Last());
+ });
+ Assert.IsFalse(isValid);
+ }
+
+ [Test]
+ public void Validate_CalculationWithoutAquitardLayer_LogsErrorAndReturnsFalse()
+ {
+ // Setup
+ const string name = "";
+
+ PipingCalculation calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+ calculation.InputParameters.StochasticSoilProfile.SoilProfile = new PipingSoilProfile(
+ string.Empty,
+ 0.0,
+ new[]
+ {
+ new PipingSoilLayer(2.0)
+ {
+ IsAquifer = true
+ },
+ },
+ SoilProfileType.SoilProfile1D,
+ -1);
+ calculation.Name = name;
+
+ bool isValid = false;
+
+ // Call
+ Action call = () => isValid = PipingCalculationService.Validate(calculation);
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ var msgs = messages.ToArray();
+ Assert.AreEqual(4, msgs.Length);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' gestart om: ", name), msgs.First());
+ StringAssert.StartsWith("Validatie mislukt: Kan de totale deklaagdikte bij het uittredepunt niet afleiden op basis van de invoer.", msgs[1]);
+ StringAssert.StartsWith("Validatie mislukt: Geen deklaag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt.", msgs[2]);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' beëindigd om: ", name), msgs.Last());
+ });
+ Assert.IsFalse(isValid);
+ }
+
+ [Test]
+ public void Validate_CalculationWithoutCoverageLayer_LogsErrorAndReturnsFalse()
+ {
+ // Setup
+ const string name = "";
+
+ PipingCalculation calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+ calculation.InputParameters.StochasticSoilProfile.SoilProfile = new PipingSoilProfile(
+ string.Empty,
+ 0.0,
+ new[]
+ {
+ new PipingSoilLayer(13.0)
+ {
+ IsAquifer = false
+ },
+ new PipingSoilLayer(11.0)
+ {
+ IsAquifer = true
+ },
+ },
+ SoilProfileType.SoilProfile1D,
+ -1);
+ calculation.Name = name;
+
+ bool isValid = false;
+
+ // Call
+ Action call = () => isValid = PipingCalculationService.Validate(calculation);
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ var msgs = messages.ToArray();
+ Assert.AreEqual(4, msgs.Length);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' gestart om: ", name), msgs.First());
+ StringAssert.StartsWith("Validatie mislukt: Kan de totale deklaagdikte bij het uittredepunt niet afleiden op basis van de invoer.", msgs[1]);
+ StringAssert.StartsWith("Validatie mislukt: Geen deklaag gevonden voor de ondergrondschematisatie onder de profielschematisatie bij het uittredepunt.", msgs[2]);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' beëindigd om: ", name), msgs.Last());
+ });
+ Assert.IsFalse(isValid);
+ }
+
+ [Test]
+ public void Calculate_ValidPipingCalculation_LogStartAndEndOfValidatingInputsAndCalculation()
+ {
+ // Setup
+ const string name = "";
+
PipingCalculation validPipingCalculation = PipingCalculationFactory.CreateCalculationWithValidInput();
validPipingCalculation.Name = name;
- // Call
Action call = () =>
{
+ // Precondition
Assert.IsTrue(PipingCalculationService.Validate(validPipingCalculation));
+
+ // Call
PipingCalculationService.Calculate(validPipingCalculation);
};
@@ -290,33 +416,35 @@
}
[Test]
- public void PerformValidatedCalculation_ValidPipingCalculationNoOutput_ShouldSetOutput()
+ public void Calculate_ValidPipingCalculationNoOutput_ShouldSetOutput()
{
// Setup
PipingCalculation validPipingCalculation = PipingCalculationFactory.CreateCalculationWithValidInput();
// Precondition
Assert.IsNull(validPipingCalculation.Output);
+ Assert.IsTrue(PipingCalculationService.Validate(validPipingCalculation));
// Call
- Assert.IsTrue(PipingCalculationService.Validate(validPipingCalculation));
PipingCalculationService.Calculate(validPipingCalculation);
// Assert
Assert.IsNotNull(validPipingCalculation.Output);
}
[Test]
- public void PerformValidatedCalculation_ValidPipingCalculationWithOutput_ShouldChangeOutput()
+ public void Calculate_ValidPipingCalculationWithOutput_ShouldChangeOutput()
{
// Setup
var output = new TestPipingOutput();
PipingCalculation validPipingCalculation = PipingCalculationFactory.CreateCalculationWithValidInput();
validPipingCalculation.Output = output;
- // Call
+ // Precondition
Assert.IsTrue(PipingCalculationService.Validate(validPipingCalculation));
+
+ // Call
PipingCalculationService.Calculate(validPipingCalculation);
// Assert