Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r3ae3c4fed4f8cacdda1f0d72df76dbe2ecabe2d0 -r82a5973b3828fbc6f97f434f688d7b83590323f7 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 3ae3c4fed4f8cacdda1f0d72df76dbe2ecabe2d0) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 82a5973b3828fbc6f97f434f688d7b83590323f7) @@ -316,7 +316,8 @@ GetViewData = context => context.WrappedData, GetViewName = (view, context) => PipingFormsResources.ProbabilisticProfileSpecificOutput_DisplayName, Image = RiskeerCommonFormsResources.GeneralOutputIcon, - CloseForData = CloseProbabilisticPipingOutputViewForData, + CloseForData = (view, o) => CloseProbabilisticPipingOutputViewForData( + view, o, calculation => (PartialProbabilisticPipingOutput) calculation.Output.ProfileSpecificOutput), AdditionalDataCheck = context => context.WrappedData.HasOutput && context.WrappedData.Output.ProfileSpecificOutput.HasGeneralResult && context.WrappedData.Output.ProfileSpecificOutput is PartialProbabilisticFaultTreePipingOutput, @@ -330,7 +331,8 @@ GetViewData = context => context.WrappedData, GetViewName = (view, context) => PipingFormsResources.ProbabilisticProfileSpecificOutput_DisplayName, Image = RiskeerCommonFormsResources.GeneralOutputIcon, - CloseForData = CloseProbabilisticPipingOutputViewForData, + CloseForData = (view, o) => CloseProbabilisticPipingOutputViewForData( + view, o, calculation => (PartialProbabilisticPipingOutput) calculation.Output.ProfileSpecificOutput), AdditionalDataCheck = context => context.WrappedData.HasOutput && context.WrappedData.Output.ProfileSpecificOutput.HasGeneralResult && context.WrappedData.Output.ProfileSpecificOutput is PartialProbabilisticSubMechanismPipingOutput, @@ -347,7 +349,8 @@ GetViewData = context => context.WrappedData, GetViewName = (view, context) => PipingFormsResources.ProbabilisticSectionSpecificOutput_DisplayName, Image = RiskeerCommonFormsResources.GeneralOutputIcon, - CloseForData = CloseProbabilisticPipingOutputViewForData, + CloseForData = (view, o) => CloseProbabilisticPipingOutputViewForData( + view, o, calculation => (PartialProbabilisticPipingOutput) calculation.Output.SectionSpecificOutput), AdditionalDataCheck = context => context.WrappedData.HasOutput && context.WrappedData.Output.SectionSpecificOutput.HasGeneralResult && context.WrappedData.Output.SectionSpecificOutput is PartialProbabilisticFaultTreePipingOutput, @@ -364,7 +367,8 @@ GetViewData = context => context.WrappedData, GetViewName = (view, context) => PipingFormsResources.ProbabilisticSectionSpecificOutput_DisplayName, Image = RiskeerCommonFormsResources.GeneralOutputIcon, - CloseForData = CloseProbabilisticPipingOutputViewForData, + CloseForData = (view, o) => CloseProbabilisticPipingOutputViewForData( + view, o, calculation => (PartialProbabilisticPipingOutput) calculation.Output.SectionSpecificOutput), AdditionalDataCheck = context => context.WrappedData.HasOutput && context.WrappedData.Output.SectionSpecificOutput.HasGeneralResult && context.WrappedData.Output.SectionSpecificOutput is PartialProbabilisticSubMechanismPipingOutput, @@ -726,12 +730,19 @@ return calculations != null && calculations.Any(ci => ReferenceEquals(view.Data, ci)); } - private static bool CloseProbabilisticPipingOutputViewForData(GeneralResultIllustrationPointView view, object o) + private static bool CloseProbabilisticPipingOutputViewForData( + GeneralResultIllustrationPointView view, object o, + Func> getPartialOutputFunc) where T : TopLevelIllustrationPointBase { + var calculation = (ProbabilisticPipingCalculationScenario) view.Data; + if (o is GeneralResult illustrationPoints) + { + return ReferenceEquals(getPartialOutputFunc(calculation).GeneralResult, illustrationPoints); + } + if (o is ProbabilisticPipingOutput output) { - var calculation = (ProbabilisticPipingCalculationScenario) view.Data; return ReferenceEquals(calculation.Output, output); } Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticPipingOutputViewInfoTestBase.cs =================================================================== diff -u -r3ae3c4fed4f8cacdda1f0d72df76dbe2ecabe2d0 -r82a5973b3828fbc6f97f434f688d7b83590323f7 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticPipingOutputViewInfoTestBase.cs (.../ProbabilisticPipingOutputViewInfoTestBase.cs) (revision 3ae3c4fed4f8cacdda1f0d72df76dbe2ecabe2d0) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticPipingOutputViewInfoTestBase.cs (.../ProbabilisticPipingOutputViewInfoTestBase.cs) (revision 82a5973b3828fbc6f97f434f688d7b83590323f7) @@ -34,7 +34,6 @@ using Riskeer.Piping.Data; using Riskeer.Piping.Data.Probabilistic; using Riskeer.Piping.Data.SoilProfile; -using Riskeer.Piping.Data.TestUtil; using Riskeer.Piping.Forms.PresentationObjects; using Riskeer.Piping.Forms.PresentationObjects.Probabilistic; using Riskeer.Piping.Primitives; @@ -159,10 +158,7 @@ // Setup var calculationScenario = new ProbabilisticPipingCalculationScenario { - Output = GetOutputWithCorrectIllustrationPoints(new GeneralResult( - new WindDirection("test", 0), - new Stochast[0], - new TTopLevelIllustrationPoint[0])) + Output = GetOutputWithCorrectIllustrationPoints(GetGeneralResult()) }; TOutputContext context = GetContext(calculationScenario); @@ -194,7 +190,7 @@ { Output = GetOutputWithCorrectIllustrationPoints(null) }; - + using (IView view = GetView(calculationScenario)) { // Call @@ -213,7 +209,7 @@ { Output = GetOutputWithCorrectIllustrationPoints(null) }; - + using (IView view = GetView(calculationScenario)) { // Call @@ -224,6 +220,46 @@ } } + [Test] + public void CloseForData_ViewCorrespondingToRemovedIllustrationPoints_ReturnsTrue() + { + // Setup + GeneralResult illustrationPoints = GetGeneralResult(); + + var calculationScenario = new ProbabilisticPipingCalculationScenario + { + Output = GetOutputWithCorrectIllustrationPoints(illustrationPoints) + }; + + using (IView view = GetView(calculationScenario)) + { + // Call + bool closeForData = info.CloseForData(view, illustrationPoints); + + // Assert + Assert.IsTrue(closeForData); + } + } + + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedIllustrationPoints_ReturnsFalse() + { + // Setup + var calculationScenario = new ProbabilisticPipingCalculationScenario + { + Output = GetOutputWithCorrectIllustrationPoints(GetGeneralResult()) + }; + + using (IView view = GetView(calculationScenario)) + { + // Call + bool closeForData = info.CloseForData(view, GetGeneralResult()); + + // Assert + Assert.IsFalse(closeForData); + } + } + protected abstract TOutputContext GetContext(ProbabilisticPipingCalculationScenario calculationScenario); protected abstract ProbabilisticPipingOutput GetOutputWithCorrectIllustrationPoints(GeneralResult generalResult); @@ -282,5 +318,13 @@ } }, new AssessmentSectionStub()); } + + private static GeneralResult GetGeneralResult() + { + return new GeneralResult( + new WindDirection("test", 0), + new Stochast[0], + new TTopLevelIllustrationPoint[0]); + } } } \ No newline at end of file