Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilLayerTransformerTest.cs =================================================================== diff -u -r868b45ff456a9f30061487dacfe75d003b3a9e4e -r002a45b294481f03e3d7a9eb7469f5fae367e39b --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilLayerTransformerTest.cs (.../MacroStabilityInwardsSoilLayerTransformerTest.cs) (revision 868b45ff456a9f30061487dacfe75d003b3a9e4e) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilLayerTransformerTest.cs (.../MacroStabilityInwardsSoilLayerTransformerTest.cs) (revision 002a45b294481f03e3d7a9eb7469f5fae367e39b) @@ -341,6 +341,22 @@ } [Test] + [TestCaseSource(nameof(InvalidStochasticDistributionValuesSoilLayer1D))] + public void SoilLayer1DTransform_InvalidStochasticDistributionValues_ThrowImportedDataTransformException(SoilLayer1D layer, string parameter) + { + // Call + TestDelegate test = () => MacroStabilityInwardsSoilLayerTransformer.Transform(layer); + + // Assert + Exception exception = Assert.Throws(test); + + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + string expectedMessage = $"Er is een fout opgetreden bij het inlezen van grondlaag '{layer.MaterialName}' voor parameter '{parameter}': {innerException.Message}"; + Assert.AreEqual(expectedMessage, exception.Message); + } + + [Test] public void SoilLayer2DTransform_SoilLayer2DNull_ThrowsArgumentNullException() { // Call @@ -590,6 +606,22 @@ Assert.IsInstanceOf(exception.InnerException); } + [Test] + [TestCaseSource(nameof(InvalidStochasticDistributionValuesSoilLayer2D))] + public void SoilLayer2DTransform_InvalidStochasticDistributionValues_ThrowImportedDataTransformException(SoilLayer2D layer, string parameter) + { + // Call + TestDelegate test = () => MacroStabilityInwardsSoilLayerTransformer.Transform(layer); + + // Assert + Exception exception = Assert.Throws(test); + + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + string expectedMessage = $"Er is een fout opgetreden bij het inlezen van grondlaag '{layer.MaterialName}' voor parameter '{parameter}': {innerException.Message}"; + Assert.AreEqual(expectedMessage, exception.Message); + } + private static SoilLayer2DLoop CreateRandomLoop(int seed) { var random = new Random(seed); @@ -756,6 +788,65 @@ #endregion + #region Distribution properties + + private static IEnumerable InvalidStochasticDistributionValuesSoilLayer1D() + { + return InvalidStochasticDistributionValues(() => SoilLayer1DTestFactory.CreateSoilLayer1DWithValidAquifer(), nameof(SoilLayer1D)); + } + + private static IEnumerable InvalidStochasticDistributionValuesSoilLayer2D() + { + return InvalidStochasticDistributionValues(SoilLayer2DTestFactory.CreateSoilLayer2D, nameof(SoilLayer2D)); + } + + private static IEnumerable InvalidStochasticDistributionValues(Func soilLayer, string typeName) + { + const string testNameFormat = "{0}Transform_InvalidStochasticDistributionValues{{1}}_ThrowsImportedDataTransformException"; + const double invalidMean = 0; + + SoilLayerBase invalidCohesion = soilLayer(); + invalidCohesion.CohesionMean = invalidMean; + yield return new TestCaseData(invalidCohesion, "Cohesie" + ).SetName(string.Format(testNameFormat, typeName)); + + SoilLayerBase invalidFrictionAngle = soilLayer(); + invalidFrictionAngle.FrictionAngleMean = invalidMean; + yield return new TestCaseData(invalidFrictionAngle, "Wrijvingshoek" + ).SetName(string.Format(testNameFormat, typeName)); + + SoilLayerBase invalidShearStrengthRatio = soilLayer(); + invalidShearStrengthRatio.ShearStrengthRatioMean = invalidMean; + yield return new TestCaseData(invalidShearStrengthRatio, "Schuifsterkte ratio (S)" + ).SetName(string.Format(testNameFormat, typeName)); + + SoilLayerBase invalidStrengthIncreaseExponent = soilLayer(); + invalidStrengthIncreaseExponent.StrengthIncreaseExponentMean = invalidMean; + yield return new TestCaseData(invalidStrengthIncreaseExponent, "Sterkte toename exp (m)" + ).SetName(string.Format(testNameFormat, typeName)); + + SoilLayerBase invalidPop = soilLayer(); + invalidPop.PopMean = invalidMean; + yield return new TestCaseData(invalidPop, "POP" + ).SetName(string.Format(testNameFormat, typeName)); + + const double validMean = 1; + const double invalidShift = 2; + SoilLayerBase invalidBelowPhreaticLevel = soilLayer(); + invalidBelowPhreaticLevel.BelowPhreaticLevelMean = validMean; + invalidBelowPhreaticLevel.BelowPhreaticLevelShift = invalidShift; + yield return new TestCaseData(invalidBelowPhreaticLevel, "Verzadigd gewicht") + .SetName(string.Format(testNameFormat, typeName)); + + SoilLayerBase invalidAbovePhreaticLevel = soilLayer(); + invalidAbovePhreaticLevel.AbovePhreaticLevelMean = validMean; + invalidAbovePhreaticLevel.AbovePhreaticLevelShift = invalidShift; + yield return new TestCaseData(invalidAbovePhreaticLevel, "Onverzadigd gewicht") + .SetName(string.Format(testNameFormat, typeName)); + } + + #endregion + #region Test Data: Shifted Log Normal Distributions private static IEnumerable IncorrectShiftedLogNormalDistributionsSoilLayer1D()