Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs =================================================================== diff -u -r9cd70453e2e24e2a5896757edd13d36620e09dad -r8555639e4bd5abc568b3da0d8bd4f7c206bab337 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 9cd70453e2e24e2a5896757edd13d36620e09dad) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 8555639e4bd5abc568b3da0d8bd4f7c206bab337) @@ -96,7 +96,7 @@ grassCoverErosionOutwardsFailureMechanism, duneErosionFailureMechanism); if (hydraulicBoundaryLocationAffected.Any()) { - log.Info(Resources.FailureMechanismContributionNormChangeHandler_Waveheight_and_design_water_level_results_cleared); + log.Info(Resources.AssessmentSectionCompositionChangeHandler_Waveheight_and_design_water_level_results_cleared); return new IObservable[] { grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.Designer.cs =================================================================== diff -u -r3722e29f53ce7db0f11fb184cdc2a76d33078cf2 -r8555639e4bd5abc568b3da0d8bd4f7c206bab337 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 3722e29f53ce7db0f11fb184cdc2a76d33078cf2) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 8555639e4bd5abc568b3da0d8bd4f7c206bab337) @@ -94,6 +94,16 @@ } /// + /// Looks up a localized string similar to Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties van grasbekleding erosie binnentalud en duinen zijn verwijderd.. + /// + public static string AssessmentSectionCompositionChangeHandler_Waveheight_and_design_water_level_results_cleared { + get { + return ResourceManager.GetString("AssessmentSectionCompositionChangeHandler_Waveheight_and_design_water_level_resul" + + "ts_cleared", resourceCulture); + } + } + + /// /// Looks up a localized string similar to De resultaten van {0} berekeningen zijn verwijderd.. /// public static string ChangeHandler_Results_of_NumberOfCalculations_0_calculations_cleared { Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.resx =================================================================== diff -u -r3722e29f53ce7db0f11fb184cdc2a76d33078cf2 -r8555639e4bd5abc568b3da0d8bd4f7c206bab337 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.resx (.../Resources.resx) (revision 3722e29f53ce7db0f11fb184cdc2a76d33078cf2) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.resx (.../Resources.resx) (revision 8555639e4bd5abc568b3da0d8bd4f7c206bab337) @@ -166,4 +166,7 @@ Achtergrondlaag + + Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties van grasbekleding erosie binnentalud en duinen zijn verwijderd. + \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs =================================================================== diff -u -r9cd70453e2e24e2a5896757edd13d36620e09dad -r8555639e4bd5abc568b3da0d8bd4f7c206bab337 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs (.../AssessmentSectionCompositionChangeHandlerTest.cs) (revision 9cd70453e2e24e2a5896757edd13d36620e09dad) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs (.../AssessmentSectionCompositionChangeHandlerTest.cs) (revision 8555639e4bd5abc568b3da0d8bd4f7c206bab337) @@ -196,7 +196,7 @@ string[] expectedMessage = { "De resultaten van 32 berekeningen zijn verwijderd.", - "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties zijn verwijderd." + "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties van grasbekleding erosie binnentalud en duinen zijn verwijderd." }; TestHelper.AssertLogMessagesAreGenerated(call, expectedMessage, 2); @@ -256,7 +256,7 @@ Action call = () => affectedObjects = handler.ChangeComposition(assessmentSection, newComposition); // Assert - TestHelper.AssertLogMessageIsGenerated(call, "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties zijn verwijderd.", 1); + TestHelper.AssertLogMessageIsGenerated(call, "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties van grasbekleding erosie binnentalud en duinen zijn verwijderd.", 1); Assert.AreEqual(newComposition, assessmentSection.Composition); Assert.True(assessmentSection.GetFailureMechanisms().SelectMany(fm => fm.Calculations).All(c => !c.HasOutput)); Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs =================================================================== diff -u -re7b22b417acc51a88beb210ba39fef0f75e2760e -r8555639e4bd5abc568b3da0d8bd4f7c206bab337 --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision e7b22b417acc51a88beb210ba39fef0f75e2760e) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision 8555639e4bd5abc568b3da0d8bd4f7c206bab337) @@ -53,6 +53,64 @@ [TestFixture] public class RingtoetsDataSynchronizationServiceTest { + #region TestData + + private static IEnumerable GrassAndDuneLocations + { + get + { + TestDuneLocation duneLocationOutput; + TestHydraulicBoundaryLocation grassBoundaryLocationOutput; + + yield return new TestCaseData( + new TestHydraulicBoundaryLocation(), + new TestDuneLocation(), + new IObservable[0] + ).SetName("GrassAndDuneLocationNoOutput"); + yield return new TestCaseData( + grassBoundaryLocationOutput = new TestHydraulicBoundaryLocation + { + DesignWaterLevelOutput = new TestHydraulicBoundaryLocationOutput(0.5), + WaveHeightOutput = new TestHydraulicBoundaryLocationOutput(0.6) + }, + new TestDuneLocation(), + new IObservable[] + { + grassBoundaryLocationOutput + } + ).SetName("GrassLocationWithOutput"); + yield return new TestCaseData( + new TestHydraulicBoundaryLocation(), + duneLocationOutput = new TestDuneLocation + { + Output = new TestDuneLocationOutput() + }, + new IObservable[] + { + duneLocationOutput + } + ).SetName("DuneLocationWithOutput"); + yield return new TestCaseData( + grassBoundaryLocationOutput = new TestHydraulicBoundaryLocation + { + DesignWaterLevelOutput = new TestHydraulicBoundaryLocationOutput(0.5), + WaveHeightOutput = new TestHydraulicBoundaryLocationOutput(0.6) + }, + duneLocationOutput = new TestDuneLocation + { + Output = new TestDuneLocationOutput() + }, + new IObservable[] + { + grassBoundaryLocationOutput, + duneLocationOutput + } + ).SetName("GrassAndDuneLocationWithOutput"); + } + } + + #endregion + [Test] public void ClearFailureMechanismCalculationOutputs_WithoutAssessmentSection_ThrowsArgumentNullException() { @@ -205,7 +263,7 @@ } [Test] - public void ClearHydraulicBoundaryLocationOutput_grassCoverErosionOutwardsFailureMechanismNull_ThrowsArgumentNullException() + public void ClearHydraulicBoundaryLocationOutput_GrassCoverErosionOutwardsFailureMechanismNull_ThrowsArgumentNullException() { // Setup var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); @@ -239,6 +297,36 @@ } [Test] + public void ClearHydraulicBoundaryLocationOutput_TwoArgumentsGrassCoverErosionOutwardsFailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); + + // Call + TestDelegate test = () => RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(null, + duneErosionFailureMechanism); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("grassCoverErosionOutwardsFailureMechanism", exception.ParamName); + } + + [Test] + public void ClearHydraulicBoundaryLocationOutput_TwoArgumentsDuneErosionFailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + + // Call + TestDelegate test = () => RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(grassCoverErosionOutwardsFailureMechanism, + null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("duneErosionFailureMechanism", exception.ParamName); + } + + [Test] [TestCase(1.0, 3.0)] [TestCase(3.8, double.NaN)] [TestCase(double.NaN, 6.9)] @@ -274,9 +362,9 @@ Assert.AreEqual(CalculationConvergence.NotCalculated, hydraulicBoundaryLocation.WaveHeightCalculationConvergence); CollectionAssert.AreEqual(new[] - { - hydraulicBoundaryLocation - }, affectedObjects); + { + hydraulicBoundaryLocation + }, affectedObjects); mockRepository.VerifyAll(); } @@ -368,9 +456,9 @@ Assert.AreEqual(CalculationConvergence.NotCalculated, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightCalculationConvergence); CollectionAssert.AreEqual(new[] - { - grassCoverErosionOutwardsHydraulicBoundaryLocation - }, affectedObjects); + { + grassCoverErosionOutwardsHydraulicBoundaryLocation + }, affectedObjects); } [Test] @@ -464,14 +552,42 @@ Assert.AreEqual(CalculationConvergence.NotCalculated, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightCalculationConvergence); CollectionAssert.AreEquivalent(new[] - { - grassCoverErosionOutwardsHydraulicBoundaryLocation, - hydraulicBoundaryLocation - }, affectedObjects); + { + grassCoverErosionOutwardsHydraulicBoundaryLocation, + hydraulicBoundaryLocation + }, affectedObjects); mockRepository.VerifyAll(); } [Test] + [TestCaseSource(nameof(GrassAndDuneLocations))] + public void ClearHydraulicBoundaryLocationOutput_GrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedHydraulicBoundaryLocations(HydraulicBoundaryLocation grassBoundaryLocation, + DuneLocation duneLocation, + IEnumerable expectedAffectedItems) + { + // Setup + var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + + var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); + duneErosionFailureMechanism.DuneLocations.Add(duneLocation); + + grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations.Add(grassBoundaryLocation); + + // Call + IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput( + grassCoverErosionOutwardsFailureMechanism, + duneErosionFailureMechanism); + + // Assert + // Note: To make sure the clear is performed regardless of what is done with + // the return result, no ToArray() should be called before these assertions: + CollectionAssert.AreEquivalent(expectedAffectedItems, affectedObjects); + Assert.IsNull(duneLocation.Output); + Assert.IsNull(grassBoundaryLocation.DesignWaterLevelOutput); + Assert.IsNull(grassBoundaryLocation.WaveHeightOutput); + } + + [Test] public void ClearReferenceLine_AssessmentSectionNull_ThrowArgumentNullException() { // Call