Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs =================================================================== diff -u -r0a5a1c7fad7e52c152e3ff34eebcccf7785b377d -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 0a5a1c7fad7e52c152e3ff34eebcccf7785b377d) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -53,7 +53,8 @@ public void ConfirmNormChange_Always_ShownMessageBoxForConfirmation() { // Setup - string title = "", message = ""; + string title = ""; + string message = ""; DialogBoxHandler = (name, wnd) => { var tester = new MessageBoxTester(wnd); @@ -159,8 +160,6 @@ IEnumerable affectedObjects = null; const double norm = 1.0/1000; - const int newNormValue = 1000; - // Call Action call = () => affectedObjects = handler.ChangeNorm(section, norm); @@ -172,7 +171,7 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages, 2); - Assert.AreEqual(1.0/newNormValue, section.FailureMechanismContribution.Norm); + Assert.AreEqual(norm, section.FailureMechanismContribution.Norm); CollectionAssert.IsEmpty(section.GetFailureMechanisms().SelectMany(fm => fm.Calculations).Where(c => c.HasOutput), "There should be no calculations with output."); @@ -237,5 +236,51 @@ } CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects); } + + [Test] + public void ChangeNorm_FullyConfiguredAssessmentSectionWithoutCalculatedHydraulicBoundaryLocations_AllFailureMechanismCalculationOutputClearedAndContributionsUpdatedAndReturnsAllAffectedObjects() + { + // Setup + AssessmentSection section = TestDataGenerator.GetFullyConfiguredAssessmentSection(); + RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(section.HydraulicBoundaryDatabase, + section.GrassCoverErosionOutwards); + + // Precondition + CollectionAssert.IsEmpty(section.HydraulicBoundaryDatabase.Locations.Where(HasCalculatedHydraulicBoundaryLocationValues)); + CollectionAssert.IsEmpty(section.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Where(HasCalculatedHydraulicBoundaryLocationValues)); + + var expectedAffectedCalculations = section.GetFailureMechanisms() + .SelectMany(fm => fm.Calculations) + .Where(c => c.HasOutput) + .ToArray(); + var handler = new FailureMechanismContributionNormChangeHandler(); + + IEnumerable affectedObjects = null; + const double norm = 1.0 / 1000; + + // Call + Action call = () => affectedObjects = handler.ChangeNorm(section, norm); + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, "De resultaten van 32 berekeningen zijn verwijderd.", 1); + + Assert.AreEqual(norm, section.FailureMechanismContribution.Norm); + + CollectionAssert.IsEmpty(section.GetFailureMechanisms().SelectMany(fm => fm.Calculations).Where(c => c.HasOutput), + "There should be no calculations with output."); + + var expectedAffectedObjects = expectedAffectedCalculations.Cast() + .Concat(section.GetFailureMechanisms()) + .Concat(new IObservable[] + { + section.FailureMechanismContribution, + }); + CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects); + } + + private bool HasCalculatedHydraulicBoundaryLocationValues(HydraulicBoundaryLocation l) + { + return !double.IsNaN(l.DesignWaterLevel) || !double.IsNaN(l.WaveHeight); + } } } \ No newline at end of file