Index: Riskeer/Integration/test/Riskeer.Integration.Service.Test/RiskeerDataSynchronizationServiceTest.cs =================================================================== diff -u -rb14f85d007791f99296896e4a940a0e97ae6d8cf -r270ab241e81b1049a6dc9ef0ce540f290039e82e --- Riskeer/Integration/test/Riskeer.Integration.Service.Test/RiskeerDataSynchronizationServiceTest.cs (.../RiskeerDataSynchronizationServiceTest.cs) (revision b14f85d007791f99296896e4a940a0e97ae6d8cf) +++ Riskeer/Integration/test/Riskeer.Integration.Service.Test/RiskeerDataSynchronizationServiceTest.cs (.../RiskeerDataSynchronizationServiceTest.cs) (revision 270ab241e81b1049a6dc9ef0ce540f290039e82e) @@ -277,7 +277,10 @@ .Select(c => c.InputParameters) .Where(i => i.HydraulicBoundaryLocation != null)); expectedAffectedItems.AddRange(assessmentSection.Piping.Calculations - .Cast>() + .OfType() + .Where(c => !c.InputParameters.UseAssessmentLevelManualInput && c.HasOutput)); + expectedAffectedItems.AddRange(assessmentSection.Piping.Calculations + .OfType() .Where(c => c.HasOutput)); expectedAffectedItems.AddRange(assessmentSection.Piping.Calculations .Cast>() @@ -326,8 +329,12 @@ .All(c => c.InputParameters.HydraulicBoundaryLocation == null && !c.HasOutput)); Assert.IsTrue(assessmentSection.HeightStructures.Calculations.Cast>() .All(c => c.InputParameters.HydraulicBoundaryLocation == null && !c.HasOutput)); + Assert.IsTrue(assessmentSection.Piping.Calculations.OfType() + .All(c => !c.InputParameters.UseAssessmentLevelManualInput && !c.HasOutput)); + Assert.IsTrue(assessmentSection.Piping.Calculations.OfType() + .All(c => !c.HasOutput)); Assert.IsTrue(assessmentSection.Piping.Calculations.Cast>() - .All(c => c.InputParameters.HydraulicBoundaryLocation == null && !c.HasOutput)); + .All(c => c.InputParameters.HydraulicBoundaryLocation == null)); Assert.IsTrue(assessmentSection.StabilityPointStructures.Calculations.Cast>() .All(c => c.InputParameters.HydraulicBoundaryLocation == null && !c.HasOutput)); Assert.IsTrue(assessmentSection.StabilityStoneCover.Calculations.Cast() Index: Riskeer/Piping/src/Riskeer.Piping.Service/PipingDataSynchronizationService.cs =================================================================== diff -u -rde851b1488ab6396c74afda4993973752252f0cc -r270ab241e81b1049a6dc9ef0ce540f290039e82e --- Riskeer/Piping/src/Riskeer.Piping.Service/PipingDataSynchronizationService.cs (.../PipingDataSynchronizationService.cs) (revision de851b1488ab6396c74afda4993973752252f0cc) +++ Riskeer/Piping/src/Riskeer.Piping.Service/PipingDataSynchronizationService.cs (.../PipingDataSynchronizationService.cs) (revision 270ab241e81b1049a6dc9ef0ce540f290039e82e) @@ -128,7 +128,13 @@ } /// - /// Clears the and output for all the calculations in the . + /// Clears: + /// + /// The for all the calculations in the ; + /// The output for all the calculations in the , + /// except for the where + /// is true. + /// /// /// The which contains the calculations. /// An of objects which are affected by removing data. @@ -141,13 +147,15 @@ } var affectedItems = new List(); + affectedItems.AddRange(ClearAllSemiProbabilisticCalculationOutputWithoutManualAssessmentLevel(failureMechanism)); + affectedItems.AddRange(ClearAllProbabilisticCalculationOutput(failureMechanism)); + foreach (IPipingCalculationScenario calculation in failureMechanism.Calculations.Cast>()) { - affectedItems.AddRange(ClearCalculationOutput(calculation) - .Concat(ClearHydraulicBoundaryLocation(calculation.InputParameters))); + affectedItems.AddRange(ClearHydraulicBoundaryLocation(calculation.InputParameters)); } - return affectedItems; + return affectedItems.Distinct(); } /// Index: Riskeer/Piping/test/Riskeer.Piping.Service.Test/PipingDataSynchronizationServiceTest.cs =================================================================== diff -u -r2c97f863718888be8f3b35f4934c0119869b9187 -r270ab241e81b1049a6dc9ef0ce540f290039e82e --- Riskeer/Piping/test/Riskeer.Piping.Service.Test/PipingDataSynchronizationServiceTest.cs (.../PipingDataSynchronizationServiceTest.cs) (revision 2c97f863718888be8f3b35f4934c0119869b9187) +++ Riskeer/Piping/test/Riskeer.Piping.Service.Test/PipingDataSynchronizationServiceTest.cs (.../PipingDataSynchronizationServiceTest.cs) (revision 270ab241e81b1049a6dc9ef0ce540f290039e82e) @@ -238,28 +238,32 @@ { // Setup PipingFailureMechanism failureMechanism = PipingTestDataGenerator.GetPipingFailureMechanismWithAllCalculationConfigurations(); - IPipingCalculationScenario[] 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(); + IPipingCalculationScenario[] calculations = failureMechanism.Calculations.Cast>() + .ToArray(); + + var expectedAffectedItems = new List(); + expectedAffectedItems.AddRange(calculations.OfType() + .Where(c => !c.InputParameters.UseAssessmentLevelManualInput + && c.HasOutput)); + expectedAffectedItems.AddRange(calculations.OfType() + .Where(c => c.HasOutput)); + expectedAffectedItems.AddRange(calculations.Select(c => c.InputParameters) + .Where(i => i.HydraulicBoundaryLocation != null)); // Call IEnumerable affectedItems = PipingDataSynchronizationService.ClearAllCalculationOutputAndHydraulicBoundaryLocations(failureMechanism); // 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(calculations.OfType() + .Where(c => !c.InputParameters.UseAssessmentLevelManualInput) + .All(c => !c.HasOutput)); + Assert.IsTrue(calculations.OfType() + .All(c => !c.HasOutput)); + Assert.IsTrue(calculations.All(c => c.InputParameters.HydraulicBoundaryLocation == null)); - CollectionAssert.AreEquivalent(expectedAffectedCalculations.Concat(expectedAffectedCalculationInputs), - affectedItems); + CollectionAssert.AreEquivalent(expectedAffectedItems, affectedItems); } [Test]