Index: Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs =================================================================== diff -u -r280a47e5d71eee95b1c8d0a247a79cc7be2629fb -r2f8a00af2f3ec9b31b745d2e11d151c6322a7d73 --- Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision 280a47e5d71eee95b1c8d0a247a79cc7be2629fb) +++ Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision 2f8a00af2f3ec9b31b745d2e11d151c6322a7d73) @@ -100,7 +100,8 @@ { GetViewName = (view, context) => context.WrappedData.Name, Image = RiskeerCommonFormsResources.FailureMechanismIcon, - CreateInstance = context => new WaveImpactAsphaltCoverFailurePathView(context.WrappedData, context.Parent) + CreateInstance = context => new WaveImpactAsphaltCoverFailurePathView(context.WrappedData, context.Parent), + CloseForData = CloseFailurePathViewForData }; yield return new ViewInfo, @@ -268,6 +269,16 @@ #region ViewInfos + private static bool CloseFailurePathViewForData(WaveImpactAsphaltCoverFailurePathView view, object dataToCloseFor) + { + var assessmentSection = dataToCloseFor as IAssessmentSection; + var failureMechanism = dataToCloseFor as WaveImpactAsphaltCoverFailureMechanism; + + return assessmentSection != null + ? ReferenceEquals(view.AssessmentSection, assessmentSection) + : ReferenceEquals(view.FailureMechanism, failureMechanism); + } + private static bool CloseFailureMechanismResultViewForData(WaveImpactAsphaltCoverFailureMechanismResultView view, object dataToCloseFor) { WaveImpactAsphaltCoverFailureMechanism failureMechanism = null; Index: Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/ViewInfos/WaveImpactAsphaltCoverFailurePathViewInfoTest.cs =================================================================== diff -u -r7e8b7562d2dec62c1c5c0a205e1f7f4eca7243fc -r2f8a00af2f3ec9b31b745d2e11d151c6322a7d73 --- Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/ViewInfos/WaveImpactAsphaltCoverFailurePathViewInfoTest.cs (.../WaveImpactAsphaltCoverFailurePathViewInfoTest.cs) (revision 7e8b7562d2dec62c1c5c0a205e1f7f4eca7243fc) +++ Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/ViewInfos/WaveImpactAsphaltCoverFailurePathViewInfoTest.cs (.../WaveImpactAsphaltCoverFailurePathViewInfoTest.cs) (revision 2f8a00af2f3ec9b31b745d2e11d151c6322a7d73) @@ -115,5 +115,77 @@ Assert.AreSame(assessmentSection, view.AssessmentSection); } } + + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var otherAssessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + + var view = new WaveImpactAsphaltCoverFailurePathView(failureMechanism, assessmentSection); + + // Call + bool closeForData = info.CloseForData(view, otherAssessmentSection); + + // Assert + Assert.IsFalse(closeForData); + + mocks.VerifyAll(); + } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + + var view = new WaveImpactAsphaltCoverFailurePathView(failureMechanism, assessmentSection); + + // Call + bool closeForData = info.CloseForData(view, assessmentSection); + + // Assert + Assert.IsTrue(closeForData); + + mocks.VerifyAll(); + } + + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var otherWaveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + + var view = new WaveImpactAsphaltCoverFailurePathView(failureMechanism, assessmentSection); + + // Call + bool closeForData = info.CloseForData(view, otherWaveImpactAsphaltCoverFailureMechanism); + + // Assert + Assert.IsFalse(closeForData); + } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + + var view = new WaveImpactAsphaltCoverFailurePathView(failureMechanism, assessmentSection); + + // Call + bool closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } } } \ No newline at end of file