Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs =================================================================== diff -u -re4e0e6f48ce1decab5f8a3831d8663abc1799fbb -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs (.../MacroStabilityInwardsInputValidator.cs) (revision e4e0e6f48ce1decab5f8a3831d8663abc1799fbb) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs (.../MacroStabilityInwardsInputValidator.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -21,7 +21,10 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; +using Core.Common.Base; +using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Ringtoets.Common.Service; using Ringtoets.Common.Service.ValidationRules; @@ -60,6 +63,7 @@ if (!coreValidationError.Any()) { validationResults.AddRange(ValidateSoilLayers(inputParameters)); + validationResults.AddRange(ValidateZoneBoundaries(inputParameters)); validationResults.AddRange(ValidateTangentLines(inputParameters)); } @@ -88,6 +92,31 @@ } } + private static IEnumerable ValidateZoneBoundaries(MacroStabilityInwardsInput inputParameters) + { + if (!inputParameters.CreateZones + || inputParameters.ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic) + { + yield break; + } + + RoundedDouble zoneBoundaryLeft = inputParameters.ZoneBoundaryLeft; + RoundedDouble zoneBoundaryRight = inputParameters.ZoneBoundaryRight; + + if (zoneBoundaryLeft > zoneBoundaryRight) + { + yield return Resources.MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_BoundaryLeft_should_be_smaller_than_or_equal_to_BoundaryRight; + } + + MacroStabilityInwardsSurfaceLine surfaceLine = inputParameters.SurfaceLine; + if (!surfaceLine.ValidateInRange(zoneBoundaryLeft) || !surfaceLine.ValidateInRange(zoneBoundaryRight)) + { + var validityRange = new Range(surfaceLine.LocalGeometry.First().X, surfaceLine.LocalGeometry.Last().X); + yield return string.Format(Resources.MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_must_be_in_Range_0, + validityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture)); + } + } + private static IEnumerable ValidateTangentLines(MacroStabilityInwardsInput inputParameters) { if (inputParameters.TangentLineZTop == inputParameters.TangentLineZBottom