Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs =================================================================== diff -u -rae2027c7593045adc8b1a9cc66bc7978262c5e1e -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision ae2027c7593045adc8b1a9cc66bc7978262c5e1e) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -121,7 +121,7 @@ if (affectedObjects.Any()) { log.Info(Resources.AssessmentSectionCompositionChangeHandler_Waveheight_and_design_water_level_results_cleared); - return RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(failureMechanismsToClearOutputFor); + return affectedObjects; } return Enumerable.Empty(); } Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/FailureMechanismContributionNormChangeHandler.cs =================================================================== diff -u -raa9e1e2f746655e4fb44ba50ed10ed6021763033 -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/FailureMechanismContributionNormChangeHandler.cs (.../FailureMechanismContributionNormChangeHandler.cs) (revision aa9e1e2f746655e4fb44ba50ed10ed6021763033) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/FailureMechanismContributionNormChangeHandler.cs (.../FailureMechanismContributionNormChangeHandler.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -89,19 +89,14 @@ private IEnumerable ClearAllHydraulicBoundaryLocationOutput(IAssessmentSection assessmentSection) { - IEnumerable hydraulicBoundaryLocationAffected = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput( + IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput( assessmentSection.HydraulicBoundaryDatabase, assessmentSection); - if (hydraulicBoundaryLocationAffected.Any()) + + if (affectedObjects.Any()) { log.Info(Resources.FailureMechanismContributionNormChangeHandler_Waveheight_and_design_water_level_results_cleared); - - var affectedCollections = new List - { - assessmentSection.HydraulicBoundaryDatabase - }; - affectedCollections.AddRange(RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(assessmentSection)); - return affectedCollections; + return affectedObjects; } return Enumerable.Empty(); } Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs =================================================================== diff -u -r178bbc2c5f319a03f6272570fe3668e70bd6dc8c -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs (.../RingtoetsDataSynchronizationService.cs) (revision 178bbc2c5f319a03f6272570fe3668e70bd6dc8c) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs (.../RingtoetsDataSynchronizationService.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -221,11 +221,18 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - IEnumerable affectedLocations = ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(assessmentSection); + var affectedObjects = new List(); + affectedObjects.AddRange(ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(assessmentSection)); - return RingtoetsCommonDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(hydraulicBoundaryDatabase.Locations) - .Concat(affectedLocations) - .ToArray(); + IEnumerable affectedHydraulicBoundaryLocations = + RingtoetsCommonDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(hydraulicBoundaryDatabase.Locations); + if (affectedHydraulicBoundaryLocations.Any()) + { + affectedObjects.Add(hydraulicBoundaryDatabase); + affectedObjects.AddRange(affectedHydraulicBoundaryLocations); + } + + return affectedObjects.ToArray(); } /// @@ -266,63 +273,27 @@ if (grassCoverErosionOutwardsFailureMechanism != null) { - changedObservables.AddRange(RingtoetsCommonDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations)); + IEnumerable affectedHydraulicBoundaryLocations = + RingtoetsCommonDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations); + + if (affectedHydraulicBoundaryLocations.Any()) + { + changedObservables.Add(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations); + changedObservables.AddRange(affectedHydraulicBoundaryLocations); + } } if (duneErosionFailureMechanism != null) { - changedObservables.AddRange(DuneErosionDataSynchronizationService.ClearDuneLocationOutput(duneErosionFailureMechanism.DuneLocations)); - } - } + IEnumerable affectedDuneLocations = + DuneErosionDataSynchronizationService.ClearDuneLocationOutput(duneErosionFailureMechanism.DuneLocations); - return changedObservables; - } - - /// - /// Returns the hydraulic boundary location collections within the failure mechanisms of the . - /// - /// The assessment section that contains failure - /// mechanisms with hydraulic boundary location collections. - /// All collections that contain hydraulic boundary locations. - /// Thrown when is null. - public static IEnumerable GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(IAssessmentSection assessmentSection) - { - if (assessmentSection == null) - { - throw new ArgumentNullException(nameof(assessmentSection)); - } - - return GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(assessmentSection.GetFailureMechanisms()); - } - - /// - /// Returns the hydraulic boundary location collections within the . - /// - /// The failure mechanisms with hydraulic boundary location collections. - /// All collections that contain hydraulic boundary locations. - /// Thrown when is null. - public static IEnumerable GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(IEnumerable failureMechanisms) - { - if (failureMechanisms == null) - { - throw new ArgumentNullException(nameof(failureMechanisms)); - } - - var changedObservables = new List(); - foreach (IFailureMechanism failureMechanism in failureMechanisms) - { - var grassCoverErosionOutwardsFailureMechanism = failureMechanism as GrassCoverErosionOutwardsFailureMechanism; - var duneErosionFailureMechanism = failureMechanism as DuneErosionFailureMechanism; - - if (grassCoverErosionOutwardsFailureMechanism != null) - { - changedObservables.Add(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations); + if (affectedDuneLocations.Any()) + { + changedObservables.Add(duneErosionFailureMechanism.DuneLocations); + changedObservables.AddRange(affectedDuneLocations); + } } - - if (duneErosionFailureMechanism != null) - { - changedObservables.Add(duneErosionFailureMechanism.DuneLocations); - } } return changedObservables; Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionPropertiesIntegrationTest.cs =================================================================== diff -u -r4d77063761342b4686ef4a56c47874558a53dec7 -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionPropertiesIntegrationTest.cs (.../FailureMechanismContributionPropertiesIntegrationTest.cs) (revision 4d77063761342b4686ef4a56c47874558a53dec7) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionPropertiesIntegrationTest.cs (.../FailureMechanismContributionPropertiesIntegrationTest.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -91,11 +91,7 @@ Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) }; - var grassCoverErosionOutwardsHydraulicBoundaryLocation = hydraulicBoundaryLocation; - grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightOutput = new TestHydraulicBoundaryLocationOutput( - hydraulicBoundaryLocation.WaveHeight); - grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevelOutput = new TestHydraulicBoundaryLocationOutput( - hydraulicBoundaryLocation.DesignWaterLevel); + var grassCoverErosionOutwardsHydraulicBoundaryLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(); assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Add(grassCoverErosionOutwardsHydraulicBoundaryLocation); @@ -150,10 +146,10 @@ // Precondition int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); - Assert.IsFalse(double.IsNaN(hydraulicBoundaryLocation.WaveHeight)); - Assert.IsFalse(double.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel)); - Assert.IsFalse(double.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight)); - Assert.IsFalse(double.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel)); + Assert.IsNotNull(hydraulicBoundaryLocation.WaveHeightOutput); + Assert.IsNotNull(hydraulicBoundaryLocation.DesignWaterLevelOutput); + Assert.IsNotNull(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightOutput); + Assert.IsNotNull(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevelOutput); Assert.IsNotNull(pipingCalculation.Output); Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); @@ -176,10 +172,10 @@ Assert.AreEqual(messageAllHydraulicBoundaryLocationOutputCleared, messages[1]); }); Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight); - Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel); - Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight); - Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel); + Assert.IsNull(hydraulicBoundaryLocation.WaveHeightOutput); + Assert.IsNull(hydraulicBoundaryLocation.DesignWaterLevelOutput); + Assert.IsNull(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightOutput); + Assert.IsNull(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevelOutput); Assert.IsNull(pipingCalculation.Output); Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); Assert.IsNull(grassCoverErosionInwardsCalculation.Output); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs =================================================================== diff -u -r87e9fb044b1fd8f4ed4c31f430839e8ff67d7b6b -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs (.../AssessmentSectionCompositionChangeHandlerTest.cs) (revision 87e9fb044b1fd8f4ed4c31f430839e8ff67d7b6b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs (.../AssessmentSectionCompositionChangeHandlerTest.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -188,14 +188,18 @@ .Where(calc => calc.HasOutput) .ToList(); - IObservable[] expectedAffectedObjects = new IObservable[] - { - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, - duneErosionFailureMechanism.DuneLocations, - assessmentSection - }.Concat(GetDuneRelevantFailureMechanisms(assessmentSection) - .SelectMany(fm => fm.Calculations) - .Where(calc => calc.HasOutput)).ToArray(); + IEnumerable expectedAffectedObjects = duneErosionFailureMechanism.DuneLocations.Cast() + .Concat(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations) + .Concat(new IObservable[] + { + grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, + duneErosionFailureMechanism.DuneLocations, + assessmentSection + }) + .Concat(GetDuneRelevantFailureMechanisms(assessmentSection) + .SelectMany(fm => fm.Calculations) + .Where(calc => calc.HasOutput)) + .ToList(); var handler = new AssessmentSectionCompositionChangeHandler(); @@ -251,11 +255,13 @@ .Where(calc => calc.HasOutput) .ToList(); - IObservable[] expectedAffectedObjects = new IObservable[] - { - assessmentSection, - duneErosionFailureMechanism.DuneLocations - }.ToArray(); + IEnumerable expectedAffectedObjects = duneErosionFailureMechanism.DuneLocations + .Concat(new IObservable[] + { + assessmentSection, + duneErosionFailureMechanism.DuneLocations + }) + .ToList(); var handler = new AssessmentSectionCompositionChangeHandler(); @@ -309,12 +315,18 @@ .OfType() .First(); - IObservable[] expectedAffectedObjects = new IObservable[] - { - assessmentSection, - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, - duneErosionFailureMechanism.DuneLocations - }.ToArray(); + IEnumerable expectedAffectedObjects = duneErosionFailureMechanism.DuneLocations.Cast() + .Concat(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations) + .Concat(new IObservable[] + { + grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, + duneErosionFailureMechanism.DuneLocations, + assessmentSection + }) + .Concat(GetDuneRelevantFailureMechanisms(assessmentSection) + .SelectMany(fm => fm.Calculations) + .Where(calc => calc.HasOutput)) + .ToList(); var handler = new AssessmentSectionCompositionChangeHandler(); @@ -358,11 +370,13 @@ .OfType() .First(); - IObservable[] expectedAffectedObjects = new IObservable[] - { - assessmentSection, - duneErosionFailureMechanism.DuneLocations - }.ToArray(); + IEnumerable expectedAffectedObjects = duneErosionFailureMechanism.DuneLocations + .Concat(new IObservable[] + { + assessmentSection, + duneErosionFailureMechanism.DuneLocations + }) + .ToList(); var handler = new AssessmentSectionCompositionChangeHandler(); @@ -455,10 +469,10 @@ .Where(calc => calc.HasOutput) .ToList(); - IObservable[] expectedAffectedObjects = new[] + IObservable[] expectedAffectedObjects = { assessmentSection - }.ToArray(); + }; var handler = new AssessmentSectionCompositionChangeHandler(); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs =================================================================== diff -u -raa9e1e2f746655e4fb44ba50ed10ed6021763033 -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision aa9e1e2f746655e4fb44ba50ed10ed6021763033) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -27,6 +27,7 @@ using NUnit.Extensions.Forms; using NUnit.Framework; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.DuneErosion.Data; using Ringtoets.Integration.Data; @@ -121,7 +122,7 @@ { // Setup var handler = new FailureMechanismContributionNormChangeHandler(); - const double norm = 1.0/1000; + const double norm = 1.0 / 1000; // Call TestDelegate call = () => handler.ChangeNorm(null, norm); @@ -159,7 +160,7 @@ var handler = new FailureMechanismContributionNormChangeHandler(); IEnumerable affectedObjects = null; - const double norm = 1.0/1000; + const double norm = 1.0 / 1000; // Call Action call = () => affectedObjects = handler.ChangeNorm(section, norm); @@ -179,6 +180,9 @@ var expectedAffectedObjects = expectedAffectedCalculations.Cast() .Concat(section.GetFailureMechanisms()) + .Concat(section.GrassCoverErosionOutwards.HydraulicBoundaryLocations) + .Concat(section.HydraulicBoundaryDatabase.Locations) + .Concat(section.DuneErosion.DuneLocations) .Concat(new IObservable[] { section.FailureMechanismContribution, @@ -189,10 +193,8 @@ foreach (HydraulicBoundaryLocation location in section.HydraulicBoundaryDatabase.Locations .Concat(section.GrassCoverErosionOutwards.HydraulicBoundaryLocations)) { - Assert.IsNaN(location.DesignWaterLevel); - Assert.IsNaN(location.WaveHeight); - Assert.AreEqual(CalculationConvergence.NotCalculated, location.DesignWaterLevelCalculationConvergence); - Assert.AreEqual(CalculationConvergence.NotCalculated, location.WaveHeightCalculationConvergence); + Assert.IsNull(location.WaveHeightOutput); + Assert.IsNull(location.DesignWaterLevelOutput); } foreach (DuneLocation duneLocation in section.DuneErosion.DuneLocations) { @@ -225,7 +227,10 @@ Assert.AreEqual(newNormValue, section.FailureMechanismContribution.Norm); - var expectedAffectedObjects = section.GetFailureMechanisms() + var expectedAffectedObjects = section.GetFailureMechanisms().Cast() + .Concat(section.GrassCoverErosionOutwards.HydraulicBoundaryLocations) + .Concat(section.HydraulicBoundaryDatabase.Locations) + .Concat(section.DuneErosion.DuneLocations) .Concat(new IObservable[] { section.FailureMechanismContribution, @@ -236,10 +241,8 @@ foreach (HydraulicBoundaryLocation location in section.HydraulicBoundaryDatabase.Locations .Concat(section.GrassCoverErosionOutwards.HydraulicBoundaryLocations)) { - Assert.IsNaN(location.DesignWaterLevel); - Assert.IsNaN(location.WaveHeight); - Assert.AreEqual(CalculationConvergence.NotCalculated, location.DesignWaterLevelCalculationConvergence); - Assert.AreEqual(CalculationConvergence.NotCalculated, location.WaveHeightCalculationConvergence); + Assert.IsNull(location.DesignWaterLevelOutput); + Assert.IsNull(location.WaveHeightOutput); } foreach (DuneLocation duneLocation in section.DuneErosion.DuneLocations) { @@ -267,7 +270,7 @@ var handler = new FailureMechanismContributionNormChangeHandler(); IEnumerable affectedObjects = null; - const double norm = 1.0/1000; + const double norm = 1.0 / 1000; // Call Action call = () => affectedObjects = handler.ChangeNorm(section, norm); Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs =================================================================== diff -u -r87e9fb044b1fd8f4ed4c31f430839e8ff67d7b6b -r40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8 --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision 87e9fb044b1fd8f4ed4c31f430839e8ff67d7b6b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision 40ab5f9e9cdd69b66f67b1f2fdd1b503aecc24e8) @@ -297,8 +297,7 @@ [Test] [TestCaseSource(nameof(GrassAndDuneLocations))] public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_GrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation grassCoverErosionLocation, - DuneLocation duneLocation, - IEnumerable expectedAffectedItems) + DuneLocation duneLocation) { // Setup var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); @@ -316,6 +315,18 @@ }); mockRepository.ReplayAll(); + var expectedAffectedItems = new List(); + if (HasHydraulicBoundaryLocationOutput(grassCoverErosionLocation)) + { + expectedAffectedItems.Add(grassCoverErosionLocation); + expectedAffectedItems.Add(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations); + } + if (duneLocation.Output != null) + { + expectedAffectedItems.Add(duneLocation); + expectedAffectedItems.Add(duneErosionFailureMechanism.DuneLocations); + } + // Call IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(assessmentSection); @@ -356,10 +367,9 @@ } [Test] - [TestCaseSource(nameof(GrassAndDuneLocations2))] + [TestCaseSource(nameof(GrassAndDuneLocations))] public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_FailureMechanismsGrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation grassCoverErosionLocation, - DuneLocation duneLocation, - IEnumerable expectedAffectedItems) + DuneLocation duneLocation) { // Setup var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); @@ -368,6 +378,18 @@ var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); duneErosionFailureMechanism.DuneLocations.Add(duneLocation); + var expectedAffectedItems = new List(); + if (HasHydraulicBoundaryLocationOutput(grassCoverErosionLocation)) + { + expectedAffectedItems.Add(grassCoverErosionLocation); + expectedAffectedItems.Add(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations); + } + if (duneLocation.Output != null) + { + expectedAffectedItems.Add(duneLocation); + expectedAffectedItems.Add(duneErosionFailureMechanism.DuneLocations); + } + // Call IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(new IFailureMechanism[] { @@ -388,8 +410,7 @@ [TestCaseSource(nameof(HydraulicBoundaryLocationAndGrassAndDuneLocations))] public void ClearHydraulicBoundaryLocationOutput_HydraulicBoundaryGrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation hydraulicBoundaryLocation, HydraulicBoundaryLocation grassCoverErosionLocation, - DuneLocation duneLocation, - IEnumerable expectedAffectedItems) + DuneLocation duneLocation) { // Setup var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase @@ -416,6 +437,23 @@ }); mockRepository.ReplayAll(); + var expectedAffectedItems = new List(); + if (HasHydraulicBoundaryLocationOutput(hydraulicBoundaryLocation)) + { + expectedAffectedItems.Add(hydraulicBoundaryLocation); + expectedAffectedItems.Add(hydraulicBoundaryDatabase); + } + if (HasHydraulicBoundaryLocationOutput(grassCoverErosionLocation)) + { + expectedAffectedItems.Add(grassCoverErosionLocation); + expectedAffectedItems.Add(grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations); + } + if (duneLocation.Output != null) + { + expectedAffectedItems.Add(duneLocation); + expectedAffectedItems.Add(duneErosionFailureMechanism.DuneLocations); + } + // Call IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(assessmentSection.HydraulicBoundaryDatabase, assessmentSection); @@ -433,60 +471,6 @@ } [Test] - public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_AssessmentSectionNull_ThrowsArgumentNullException() - { - // Call - TestDelegate test = () => RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms((IAssessmentSection) null); - - // Assert - var exception = Assert.Throws(test); - Assert.AreEqual("assessmentSection", exception.ParamName); - } - - [Test] - [TestCaseSource(nameof(FailureMechanisms))] - public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_GrassCoverOutwardsAndDuneLocations_ReturnsExpectedAffectedCollections(IEnumerable availableFailureMechanisms, - IEnumerable expectedCollections) - { - // Setup - var mockRepository = new MockRepository(); - IAssessmentSection assessmentSection = mockRepository.Stub(); - assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(availableFailureMechanisms); - mockRepository.ReplayAll(); - - // Call - IEnumerable affectedCollections = RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(assessmentSection); - - // Assert - CollectionAssert.AreEquivalent(expectedCollections, affectedCollections); - - mockRepository.VerifyAll(); - } - - [Test] - public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_FailureMechanismsNull_ThrowsArgumentNullException() - { - // Call - TestDelegate test = () => RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms((IEnumerable) null); - - // Assert - var exception = Assert.Throws(test); - Assert.AreEqual("failureMechanisms", exception.ParamName); - } - - [Test] - [TestCaseSource(nameof(FailureMechanisms2))] - public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_FailureMechanismsGrassCoverOutwardsAndDuneLocations_ReturnsExpectedAffectedCollections(IEnumerable availableFailureMechanisms, - IEnumerable expectedCollections) - { - // Call - IEnumerable affectedObjects = RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(availableFailureMechanisms); - - // Assert - CollectionAssert.AreEquivalent(expectedCollections, affectedObjects); - } - - [Test] public void ClearReferenceLine_AssessmentSectionNull_ThrowArgumentNullException() { // Call @@ -1511,287 +1495,101 @@ } } + private static bool HasHydraulicBoundaryLocationOutput(HydraulicBoundaryLocation hydraulicBoundaryLocation) + { + return hydraulicBoundaryLocation.DesignWaterLevelOutput != null || hydraulicBoundaryLocation.WaveHeightOutput != null; + } + #region TestData private static IEnumerable GrassAndDuneLocations { get { - TestDuneLocation duneLocationWithOutput; - TestHydraulicBoundaryLocation grassBoundaryLocationWithOutput; - yield return new TestCaseData( new TestHydraulicBoundaryLocation(), - new TestDuneLocation(), - new IObservable[0] + new TestDuneLocation() ).SetName("GrassAndDuneLocationNoOutput"); yield return new TestCaseData( - grassBoundaryLocationWithOutput = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - new TestDuneLocation(), - new IObservable[] - { - grassBoundaryLocationWithOutput - } + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + new TestDuneLocation() ).SetName("DuneLocationWithoutOutputGrassLocationWithOutput"); yield return new TestCaseData( new TestHydraulicBoundaryLocation(), - duneLocationWithOutput = new TestDuneLocation + new TestDuneLocation { Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - duneLocationWithOutput } ).SetName("GrassLocationWithoutOutputDuneLocationWithOutput"); yield return new TestCaseData( - grassBoundaryLocationWithOutput = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - duneLocationWithOutput = new TestDuneLocation + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + new TestDuneLocation { Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - grassBoundaryLocationWithOutput, - duneLocationWithOutput } ).SetName("GrassAndDuneLocationWithOutput"); } } - private static IEnumerable GrassAndDuneLocations2 + private static IEnumerable HydraulicBoundaryLocationAndGrassAndDuneLocations { get { - TestDuneLocation duneLocationWithOutput; - TestHydraulicBoundaryLocation grassBoundaryLocationWithOutput; - yield return new TestCaseData( + TestHydraulicBoundaryLocation.CreateFullyCalculated(), new TestHydraulicBoundaryLocation(), - new TestDuneLocation(), - new IObservable[0] - ).SetName("GrassAndDuneLocationNoOutput2"); - yield return new TestCaseData( - grassBoundaryLocationWithOutput = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - new TestDuneLocation(), - new IObservable[] + new TestDuneLocation { - grassBoundaryLocationWithOutput + Output = new TestDuneLocationOutput() } - ).SetName("GrassLocationWithOutput2"); + ).SetName("HydraulicBoundaryAndDuneLocationWithOutput"); yield return new TestCaseData( + TestHydraulicBoundaryLocation.CreateFullyCalculated(), new TestHydraulicBoundaryLocation(), - duneLocationWithOutput = new TestDuneLocation - { - Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - duneLocationWithOutput - } - ).SetName("DuneLocationWithOutput2"); + new TestDuneLocation() + ).SetName("HydraulicBoundaryLocationWithOutput"); yield return new TestCaseData( - grassBoundaryLocationWithOutput = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - duneLocationWithOutput = new TestDuneLocation + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + new TestDuneLocation { Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - grassBoundaryLocationWithOutput, - duneLocationWithOutput } - ).SetName("GrassAndDuneLocationWithOutput2"); - } - } - - private static IEnumerable HydraulicBoundaryLocationAndGrassAndDuneLocations - { - get - { - TestHydraulicBoundaryLocation hydraulicBoundaryLocation; - TestHydraulicBoundaryLocation grassCoverErosionOutwardsLocation; - TestDuneLocation duneLocationWithOutput; - + ).SetName("AllTypesWithOutput"); yield return new TestCaseData( - hydraulicBoundaryLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - new TestHydraulicBoundaryLocation(), - duneLocationWithOutput = new TestDuneLocation - { - Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - hydraulicBoundaryLocation, - duneLocationWithOutput - }).SetName("HydraulicBoundaryAndDuneLocationWithOutput"); + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + new TestDuneLocation() + ).SetName("HydraulicBoundaryAndGrassLocationWithOutput"); yield return new TestCaseData( - hydraulicBoundaryLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), new TestHydraulicBoundaryLocation(), - new TestDuneLocation(), - new IObservable[] - { - hydraulicBoundaryLocation - }).SetName("HydraulicBoundaryLocationWithOutput"); - yield return new TestCaseData( - hydraulicBoundaryLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - grassCoverErosionOutwardsLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - duneLocationWithOutput = new TestDuneLocation - { - Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - hydraulicBoundaryLocation, - grassCoverErosionOutwardsLocation, - duneLocationWithOutput - }).SetName("AllTypesWithOutput"); - yield return new TestCaseData( - hydraulicBoundaryLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - grassCoverErosionOutwardsLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - new TestDuneLocation(), - new IObservable[] - { - hydraulicBoundaryLocation, - grassCoverErosionOutwardsLocation - }).SetName("HydraulicBoundaryAndGrassLocationWithOutput"); - - yield return new TestCaseData( new TestHydraulicBoundaryLocation(), - new TestHydraulicBoundaryLocation(), - duneLocationWithOutput = new TestDuneLocation + new TestDuneLocation { Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - duneLocationWithOutput - }).SetName("HydraulicBoundaryLocationWithoutOutputDuneLocationWithOutput"); + } + ).SetName("HydraulicBoundaryLocationWithoutOutputDuneLocationWithOutput"); yield return new TestCaseData( new TestHydraulicBoundaryLocation(), new TestHydraulicBoundaryLocation(), - new TestDuneLocation(), - new IObservable[0] + new TestDuneLocation() ).SetName("AllTypesNoOutput"); yield return new TestCaseData( new TestHydraulicBoundaryLocation(), - grassCoverErosionOutwardsLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - duneLocationWithOutput = new TestDuneLocation + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + new TestDuneLocation { Output = new TestDuneLocationOutput() - }, - new IObservable[] - { - grassCoverErosionOutwardsLocation, - duneLocationWithOutput - }).SetName("HydraulicBoundaryLocationWithoutOutputGrassAndDuneLocationWithOutput"); + } + ).SetName("HydraulicBoundaryLocationWithoutOutputGrassAndDuneLocationWithOutput"); yield return new TestCaseData( new TestHydraulicBoundaryLocation(), - grassCoverErosionOutwardsLocation = TestHydraulicBoundaryLocation.CreateFullyCalculated(), - new TestDuneLocation(), - new IObservable[] - { - grassCoverErosionOutwardsLocation - }).SetName("GrassLocationWithOutput"); + TestHydraulicBoundaryLocation.CreateFullyCalculated(), + new TestDuneLocation() + ).SetName("GrassLocationWithOutput"); } } - private static IEnumerable FailureMechanisms - { - get - { - DuneErosionFailureMechanism duneErosionFailureMechanism; - GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism; - - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism(), - duneErosionFailureMechanism = new DuneErosionFailureMechanism(), - grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism() - }, - new IObservable[] - { - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, - duneErosionFailureMechanism.DuneLocations - }).SetName("DuneAndGrassFailureMechanism"); - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism() - }, - new IObservable[0]).SetName("NoRelevantFailureMechanism"); - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism(), - duneErosionFailureMechanism = new DuneErosionFailureMechanism(), - }, - new IObservable[] - { - duneErosionFailureMechanism.DuneLocations - }).SetName("DuneFailureMechanism"); - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism(), - grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism() - }, - new IObservable[] - { - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations - }).SetName("GrassFailureMechanism"); - } - } - - private static IEnumerable FailureMechanisms2 - { - get - { - DuneErosionFailureMechanism duneErosionFailureMechanism; - GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism; - - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism(), - duneErosionFailureMechanism = new DuneErosionFailureMechanism(), - grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism() - }, - new IObservable[] - { - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations, - duneErosionFailureMechanism.DuneLocations - }).SetName("DuneAndGrassFailureMechanism2"); - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism() - }, - new IObservable[0]).SetName("NoRelevantFailureMechanism2"); - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism(), - duneErosionFailureMechanism = new DuneErosionFailureMechanism(), - }, - new IObservable[] - { - duneErosionFailureMechanism.DuneLocations - }).SetName("DuneFailureMechanism2"); - yield return new TestCaseData( - new IFailureMechanism[] - { - new TestFailureMechanism(), - grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism() - }, - new IObservable[] - { - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations - }).SetName("GrassFailureMechanism2"); - } - } - #endregion } } \ No newline at end of file