Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs =================================================================== diff -u -rb0fb3401fabb0a77df32607b1d2d20e4aa6cb3fa -r1bd68d22bc0484d9d18afb2a776b8f5943712803 --- Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs (.../RingtoetsDataSynchronizationService.cs) (revision b0fb3401fabb0a77df32607b1d2d20e4aa6cb3fa) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs (.../RingtoetsDataSynchronizationService.cs) (revision 1bd68d22bc0484d9d18afb2a776b8f5943712803) @@ -310,8 +310,7 @@ if (duneErosionFailureMechanism != null) { IEnumerable affectedDuneLocations = - DuneErosionDataSynchronizationService.ClearDuneLocationOutput(duneErosionFailureMechanism.DuneLocations) - .Concat(DuneErosionDataSynchronizationService.ClearDuneCalculationOutputs(duneErosionFailureMechanism)); + DuneErosionDataSynchronizationService.ClearDuneLocationOutput(duneErosionFailureMechanism.DuneLocations); if (affectedDuneLocations.Any()) { Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs =================================================================== diff -u -r354a2f287b65fa018a178f5ab6a883f4a922fe65 -r1bd68d22bc0484d9d18afb2a776b8f5943712803 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 354a2f287b65fa018a178f5ab6a883f4a922fe65) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 1bd68d22bc0484d9d18afb2a776b8f5943712803) @@ -142,11 +142,7 @@ .Concat(assessmentSection.WaveHeightCalculationsForLowerLimitNorm) .Concat(assessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm) .Concat(GetAllAffectedGrassCoverErosionOutwardsHydraulicBoundaryLocationCalculations(assessmentSection.GrassCoverErosionOutwards)) - .Concat(assessmentSection.DuneErosion.CalculationsForMechanismSpecificFactorizedSignalingNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForMechanismSpecificSignalingNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForMechanismSpecificLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForFactorizedLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)) + .Concat(assessmentSection.DuneErosion.DuneLocations.Where(dl => dl.Calculation.Output != null)) .Concat(new IObservable[] { assessmentSection.FailureMechanismContribution @@ -171,8 +167,12 @@ "There should be no calculations with output."); AssertHydraulicBoundaryLocationOutput(assessmentSection, false); - AssertDuneErosionLocationCalculationOutputRemoved(assessmentSection.DuneErosion); + foreach (DuneLocation duneLocation in assessmentSection.DuneErosion.DuneLocations) + { + Assert.IsNull(duneLocation.Calculation.Output); + } + CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects); } @@ -198,12 +198,8 @@ .Concat(assessmentSection.WaveHeightCalculationsForSignalingNorm) .Concat(assessmentSection.WaveHeightCalculationsForLowerLimitNorm) .Concat(assessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm) + .Concat(GetAllAffectedGrassCoverErosionOutwardsHydraulicBoundaryLocationCalculations(assessmentSection.GrassCoverErosionOutwards)) .Concat(assessmentSection.DuneErosion.DuneLocations.Where(dl => dl.Calculation.Output != null)) - .Concat(assessmentSection.DuneErosion.CalculationsForMechanismSpecificFactorizedSignalingNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForMechanismSpecificSignalingNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForMechanismSpecificLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)) - .Concat(assessmentSection.DuneErosion.CalculationsForFactorizedLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)) .Concat(new IObservable[] { assessmentSection.FailureMechanismContribution @@ -220,8 +216,12 @@ TestHelper.AssertLogMessageIsGenerated(call, "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties zijn verwijderd.", 1); AssertHydraulicBoundaryLocationOutput(assessmentSection, false); - AssertDuneErosionLocationCalculationOutputRemoved(assessmentSection.DuneErosion); + foreach (DuneLocation duneLocation in assessmentSection.DuneErosion.DuneLocations) + { + Assert.IsNull(duneLocation.Calculation.Output); + } + CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects); } @@ -310,12 +310,6 @@ AssertHydraulicBoundaryLocationOutput(assessmentSection, true); Assert.IsNotNull(assessmentSection.DuneErosion.DuneLocations[0].Calculation.Output); - Assert.IsNotNull(assessmentSection.DuneErosion.CalculationsForMechanismSpecificFactorizedSignalingNorm.First().Output); - Assert.IsNotNull(assessmentSection.DuneErosion.CalculationsForMechanismSpecificSignalingNorm.First().Output); - Assert.IsNotNull(assessmentSection.DuneErosion.CalculationsForMechanismSpecificLowerLimitNorm.First().Output); - Assert.IsNotNull(assessmentSection.DuneErosion.CalculationsForLowerLimitNorm.First().Output); - Assert.IsNotNull(assessmentSection.DuneErosion.CalculationsForFactorizedLowerLimitNorm.First().Output); - CollectionAssert.IsEmpty(affectedObjects); } @@ -365,21 +359,5 @@ Assert.IsTrue(failureMechanism.WaveHeightCalculationsForMechanismSpecificSignalingNorm.All(c => c.HasOutput == hasOutput)); Assert.IsTrue(failureMechanism.WaveHeightCalculationsForMechanismSpecificLowerLimitNorm.All(c => c.HasOutput == hasOutput)); } - - private static void AssertDuneErosionLocationCalculationOutputRemoved(DuneErosionFailureMechanism failureMechanism) - { - Assert.True(failureMechanism.DuneLocations.All(dl => dl.Calculation.Output == null)); - - Assert.True(failureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.All(calc => calc.Output == null)); - Assert.True(failureMechanism.CalculationsForMechanismSpecificSignalingNorm.All(calc => calc.Output == null)); - Assert.True(failureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.All(calc => calc.Output == null)); - Assert.True(failureMechanism.CalculationsForLowerLimitNorm.All(calc => calc.Output == null)); - Assert.True(failureMechanism.CalculationsForFactorizedLowerLimitNorm.All(calc => calc.Output == null)); - } - - private static bool HasDuneErosionLocationCalculationOutput(DuneLocationCalculation calculation) - { - return calculation.Output != null; - } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs =================================================================== diff -u -rdf66f878d24326f548fd12efc45148780d76e4fb -r1bd68d22bc0484d9d18afb2a776b8f5943712803 --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision df66f878d24326f548fd12efc45148780d76e4fb) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision 1bd68d22bc0484d9d18afb2a776b8f5943712803) @@ -302,13 +302,16 @@ [Test] [TestCaseSource(nameof(GetClearHydraulicLocationDependentData))] - public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_AssessmentSectionWithGrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations( + public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_GrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations( ClearHydraulicLocationDependentTestCase testCase) { // Setup GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism = testCase.GrassCoverErosionOutwardsFailureMechanism; - DuneErosionFailureMechanism duneErosionFailureMechanism = testCase.DuneErosionFailureMechanism; + DuneLocation duneLocation = testCase.DuneLocation; + var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); + duneErosionFailureMechanism.DuneLocations.Add(duneLocation); + var mockRepository = new MockRepository(); var assessmentSection = mockRepository.Stub(); assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new IFailureMechanism[] @@ -318,22 +321,23 @@ }); mockRepository.ReplayAll(); + var expectedAffectedItems = new List(); + expectedAffectedItems.AddRange(testCase.ExpectedAffectedObjects); + if (duneLocation.Calculation.Output != null) + { + expectedAffectedItems.Add(duneLocation); + } + // Call IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(assessmentSection); // 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(testCase.ExpectedAffectedObjects, affectedObjects); + CollectionAssert.AreEquivalent(expectedAffectedItems, affectedObjects); GrassCoverErosionOutwardsHydraulicBoundaryLocationsTestHelper.AssertHydraulicBoundaryLocationCalculationsHaveNoOutputs(grassCoverErosionOutwardsFailureMechanism); + Assert.IsNull(duneLocation.Calculation.Output); - Assert.IsNull(duneErosionFailureMechanism.DuneLocations.Single().Calculation.Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForMechanismSpecificSignalingNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForLowerLimitNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForFactorizedLowerLimitNorm.Single().Output); - mockRepository.VerifyAll(); } @@ -369,8 +373,18 @@ { // Setup GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism = testCase.GrassCoverErosionOutwardsFailureMechanism; - DuneErosionFailureMechanism duneErosionFailureMechanism = testCase.DuneErosionFailureMechanism; + DuneLocation duneLocation = testCase.DuneLocation; + var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); + duneErosionFailureMechanism.DuneLocations.Add(duneLocation); + + var expectedAffectedItems = new List(); + expectedAffectedItems.AddRange(testCase.ExpectedAffectedObjects); + if (duneLocation.Calculation.Output != null) + { + expectedAffectedItems.Add(duneLocation); + } + // Call IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(new IFailureMechanism[] { @@ -381,15 +395,9 @@ // 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(testCase.ExpectedAffectedObjects, affectedObjects); + CollectionAssert.AreEquivalent(expectedAffectedItems, affectedObjects); GrassCoverErosionOutwardsHydraulicBoundaryLocationsTestHelper.AssertHydraulicBoundaryLocationCalculationsHaveNoOutputs(grassCoverErosionOutwardsFailureMechanism); - - Assert.IsNull(duneErosionFailureMechanism.DuneLocations.Single().Calculation.Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForMechanismSpecificSignalingNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForLowerLimitNorm.Single().Output); - Assert.IsNull(duneErosionFailureMechanism.CalculationsForFactorizedLowerLimitNorm.Single().Output); + Assert.IsNull(duneLocation.Calculation.Output); } [Test] @@ -486,25 +494,7 @@ grassHydraulicBoundaryLocationCalculation5.Output = new TestHydraulicBoundaryLocationOutput(); grassHydraulicBoundaryLocationCalculation6.Output = new TestHydraulicBoundaryLocationOutput(); - DuneErosionFailureMechanism duneErosionFailureMechanism = assessmentSection.DuneErosion; - duneErosionFailureMechanism.SetDuneLocationCalculations(new[] - { - duneLocation1, - duneLocation2 - }); - DuneLocationCalculation duneLocationCalculation1 = duneErosionFailureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.First(c => ReferenceEquals(c.DuneLocation, duneLocation1)); - DuneLocationCalculation duneLocationCalculation2 = duneErosionFailureMechanism.CalculationsForMechanismSpecificSignalingNorm.First(c => ReferenceEquals(c.DuneLocation, duneLocation1)); - DuneLocationCalculation duneLocationCalculation3 = duneErosionFailureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.First(c => ReferenceEquals(c.DuneLocation, duneLocation1)); - DuneLocationCalculation duneLocationCalculation4 = duneErosionFailureMechanism.CalculationsForLowerLimitNorm.First(c => ReferenceEquals(c.DuneLocation, duneLocation1)); - DuneLocationCalculation duneLocationCalculation5 = duneErosionFailureMechanism.CalculationsForFactorizedLowerLimitNorm.First(c => ReferenceEquals(c.DuneLocation, duneLocation1)); - - duneLocationCalculation1.Output = new TestDuneLocationOutput(); - duneLocationCalculation2.Output = new TestDuneLocationOutput(); - duneLocationCalculation3.Output = new TestDuneLocationOutput(); - duneLocationCalculation4.Output = new TestDuneLocationOutput(); - duneLocationCalculation5.Output = new TestDuneLocationOutput(); - var expectedAffectedItems = new List { hydraulicBoundaryLocationCalculation1, @@ -521,12 +511,7 @@ grassHydraulicBoundaryLocationCalculation4, grassHydraulicBoundaryLocationCalculation5, grassHydraulicBoundaryLocationCalculation6, - duneLocation1, - duneLocationCalculation1, - duneLocationCalculation2, - duneLocationCalculation3, - duneLocationCalculation4, - duneLocationCalculation5 + duneLocation1 }; // Call @@ -542,13 +527,7 @@ Assert.IsFalse(hydraulicBoundaryLocationCalculation6.HasOutput); Assert.IsFalse(hydraulicBoundaryLocationCalculation7.HasOutput); Assert.IsFalse(hydraulicBoundaryLocationCalculation8.HasOutput); - Assert.IsNull(duneLocation1.Calculation.Output); - Assert.IsNull(duneLocationCalculation1.Output); - Assert.IsNull(duneLocationCalculation2.Output); - Assert.IsNull(duneLocationCalculation3.Output); - Assert.IsNull(duneLocationCalculation4.Output); - Assert.IsNull(duneLocationCalculation5.Output); } [Test] @@ -1659,94 +1638,60 @@ } } - #region TestData - public class ClearHydraulicLocationDependentTestCase { public ClearHydraulicLocationDependentTestCase(GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism, - DuneErosionFailureMechanism duneErosionFailureMechanism) + DuneLocation duneLocation) { GrassCoverErosionOutwardsFailureMechanism = grassCoverErosionOutwardsFailureMechanism; - DuneErosionFailureMechanism = duneErosionFailureMechanism; + DuneLocation = duneLocation; var expectedAffectedObjects = new List(); expectedAffectedObjects.AddRange(GetAffectedGrassCoverErosionOutwardsFailureMechanismItems(grassCoverErosionOutwardsFailureMechanism)); - expectedAffectedObjects.AddRange(GetAffectedDuneErosionFailureMechanismItems(duneErosionFailureMechanism)); ExpectedAffectedObjects = expectedAffectedObjects; } public GrassCoverErosionOutwardsFailureMechanism GrassCoverErosionOutwardsFailureMechanism { get; } - public DuneErosionFailureMechanism DuneErosionFailureMechanism { get; } + public DuneLocation DuneLocation { get; } public IEnumerable ExpectedAffectedObjects { get; } private static IEnumerable GetAffectedGrassCoverErosionOutwardsFailureMechanismItems(GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism) { return GrassCoverErosionOutwardsHydraulicBoundaryLocationsTestHelper.GetAllHydraulicBoundaryLocationsCalculationsWithOutput(grassCoverErosionOutwardsFailureMechanism); } - - private static IEnumerable GetAffectedDuneErosionFailureMechanismItems(DuneErosionFailureMechanism duneErosionFailureMechanism) - { - var affectedObjects = new List(); - affectedObjects.AddRange(duneErosionFailureMechanism.DuneLocations.Where(loc => loc.Calculation.Output != null)); - affectedObjects.AddRange(duneErosionFailureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.Where(HasDuneErosionLocationCalculationOutput)); - affectedObjects.AddRange(duneErosionFailureMechanism.CalculationsForMechanismSpecificSignalingNorm.Where(HasDuneErosionLocationCalculationOutput)); - affectedObjects.AddRange(duneErosionFailureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)); - affectedObjects.AddRange(duneErosionFailureMechanism.CalculationsForLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)); - affectedObjects.AddRange(duneErosionFailureMechanism.CalculationsForFactorizedLowerLimitNorm.Where(HasDuneErosionLocationCalculationOutput)); - - return affectedObjects; - } - - private static bool HasHydraulicBoundaryLocationCalculationOutput(HydraulicBoundaryLocationCalculation calculation) - { - return calculation.Output != null; - } - - private static bool HasDuneErosionLocationCalculationOutput(DuneLocationCalculation calculation) - { - return calculation.Output != null; - } } private static IEnumerable GetClearHydraulicLocationDependentData() { var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); ConfigureGrassCoverErosionOutwardsFailureMechanism(grassCoverErosionOutwardsFailureMechanism, false); - var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); - ConfigureDuneErosionFailureMechanism(duneErosionFailureMechanism, false); yield return new TestCaseData(new ClearHydraulicLocationDependentTestCase( grassCoverErosionOutwardsFailureMechanism, - duneErosionFailureMechanism)) + CreateDuneLocation(false))) .SetName("GrassAndDuneLocationNoOutput"); grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); ConfigureGrassCoverErosionOutwardsFailureMechanism(grassCoverErosionOutwardsFailureMechanism, true); - duneErosionFailureMechanism = new DuneErosionFailureMechanism(); - ConfigureDuneErosionFailureMechanism(duneErosionFailureMechanism, false); yield return new TestCaseData(new ClearHydraulicLocationDependentTestCase( grassCoverErosionOutwardsFailureMechanism, - duneErosionFailureMechanism)) + CreateDuneLocation(false))) .SetName("DuneLocationWithoutOutputGrassLocationWithOutput"); grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); ConfigureGrassCoverErosionOutwardsFailureMechanism(grassCoverErosionOutwardsFailureMechanism, false); - duneErosionFailureMechanism = new DuneErosionFailureMechanism(); - ConfigureDuneErosionFailureMechanism(duneErosionFailureMechanism, true); yield return new TestCaseData(new ClearHydraulicLocationDependentTestCase( grassCoverErosionOutwardsFailureMechanism, - duneErosionFailureMechanism)) + CreateDuneLocation(true))) .SetName("GrassLocationWithoutOutputDuneLocationWithOutput"); grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); ConfigureGrassCoverErosionOutwardsFailureMechanism(grassCoverErosionOutwardsFailureMechanism, true); - duneErosionFailureMechanism = new DuneErosionFailureMechanism(); - ConfigureDuneErosionFailureMechanism(duneErosionFailureMechanism, true); yield return new TestCaseData(new ClearHydraulicLocationDependentTestCase( grassCoverErosionOutwardsFailureMechanism, - duneErosionFailureMechanism)) + CreateDuneLocation(true))) .SetName("GrassAndDuneLocationWithOutput"); } @@ -1768,34 +1713,15 @@ } } - private static void ConfigureDuneErosionFailureMechanism(DuneErosionFailureMechanism failureMechanism, bool hasOutput) + private static DuneLocation CreateDuneLocation(bool hasOutput) { - var duneLocation = new TestDuneLocation + return new TestDuneLocation { Calculation = { Output = hasOutput ? new TestDuneLocationOutput() : null } }; - - var duneLocations = new[] - { - duneLocation - }; - - failureMechanism.DuneLocations.AddRange(duneLocations); - failureMechanism.SetDuneLocationCalculations(duneLocations); - - if (hasOutput) - { - failureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.First().Output = new TestDuneLocationOutput(); - failureMechanism.CalculationsForMechanismSpecificSignalingNorm.First().Output = new TestDuneLocationOutput(); - failureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.First().Output = new TestDuneLocationOutput(); - failureMechanism.CalculationsForLowerLimitNorm.First().Output = new TestDuneLocationOutput(); - failureMechanism.CalculationsForFactorizedLowerLimitNorm.First().Output = new TestDuneLocationOutput(); - } } - - #endregion } } \ No newline at end of file