Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Data/WaveConditionsInput.cs =================================================================== diff -u -r0e74eb0d28fddcb195ebe88e8eb1164cf23dffc9 -r2b1ae71dbd5ecd83ad0fca2ea02c5d7d8219f7b9 --- Ringtoets/Revetment/src/Ringtoets.Revetment.Data/WaveConditionsInput.cs (.../WaveConditionsInput.cs) (revision 0e74eb0d28fddcb195ebe88e8eb1164cf23dffc9) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Data/WaveConditionsInput.cs (.../WaveConditionsInput.cs) (revision 2b1ae71dbd5ecd83ad0fca2ea02c5d7d8219f7b9) @@ -268,13 +268,18 @@ { UpperBoundary = UpperWaterLevel < UpperRevetmentLevel ? UpperWaterLevel : UpperRevetmentLevel; LowerBoundary = LowerWaterLevel > LowerRevetmentLevel ? LowerWaterLevel : LowerRevetmentLevel; + + DetermineWaterLevels(); } private void DetermineWaterLevels() { waterLevels.Clear(); - if (double.IsNaN(UpperBoundary) || double.IsNaN(LowerBoundary) || Math.Abs(LowerBoundary - UpperBoundary) < 1e-6) + if (double.IsNaN(UpperBoundary) || + double.IsNaN(LowerBoundary) || + Math.Abs(LowerBoundary - UpperBoundary) < 1e-6 || + Math.Abs(StepSize) < 1e-6) { return; } Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Data.Test/WaveConditionsInputTest.cs =================================================================== diff -u -r0e74eb0d28fddcb195ebe88e8eb1164cf23dffc9 -r2b1ae71dbd5ecd83ad0fca2ea02c5d7d8219f7b9 --- Ringtoets/Revetment/test/Ringtoets.Revetment.Data.Test/WaveConditionsInputTest.cs (.../WaveConditionsInputTest.cs) (revision 0e74eb0d28fddcb195ebe88e8eb1164cf23dffc9) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Data.Test/WaveConditionsInputTest.cs (.../WaveConditionsInputTest.cs) (revision 2b1ae71dbd5ecd83ad0fca2ea02c5d7d8219f7b9) @@ -48,7 +48,7 @@ new RoundedDouble(2, 5.87) }); - yield return new TestCaseData(6.10, -1.20, -1.30, 6.05, 1, new[] + yield return new TestCaseData(6.10, -1.20, -1.30, 6.01, 1, new[] { new RoundedDouble(2, -1.20), new RoundedDouble(2, -1), @@ -59,7 +59,7 @@ new RoundedDouble(2, 4), new RoundedDouble(2, 5), new RoundedDouble(2, 6), - new RoundedDouble(2, 6.05) + new RoundedDouble(2, 6.01) }); } } @@ -487,5 +487,215 @@ // Assert CollectionAssert.AreEqual(expectedWaterLevels, input.WaterLevels); } + + [Test] + public void UpperRevetmentLevel_SetNewValue_WaterLevelCalculationsSyncedAccordingly() + { + // Setup + var input = new WaveConditionsInput + { + LowerRevetmentLevel = new RoundedDouble(2, -4.29), + LowerWaterLevel = new RoundedDouble(2, -5), + StepSize = (RoundedDouble) 0.5, + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble) 4 + } + }; + + // Call + input.UpperRevetmentLevel = (RoundedDouble) 2.20; + + // Assert + CollectionAssert.AreEqual(new[] + { + new RoundedDouble(2, -4.29), + new RoundedDouble(2, -4), + new RoundedDouble(2, -3.5), + new RoundedDouble(2, -3), + new RoundedDouble(2, -2.5), + new RoundedDouble(2, -2), + new RoundedDouble(2, -1.5), + new RoundedDouble(2, -1), + new RoundedDouble(2, -0.5), + new RoundedDouble(2), + new RoundedDouble(2, 0.5), + new RoundedDouble(2, 1), + new RoundedDouble(2, 1.5), + new RoundedDouble(2, 2), + new RoundedDouble(2, 2.20) + }, input.WaterLevels); + } + + [Test] + public void UpperRevetmentLevel_SetNewValueNoStepSize_NoWaterLevelCalculations() + { + // Setup + var input = new WaveConditionsInput + { + LowerRevetmentLevel = new RoundedDouble(2, -4.29), + LowerWaterLevel = new RoundedDouble(2, -5), + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble)4 + } + }; + + // Call + input.UpperRevetmentLevel = (RoundedDouble)2.20; + + // Assert + CollectionAssert.IsEmpty(input.WaterLevels); + } + + [Test] + public void LowerRevetmentLevel_SetNewValue_WaterLevelCalculationsSyncedAccordingly() + { + // Setup + var input = new WaveConditionsInput + { + UpperRevetmentLevel = (RoundedDouble)5, + LowerWaterLevel = new RoundedDouble(2, -5), + StepSize = (RoundedDouble) 0.5, + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble) 4 + } + }; + + // Call + input.LowerRevetmentLevel = (RoundedDouble) 2.20; + + // Assert + CollectionAssert.AreEqual(new[] + { + new RoundedDouble(2, 2.2), + new RoundedDouble(2, 2.5), + new RoundedDouble(2, 3), + new RoundedDouble(2, 3.5), + new RoundedDouble(2, 3.99) + }, input.WaterLevels); + } + + [Test] + public void LowerRevetmentLevel_SetNewValueNoStepSize_NoWaterLevelCalculations() + { + // Setup + var input = new WaveConditionsInput + { + UpperRevetmentLevel = (RoundedDouble)5, + LowerWaterLevel = new RoundedDouble(2, -5), + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble)4 + } + }; + + // Call + input.LowerRevetmentLevel = (RoundedDouble) 1; + + // Assert + CollectionAssert.IsEmpty(input.WaterLevels); + } + + [Test] + public void LowerWaterLevel_SetNewValue_WaterLevelCalculationsSyncedAccordingly() + { + // Setup + var input = new WaveConditionsInput + { + UpperRevetmentLevel = (RoundedDouble) 5, + LowerRevetmentLevel = new RoundedDouble(2, -5), + StepSize = (RoundedDouble) 0.5, + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble) 4 + } + }; + + // Call + input.LowerWaterLevel = (RoundedDouble) 2.20; + + // Assert + CollectionAssert.AreEqual(new[] + { + new RoundedDouble(2, 2.2), + new RoundedDouble(2, 2.5), + new RoundedDouble(2, 3), + new RoundedDouble(2, 3.5), + new RoundedDouble(2, 3.99) + }, input.WaterLevels); + } + + [Test] + public void LowerWaterLevel_SetNewValueNoStepSize_NoWaterLevelCalculations() + { + // Setup + var input = new WaveConditionsInput + { + UpperRevetmentLevel = (RoundedDouble)5, + LowerRevetmentLevel = new RoundedDouble(2, -5), + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble)4 + } + }; + + // Call + input.LowerWaterLevel = (RoundedDouble) 1; + + // Assert + CollectionAssert.IsEmpty(input.WaterLevels); + } + + [Test] + public void HydraulicBoundaryLocation_SetNewValue_WaterLevelCalculationsSyncedAccordingly() + { + // Setup + var input = new WaveConditionsInput + { + UpperRevetmentLevel = (RoundedDouble) 5, + LowerRevetmentLevel = new RoundedDouble(2, -5), + LowerWaterLevel = (RoundedDouble) 2.20, + StepSize = (RoundedDouble) 0.5 + }; + + // Call + input.HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble) 4 + }; + + // Assert + CollectionAssert.AreEqual(new[] + { + new RoundedDouble(2, 2.2), + new RoundedDouble(2, 2.5), + new RoundedDouble(2, 3), + new RoundedDouble(2, 3.5), + new RoundedDouble(2, 3.99) + }, input.WaterLevels); + } + + [Test] + public void HydraulicBoundaryLocation_SetNewValueNoStepSize_NoWaterLevelCalculations() + { + // Setup + var input = new WaveConditionsInput + { + UpperRevetmentLevel = (RoundedDouble)5, + LowerRevetmentLevel = new RoundedDouble(2, -5), + LowerWaterLevel = (RoundedDouble)2.20 + }; + + // Call + input.HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble)4 + }; + + // Assert + CollectionAssert.IsEmpty(input.WaterLevels); + } } } \ No newline at end of file