Index: Riskeer/Common/src/Riskeer.Common.IO/FileImporters/FailureMechanismSectionUpdateStrategy.cs =================================================================== diff -u -re2d6afdc4d53c7502d16e9bfdb661ba25886e07c -r07b289eb269b6bf8e59e04f928fcb8b4a794bc17 --- Riskeer/Common/src/Riskeer.Common.IO/FileImporters/FailureMechanismSectionUpdateStrategy.cs (.../FailureMechanismSectionUpdateStrategy.cs) (revision e2d6afdc4d53c7502d16e9bfdb661ba25886e07c) +++ Riskeer/Common/src/Riskeer.Common.IO/FileImporters/FailureMechanismSectionUpdateStrategy.cs (.../FailureMechanismSectionUpdateStrategy.cs) (revision 07b289eb269b6bf8e59e04f928fcb8b4a794bc17) @@ -98,7 +98,7 @@ } } - public void DoPostUpdateActions() + public virtual void DoPostUpdateActions() { // Do nothing } Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/FileImporter/PipingFailureMechanismSectionUpdateStrategy.cs =================================================================== diff -u -r41c45fc63fee8f2b180a8f847f9702443d91685f -r07b289eb269b6bf8e59e04f928fcb8b4a794bc17 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/FileImporter/PipingFailureMechanismSectionUpdateStrategy.cs (.../PipingFailureMechanismSectionUpdateStrategy.cs) (revision 41c45fc63fee8f2b180a8f847f9702443d91685f) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/FileImporter/PipingFailureMechanismSectionUpdateStrategy.cs (.../PipingFailureMechanismSectionUpdateStrategy.cs) (revision 07b289eb269b6bf8e59e04f928fcb8b4a794bc17) @@ -20,8 +20,11 @@ // All rights reserved. using System; +using System.Collections.Generic; +using Core.Common.Base; using Riskeer.Common.IO.FileImporters; using Riskeer.Piping.Data; +using Riskeer.Piping.Service; namespace Riskeer.Piping.Plugin.FileImporter { @@ -31,6 +34,8 @@ /// public class PipingFailureMechanismSectionUpdateStrategy : FailureMechanismSectionUpdateStrategy { + private readonly PipingFailureMechanism failureMechanism; + /// /// Creates a new instance of . /// @@ -41,6 +46,19 @@ public PipingFailureMechanismSectionUpdateStrategy( PipingFailureMechanism failureMechanism, PipingFailureMechanismSectionResultUpdateStrategy sectionResultUpdateStrategy) - : base(failureMechanism, sectionResultUpdateStrategy) {} + : base(failureMechanism, sectionResultUpdateStrategy) + { + this.failureMechanism = failureMechanism; + } + + public override void DoPostUpdateActions() + { + IEnumerable affectedObjects = PipingDataSynchronizationService.ClearAllProbabilisticCalculationOutput(failureMechanism); + + foreach (IObservable affectedObject in affectedObjects) + { + affectedObject.NotifyObservers(); + } + } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/FileImporter/PipingFailureMechanismSectionUpdateStrategyTest.cs =================================================================== diff -u -r41c45fc63fee8f2b180a8f847f9702443d91685f -r07b289eb269b6bf8e59e04f928fcb8b4a794bc17 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/FileImporter/PipingFailureMechanismSectionUpdateStrategyTest.cs (.../PipingFailureMechanismSectionUpdateStrategyTest.cs) (revision 41c45fc63fee8f2b180a8f847f9702443d91685f) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/FileImporter/PipingFailureMechanismSectionUpdateStrategyTest.cs (.../PipingFailureMechanismSectionUpdateStrategyTest.cs) (revision 07b289eb269b6bf8e59e04f928fcb8b4a794bc17) @@ -19,9 +19,15 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Linq; +using Core.Common.Base; +using Core.Common.Util.Extensions; using NUnit.Framework; +using Rhino.Mocks; using Riskeer.Common.IO.FileImporters; using Riskeer.Piping.Data; +using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Piping.Data.TestUtil; using Riskeer.Piping.Plugin.FileImporter; namespace Riskeer.Piping.Plugin.Test.FileImporter @@ -33,10 +39,46 @@ public void Constructor_ExpectedValues() { // Call - var updateStrategy = new PipingFailureMechanismSectionUpdateStrategy(new PipingFailureMechanism(), new PipingFailureMechanismSectionResultUpdateStrategy()); + var updateStrategy = new PipingFailureMechanismSectionUpdateStrategy( + new PipingFailureMechanism(), new PipingFailureMechanismSectionResultUpdateStrategy()); // Assert Assert.IsInstanceOf>(updateStrategy); } + + [Test] + public void DoPostUpdateActions_Always_ClearsOutputAndNotifiesObservers() + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()).Repeat.Twice(); + mocks.ReplayAll(); + + var failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.AddRange(new[] + { + new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() + }, + new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }, + new ProbabilisticPipingCalculationScenario() + }); + + failureMechanism.Calculations.ForEachElementDo(c => c.Attach(observer)); + + var replaceStrategy = new PipingFailureMechanismSectionUpdateStrategy(failureMechanism, new PipingFailureMechanismSectionResultUpdateStrategy()); + + // Call + replaceStrategy.DoPostUpdateActions(); + + // Assert + Assert.IsTrue(failureMechanism.Calculations.All(c => !c.HasOutput)); + mocks.VerifyAll(); + } } } \ No newline at end of file