Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/FileImporter/PipingFailureMechanismSectionUpdateStrategy.cs =================================================================== diff -u -rc37eebd9171a53987f5929013edbe3d82e618ed0 -r2ceb7d86b0d6e584f5aef913de96c88789e9cf0e --- Riskeer/Piping/src/Riskeer.Piping.Plugin/FileImporter/PipingFailureMechanismSectionUpdateStrategy.cs (.../PipingFailureMechanismSectionUpdateStrategy.cs) (revision c37eebd9171a53987f5929013edbe3d82e618ed0) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/FileImporter/PipingFailureMechanismSectionUpdateStrategy.cs (.../PipingFailureMechanismSectionUpdateStrategy.cs) (revision 2ceb7d86b0d6e584f5aef913de96c88789e9cf0e) @@ -21,7 +21,9 @@ using System; using System.Collections.Generic; +using System.Linq; using Core.Common.Base; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.IO.FileImporters; using Riskeer.Piping.Data; using Riskeer.Piping.Service; @@ -51,14 +53,16 @@ this.failureMechanism = failureMechanism; } - public override void DoPostUpdateActions() + public override IEnumerable UpdateSectionsWithImportedData(IEnumerable importedFailureMechanismSections, string sourcePath) { - IEnumerable affectedObjects = PipingDataSynchronizationService.ClearAllProbabilisticCalculationOutput(failureMechanism); + List affectedObjects = base.UpdateSectionsWithImportedData(importedFailureMechanismSections, sourcePath).ToList(); + affectedObjects.Add(failureMechanism.ScenarioConfigurationsPerFailureMechanismSection); + return affectedObjects; + } - foreach (IObservable affectedObject in affectedObjects) - { - affectedObject.NotifyObservers(); - } + public override IEnumerable DoPostUpdateActions() + { + return PipingDataSynchronizationService.ClearAllProbabilisticCalculationOutput(failureMechanism); } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/FileImporter/PipingFailureMechanismSectionUpdateStrategyTest.cs =================================================================== diff -u -rc37eebd9171a53987f5929013edbe3d82e618ed0 -r2ceb7d86b0d6e584f5aef913de96c88789e9cf0e --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/FileImporter/PipingFailureMechanismSectionUpdateStrategyTest.cs (.../PipingFailureMechanismSectionUpdateStrategyTest.cs) (revision c37eebd9171a53987f5929013edbe3d82e618ed0) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/FileImporter/PipingFailureMechanismSectionUpdateStrategyTest.cs (.../PipingFailureMechanismSectionUpdateStrategyTest.cs) (revision 2ceb7d86b0d6e584f5aef913de96c88789e9cf0e) @@ -19,11 +19,13 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Collections.Generic; using System.Linq; using Core.Common.Base; -using Core.Common.Util.Extensions; +using Core.Common.TestUtil; using NUnit.Framework; -using Rhino.Mocks; +using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.TestUtil; using Riskeer.Common.IO.FileImporters; using Riskeer.Piping.Data; using Riskeer.Piping.Data.Probabilistic; @@ -47,38 +49,65 @@ } [Test] - public void DoPostUpdateActions_Always_ClearsOutputAndNotifiesObservers() + public void UpdateSectionsWithImportedData_WithValidData_UpdatesDataAndReturnsAffectedObjects() { // Setup - var mocks = new MockRepository(); - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()).Repeat.Twice(); - mocks.ReplayAll(); + var failureMechanism = new PipingFailureMechanism(); + var failureMechanismSectionUpdateStrategy = new PipingFailureMechanismSectionUpdateStrategy( + failureMechanism, new PipingFailureMechanismSectionResultUpdateStrategy()); + string sourcePath = TestHelper.GetScratchPadPath(); + FailureMechanismSection[] sections = + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection() + }; + // Call + IEnumerable affectedObjects = failureMechanismSectionUpdateStrategy.UpdateSectionsWithImportedData(sections, sourcePath); + + // Assert + Assert.AreEqual(sourcePath, failureMechanism.FailureMechanismSectionSourcePath); + Assert.AreEqual(sections.Single(), failureMechanism.Sections.Single()); + CollectionAssert.AreEqual(new IObservable[] + { + failureMechanism, + failureMechanism.SectionResults, + failureMechanism.ScenarioConfigurationsPerFailureMechanismSection + }, affectedObjects); + } + + [Test] + public void DoPostUpdateActions_Always_ClearsOutputAndReturnsAffectedObjects() + { + // Setup + var calculation1 = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() + }; + var calculation2 = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }; + var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.AddRange(new[] { - new ProbabilisticPipingCalculationScenario - { - Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() - }, - new ProbabilisticPipingCalculationScenario - { - Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() - }, + calculation1, + calculation2, new ProbabilisticPipingCalculationScenario() }); - failureMechanism.Calculations.ForEachElementDo(c => c.Attach(observer)); - var replaceStrategy = new PipingFailureMechanismSectionUpdateStrategy(failureMechanism, new PipingFailureMechanismSectionResultUpdateStrategy()); // Call - replaceStrategy.DoPostUpdateActions(); + IEnumerable affectedObjects = replaceStrategy.DoPostUpdateActions(); // Assert Assert.IsTrue(failureMechanism.Calculations.All(c => !c.HasOutput)); - mocks.VerifyAll(); + CollectionAssert.AreEqual(new[] + { + calculation1, + calculation2 + }, affectedObjects); } } } \ No newline at end of file