Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r0df66b99f0cff023a96fc519b6f345a6a9d212e3 -r56d09466ed8151f35d3fc9c460a07bd5627989c9 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 0df66b99f0cff023a96fc519b6f345a6a9d212e3) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 56d09466ed8151f35d3fc9c460a07bd5627989c9) @@ -128,11 +128,7 @@ }; yield return new PropertyInfo { - CreateInstance = context => new ProbabilisticFaultTreePipingProfileSpecificOutputProperties( - (PartialProbabilisticFaultTreePipingOutput) context.WrappedData.Output?.ProfileSpecificOutput, - context.WrappedData, - context.FailureMechanism, - context.AssessmentSection) + CreateInstance = CreateProbabilisticPipingProfileSpecificOutputProperties }; yield return new PropertyInfo { @@ -522,6 +518,30 @@ }; } + #region PropertyInfos + + #region ProbabilisticPipingProfileSpecificOutputContext PropertyInfo + + private static ProbabilisticPipingProfileSpecificOutputProperties CreateProbabilisticPipingProfileSpecificOutputProperties( + ProbabilisticPipingProfileSpecificOutputContext context) + { + switch (context.WrappedData.Output?.ProfileSpecificOutput) + { + case PartialProbabilisticFaultTreePipingOutput faultTreePipingOutput: + return new ProbabilisticFaultTreePipingProfileSpecificOutputProperties( + faultTreePipingOutput, context.WrappedData, context.FailureMechanism, context.AssessmentSection); + case PartialProbabilisticSubMechanismPipingOutput subMechanismPipingOutput: + return new ProbabilisticSubMechanismPipingProfileSpecificOutputProperties( + subMechanismPipingOutput, context.WrappedData, context.FailureMechanism, context.AssessmentSection); + default: + return null; + } + } + + #endregion + + #endregion + #region ViewInfos private static bool ClosePipingFailureMechanismViewForData(PipingFailureMechanismView view, object o) Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PropertyInfos/Probabilistic/ProbabilisticPipingProfileSpecificOutputPropertyInfoTest.cs =================================================================== diff -u -rd108d281eac4c96d0ff49458436edc6698d4b8e4 -r56d09466ed8151f35d3fc9c460a07bd5627989c9 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PropertyInfos/Probabilistic/ProbabilisticPipingProfileSpecificOutputPropertyInfoTest.cs (.../ProbabilisticPipingProfileSpecificOutputPropertyInfoTest.cs) (revision d108d281eac4c96d0ff49458436edc6698d4b8e4) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PropertyInfos/Probabilistic/ProbabilisticPipingProfileSpecificOutputPropertyInfoTest.cs (.../ProbabilisticPipingProfileSpecificOutputPropertyInfoTest.cs) (revision 56d09466ed8151f35d3fc9c460a07bd5627989c9) @@ -58,7 +58,7 @@ } [Test] - public void CreateInstance_WithContext_ExpectedProperties() + public void CreateInstance_WithContextWithPartialFaultTreeOutput_ExpectedProperties() { // Setup TestPipingFailureMechanism failureMechanism = TestPipingFailureMechanism.GetFailureMechanismWithSurfaceLinesAndStochasticSoilModels(); @@ -81,8 +81,63 @@ IObjectProperties objectProperties = info.CreateInstance(context); // Assert - Assert.IsInstanceOf(objectProperties); + Assert.IsInstanceOf(objectProperties); Assert.AreSame(context.WrappedData.Output.ProfileSpecificOutput, objectProperties.Data); } + + [Test] + public void CreateInstance_WithContextWithPartialSubMechanismOutput_ExpectedProperties() + { + // Setup + TestPipingFailureMechanism failureMechanism = TestPipingFailureMechanism.GetFailureMechanismWithSurfaceLinesAndStochasticSoilModels(); + + var calculation = new ProbabilisticPipingCalculationScenario + { + InputParameters = + { + SurfaceLine = failureMechanism.SurfaceLines.First() + }, + Output = new ProbabilisticPipingOutput(PipingTestDataGenerator.GetRandomPartialProbabilisticSubMechanismPipingOutput(), + PipingTestDataGenerator.GetRandomPartialProbabilisticSubMechanismPipingOutput()) + }; + + var context = new ProbabilisticPipingProfileSpecificOutputContext(calculation, + failureMechanism, + new AssessmentSectionStub()); + + // Call + IObjectProperties objectProperties = info.CreateInstance(context); + + // Assert + Assert.IsInstanceOf(objectProperties); + Assert.AreSame(context.WrappedData.Output.ProfileSpecificOutput, objectProperties.Data); + } + + [Test] + public void CreateInstance_WithContextWithOtherPartialOutput_Null() + { + // Setup + TestPipingFailureMechanism failureMechanism = TestPipingFailureMechanism.GetFailureMechanismWithSurfaceLinesAndStochasticSoilModels(); + + var calculation = new ProbabilisticPipingCalculationScenario + { + InputParameters = + { + SurfaceLine = failureMechanism.SurfaceLines.First() + }, + Output = new ProbabilisticPipingOutput(PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput(), + PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput()) + }; + + var context = new ProbabilisticPipingProfileSpecificOutputContext(calculation, + failureMechanism, + new AssessmentSectionStub()); + + // Call + IObjectProperties objectProperties = info.CreateInstance(context); + + // Assert + Assert.IsNull(objectProperties); + } } } \ No newline at end of file