Index: Riskeer/Revetment/src/Riskeer.Revetment.Data/Properties/Resources.Designer.cs
===================================================================
diff -u -rd1b677c4bef119458dc4ec64058c68dd508578e3 -rca27aad321f52f827c76143342c222946e587f7f
--- Riskeer/Revetment/src/Riskeer.Revetment.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d1b677c4bef119458dc4ec64058c68dd508578e3)
+++ Riskeer/Revetment/src/Riskeer.Revetment.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ca27aad321f52f827c76143342c222946e587f7f)
@@ -82,6 +82,15 @@
}
///
+ /// Looks up a localized string similar to De waarde voor de stapgrootte moet in het bereik {0} liggen..
+ ///
+ internal static string StepSize_Value_needs_to_be_in_Range_0_ {
+ get {
+ return ResourceManager.GetString("StepSize_Value_needs_to_be_in_Range_0_", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to De bovengrens van de bekleding moet boven de ondergrens liggen..
///
internal static string WaveConditionsInput_ValidateRevetmentBoundaries_Upper_boundary_revetment_must_be_above_lower_boundary_revetment {
Index: Riskeer/Revetment/src/Riskeer.Revetment.Data/Properties/Resources.resx
===================================================================
diff -u -rbf1fde9d2147a6eeaecebbb371be2c4856759159 -rca27aad321f52f827c76143342c222946e587f7f
--- Riskeer/Revetment/src/Riskeer.Revetment.Data/Properties/Resources.resx (.../Resources.resx) (revision bf1fde9d2147a6eeaecebbb371be2c4856759159)
+++ Riskeer/Revetment/src/Riskeer.Revetment.Data/Properties/Resources.resx (.../Resources.resx) (revision ca27aad321f52f827c76143342c222946e587f7f)
@@ -132,4 +132,7 @@
2.0
+
+ De waarde voor de stapgrootte moet in het bereik {0} liggen.
+
\ No newline at end of file
Index: Riskeer/Revetment/src/Riskeer.Revetment.Data/WaveConditionsInput.cs
===================================================================
diff -u -rd1b677c4bef119458dc4ec64058c68dd508578e3 -rca27aad321f52f827c76143342c222946e587f7f
--- Riskeer/Revetment/src/Riskeer.Revetment.Data/WaveConditionsInput.cs (.../WaveConditionsInput.cs) (revision d1b677c4bef119458dc4ec64058c68dd508578e3)
+++ Riskeer/Revetment/src/Riskeer.Revetment.Data/WaveConditionsInput.cs (.../WaveConditionsInput.cs) (revision ca27aad321f52f827c76143342c222946e587f7f)
@@ -44,12 +44,18 @@
new RoundedDouble(orientationNumberOfDecimals),
new RoundedDouble(orientationNumberOfDecimals, 360));
+ private const int stepSizeNumberOfDecimals = 2;
+ private static readonly Range stepSizeValidityRange = new Range(
+ new RoundedDouble(stepSizeNumberOfDecimals, 0.01),
+ new RoundedDouble(stepSizeNumberOfDecimals, 2.0));
+
private ForeshoreProfile foreshoreProfile;
private RoundedDouble upperBoundaryRevetment;
private RoundedDouble lowerBoundaryRevetment;
private RoundedDouble upperBoundaryWaterLevels;
private RoundedDouble lowerBoundaryWaterLevels;
private RoundedDouble orientation;
+ private RoundedDouble stepSize;
///
/// Creates a new instance of .
@@ -60,7 +66,7 @@
upperBoundaryRevetment = new RoundedDouble(2, double.NaN);
lowerBoundaryRevetment = new RoundedDouble(2, double.NaN);
- StepSize = WaveConditionsInputStepSize.Half;
+ stepSize = new RoundedDouble(stepSizeNumberOfDecimals, 0.5);
upperBoundaryWaterLevels = new RoundedDouble(2, double.NaN);
lowerBoundaryWaterLevels = new RoundedDouble(2, double.NaN);
WaterLevelType = WaveConditionsInputWaterLevelType.None;
@@ -133,8 +139,22 @@
///
/// Gets or sets the step size used for determining water levels.
///
- public WaveConditionsInputStepSize StepSize { get; set; }
+ public RoundedDouble StepSize
+ {
+ get => stepSize;
+ set
+ {
+ RoundedDouble newStepSize = value.ToPrecision(stepSizeNumberOfDecimals);
+ if (double.IsNaN(newStepSize) || !stepSizeValidityRange.InRange(newStepSize))
+ {
+ throw new ArgumentOutOfRangeException(null, string.Format(Resources.StepSize_Value_needs_to_be_in_Range_0_,
+ stepSizeValidityRange));
+ }
+ stepSize = newStepSize;
+ }
+ }
+
///
/// Gets or sets the lower boundary of the water levels range.
///
Index: Riskeer/Revetment/test/Riskeer.Revetment.Data.Test/WaveConditionsInputTest.cs
===================================================================
diff -u -rd1b677c4bef119458dc4ec64058c68dd508578e3 -rca27aad321f52f827c76143342c222946e587f7f
--- Riskeer/Revetment/test/Riskeer.Revetment.Data.Test/WaveConditionsInputTest.cs (.../WaveConditionsInputTest.cs) (revision d1b677c4bef119458dc4ec64058c68dd508578e3)
+++ Riskeer/Revetment/test/Riskeer.Revetment.Data.Test/WaveConditionsInputTest.cs (.../WaveConditionsInputTest.cs) (revision ca27aad321f52f827c76143342c222946e587f7f)
@@ -68,7 +68,8 @@
Assert.AreEqual(2, input.LowerBoundaryWaterLevels.NumberOfDecimalPlaces);
Assert.IsNaN(input.UpperBoundaryWaterLevels.Value);
Assert.AreEqual(2, input.UpperBoundaryWaterLevels.NumberOfDecimalPlaces);
- Assert.AreEqual(WaveConditionsInputStepSize.Half, input.StepSize);
+ Assert.AreEqual(0.5, input.StepSize);
+ Assert.AreEqual(2, input.StepSize.NumberOfDecimalPlaces);
Assert.AreEqual(WaveConditionsInputWaterLevelType.None, input.WaterLevelType);
Assert.IsNull(input.CalculationsTargetProbability);
}
@@ -337,6 +338,46 @@
}
[Test]
+ [TestCase(2.004)]
+ [TestCase(2.0)]
+ [TestCase(0.01)]
+ [TestCase(0.005)]
+ public void StepSize_ValidValue_NewValueSet(double stepSize)
+ {
+ // Setup
+ var input = new WaveConditionsInput();
+
+ // Call
+ input.StepSize = (RoundedDouble) stepSize;
+
+ // Assert
+ Assert.AreEqual(2, input.StepSize.NumberOfDecimalPlaces);
+ Assert.AreEqual(stepSize, input.StepSize, input.StepSize.GetAccuracy());
+ }
+
+ [Test]
+ [SetCulture("nl-NL")]
+ [TestCase(double.NaN)]
+ [TestCase(5)]
+ [TestCase(2.01)]
+ [TestCase(0.004)]
+ [TestCase(0)]
+ [TestCase(double.PositiveInfinity)]
+ [TestCase(double.NegativeInfinity)]
+ public void StepSize_InvalidValue_ThrowsArgumentOutOfRangeException(double invalidValue)
+ {
+ // Setup
+ var input = new WaveConditionsInput();
+
+ // Call
+ void Call() => input.StepSize = (RoundedDouble) invalidValue;
+
+ // Assert
+ const string message = "De waarde voor de stapgrootte moet in het bereik [0,01, 2,00] liggen.";
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, message);
+ }
+
+ [Test]
public void LowerBoundaryRevetment_SetNewValue_ValueIsRounded()
{
// Setup