Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsDataSynchronizationServiceTest.cs =================================================================== diff -u -rb4cf8f9c714eaf95f2a59954c893bc2e49b70c0e -r559dd5cbd4cbdfb19366025ffdebaf6f6af511ee --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsDataSynchronizationServiceTest.cs (.../GrassCoverErosionInwardsDataSynchronizationServiceTest.cs) (revision b4cf8f9c714eaf95f2a59954c893bc2e49b70c0e) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsDataSynchronizationServiceTest.cs (.../GrassCoverErosionInwardsDataSynchronizationServiceTest.cs) (revision 559dd5cbd4cbdfb19366025ffdebaf6f6af511ee) @@ -99,6 +99,7 @@ // Setup var hydraulicBoundaryLocation1 = new TestHydraulicBoundaryLocation(); var hydraulicBoundaryLocation2 = new TestHydraulicBoundaryLocation(); + GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(hydraulicBoundaryLocation1); failureMechanism.CalculationsGroup.Children.AddRange(new[] { Index: Riskeer/StabilityStoneCover/src/Riskeer.StabilityStoneCover.Service/StabilityStoneCoverDataSynchronizationService.cs =================================================================== diff -u -r13fe9b75e7ed92704422877e8e7d7079bd323dfe -r559dd5cbd4cbdfb19366025ffdebaf6f6af511ee --- Riskeer/StabilityStoneCover/src/Riskeer.StabilityStoneCover.Service/StabilityStoneCoverDataSynchronizationService.cs (.../StabilityStoneCoverDataSynchronizationService.cs) (revision 13fe9b75e7ed92704422877e8e7d7079bd323dfe) +++ Riskeer/StabilityStoneCover/src/Riskeer.StabilityStoneCover.Service/StabilityStoneCoverDataSynchronizationService.cs (.../StabilityStoneCoverDataSynchronizationService.cs) (revision 559dd5cbd4cbdfb19366025ffdebaf6f6af511ee) @@ -60,7 +60,9 @@ } var affectedItems = new List(); - foreach (StabilityStoneCoverWaveConditionsCalculation calculation in failureMechanism.Calculations.Cast()) + foreach (StabilityStoneCoverWaveConditionsCalculation calculation in failureMechanism.Calculations.Cast() + .Where(c => hydraulicBoundaryLocations.Contains( + c.InputParameters.HydraulicBoundaryLocation))) { affectedItems.AddRange(RiskeerCommonDataSynchronizationService.ClearCalculationOutput(calculation)); affectedItems.AddRange(RiskeerCommonDataSynchronizationService.ClearHydraulicBoundaryLocation(calculation.InputParameters)); Index: Riskeer/StabilityStoneCover/test/Riskeer.StabilityStoneCover.Service.Test/StabilityStoneCoverDataSynchronizationServiceTest.cs =================================================================== diff -u -r13fe9b75e7ed92704422877e8e7d7079bd323dfe -r559dd5cbd4cbdfb19366025ffdebaf6f6af511ee --- Riskeer/StabilityStoneCover/test/Riskeer.StabilityStoneCover.Service.Test/StabilityStoneCoverDataSynchronizationServiceTest.cs (.../StabilityStoneCoverDataSynchronizationServiceTest.cs) (revision 13fe9b75e7ed92704422877e8e7d7079bd323dfe) +++ Riskeer/StabilityStoneCover/test/Riskeer.StabilityStoneCover.Service.Test/StabilityStoneCoverDataSynchronizationServiceTest.cs (.../StabilityStoneCoverDataSynchronizationServiceTest.cs) (revision 559dd5cbd4cbdfb19366025ffdebaf6f6af511ee) @@ -28,6 +28,7 @@ using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Hydraulics; +using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Service; using Riskeer.StabilityStoneCover.Data; using Riskeer.StabilityStoneCover.Data.TestUtil; @@ -65,28 +66,54 @@ public void ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations_WithVariousCalculations_ClearsCalculationsAndReturnsAffectedObjects() { // Setup - StabilityStoneCoverFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(); - StabilityStoneCoverWaveConditionsCalculation[] calculations = failureMechanism.Calculations.Cast().ToArray(); - IObservable[] expectedAffectedCalculations = calculations.Where(c => c.HasOutput) - .Cast() - .ToArray(); - IObservable[] expectedAffectedCalculationInputs = calculations.Select(c => c.InputParameters) - .Where(i => i.HydraulicBoundaryLocation != null) - .Cast() - .ToArray(); + var hydraulicBoundaryLocation1 = new TestHydraulicBoundaryLocation(); + var hydraulicBoundaryLocation2 = new TestHydraulicBoundaryLocation(); + StabilityStoneCoverFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(hydraulicBoundaryLocation1); + failureMechanism.CalculationsGroup.Children.AddRange(new[] + { + new StabilityStoneCoverWaveConditionsCalculation + { + InputParameters = + { + HydraulicBoundaryLocation = hydraulicBoundaryLocation2 + } + }, + new StabilityStoneCoverWaveConditionsCalculation + { + InputParameters = + { + HydraulicBoundaryLocation = hydraulicBoundaryLocation2 + }, + Output = StabilityStoneCoverWaveConditionsOutputTestFactory.Create() + } + }); + + StabilityStoneCoverWaveConditionsCalculation[] calculations = failureMechanism.Calculations.Cast() + .ToArray(); + + StabilityStoneCoverWaveConditionsCalculation[] expectedAffectedCalculations = calculations.Where( + c => c.InputParameters.HydraulicBoundaryLocation == hydraulicBoundaryLocation1 + && c.HasOutput).ToArray(); + + var expectedAffectedItems = new List(expectedAffectedCalculations); + expectedAffectedItems.AddRange(calculations.Select(c => c.InputParameters) + .Where(i => i.HydraulicBoundaryLocation == hydraulicBoundaryLocation1)); + // Call IEnumerable affectedItems = StabilityStoneCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations( - failureMechanism, Enumerable.Empty()); + failureMechanism, new[] + { + hydraulicBoundaryLocation1 + }); // 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: - Assert.IsTrue(failureMechanism.Calculations.Cast() - .All(c => c.InputParameters.HydraulicBoundaryLocation == null && !c.HasOutput)); + Assert.IsTrue(expectedAffectedCalculations.All(c => !c.HasOutput)); + Assert.IsTrue(calculations.All(c => c.InputParameters.HydraulicBoundaryLocation != hydraulicBoundaryLocation1)); - CollectionAssert.AreEquivalent(expectedAffectedCalculations.Concat(expectedAffectedCalculationInputs), - affectedItems); + CollectionAssert.AreEquivalent(expectedAffectedItems, affectedItems); } [Test] @@ -180,7 +207,7 @@ CollectionAssert.AreEquivalent(expectedRemovedObjects, results.RemovedObjects); } - private static StabilityStoneCoverFailureMechanism CreateFullyConfiguredFailureMechanism() + private static StabilityStoneCoverFailureMechanism CreateFullyConfiguredFailureMechanism(HydraulicBoundaryLocation hydraulicBoundaryLocation = null) { var section1 = new FailureMechanismSection("A", new[] { @@ -200,7 +227,10 @@ section2 }, "some/path/to/sections"); - var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0); + if (hydraulicBoundaryLocation == null) + { + hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + } var calculation = new StabilityStoneCoverWaveConditionsCalculation(); var calculationWithOutput = new StabilityStoneCoverWaveConditionsCalculation