Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -r714c73027a6c63dcde5693e7567a60267cc69ae0 -rc859a699621f554951e1564bff32646bb76cc257 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 714c73027a6c63dcde5693e7567a60267cc69ae0) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision c859a699621f554951e1564bff32646bb76cc257) @@ -24,9 +24,11 @@ using Core.Common.Base; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Forms.Builders; using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; +using Riskeer.Piping.Data.Probabilistic; using Riskeer.Piping.Data.SemiProbabilistic; namespace Riskeer.Piping.Forms.Views @@ -97,11 +99,7 @@ protected override PipingFailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow(PipingFailureMechanismSectionResult sectionResult) { - return new PipingFailureMechanismSectionResultRow( - sectionResult, - new SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( - sectionResult, FailureMechanism.Calculations.OfType(), - FailureMechanism, assessmentSection)); + return new PipingFailureMechanismSectionResultRow(sectionResult, CreateCalculateStrategy(sectionResult)); } protected override void AddDataGridColumns() @@ -142,5 +140,47 @@ DataGridViewControl, nameof(PipingFailureMechanismSectionResultRow.RefinedSectionProbability)); } + + private IPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateCalculateStrategy(PipingFailureMechanismSectionResult sectionResult) + { + if (FailureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic) + { + return CreateSemiProbabilisticCalculateStrategy(sectionResult); + } + + if (FailureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.Probabilistic) + { + return CreateProbabilisticCalculateStrategy(sectionResult); + } + + PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection = GetScenarioConfigurationForSection(sectionResult); + + if (scenarioConfigurationForSection.ScenarioConfigurationType == PipingScenarioConfigurationPerFailureMechanismSectionType.SemiProbabilistic) + { + return CreateSemiProbabilisticCalculateStrategy(sectionResult); + } + + return CreateProbabilisticCalculateStrategy(sectionResult); + } + + private ProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateProbabilisticCalculateStrategy(PipingFailureMechanismSectionResult sectionResult) + { + return new ProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( + sectionResult, FailureMechanism.Calculations.OfType()); + } + + private SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateSemiProbabilisticCalculateStrategy(PipingFailureMechanismSectionResult sectionResult) + { + return new SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( + sectionResult, FailureMechanism.Calculations.OfType(), + FailureMechanism, assessmentSection); + } + + private PipingScenarioConfigurationPerFailureMechanismSection GetScenarioConfigurationForSection(IFailureMechanismSectionResult sectionResult) + { + return FailureMechanism.ScenarioConfigurationsPerFailureMechanismSection + .Single(sc => sc.Section.StartPoint.Equals(sectionResult.Section.StartPoint) + && sc.Section.EndPoint.Equals(sectionResult.Section.EndPoint)); + } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs =================================================================== diff -u -r714c73027a6c63dcde5693e7567a60267cc69ae0 -rc859a699621f554951e1564bff32646bb76cc257 --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision 714c73027a6c63dcde5693e7567a60267cc69ae0) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision c859a699621f554951e1564bff32646bb76cc257) @@ -30,7 +30,11 @@ using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; +using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Piping.Data.SemiProbabilistic; using Riskeer.Piping.Data.TestUtil; +using Riskeer.Piping.Data.TestUtil.Probabilistic; +using Riskeer.Piping.Data.TestUtil.SemiProbabilistic; using Riskeer.Piping.Forms.Views; namespace Riskeer.Piping.Forms.Test.Views @@ -147,15 +151,34 @@ } [Test] - public void FailureMechanismResultsView_AllDataSet_DataGridViewCorrectlyInitialized() + [TestCase(PipingScenarioConfigurationType.SemiProbabilistic, PipingScenarioConfigurationPerFailureMechanismSectionType.Probabilistic, "1/31")] + [TestCase(PipingScenarioConfigurationType.Probabilistic, PipingScenarioConfigurationPerFailureMechanismSectionType.SemiProbabilistic, "1/4")] + [TestCase(PipingScenarioConfigurationType.PerFailureMechanismSection, PipingScenarioConfigurationPerFailureMechanismSectionType.SemiProbabilistic, "1/31")] + [TestCase(PipingScenarioConfigurationType.PerFailureMechanismSection, PipingScenarioConfigurationPerFailureMechanismSectionType.Probabilistic, "1/4")] + public void FailureMechanismResultsView_AllDataSet_DataGridViewCorrectlyInitialized( + PipingScenarioConfigurationType scenarioConfigurationType, + PipingScenarioConfigurationPerFailureMechanismSectionType scenarioConfigurationPerFailureMechanismSectionType, + string probability) { // Setup - var failureMechanism = new PipingFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1"); + + var failureMechanism = new PipingFailureMechanism + { + ScenarioConfigurationType = scenarioConfigurationType + }; FailureMechanismTestHelper.SetSections(failureMechanism, new[] { - FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1") + section }); + failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.First().ScenarioConfigurationType = scenarioConfigurationPerFailureMechanismSectionType; + + failureMechanism.CalculationsGroup.Children.Add( + SemiProbabilisticPipingCalculationTestFactory.CreateCalculation(section)); + failureMechanism.CalculationsGroup.Children.Add( + ProbabilisticPipingCalculationTestFactory.CreateCalculation(section)); + // Call using (ShowFailureMechanismResultsView(failureMechanism)) { @@ -170,8 +193,8 @@ Assert.AreEqual("Section 1", cells[nameColumnIndex].FormattedValue); Assert.AreEqual(true, cells[isRelevantIndex].Value); Assert.AreEqual(InitialFailureMechanismResultType.Adopt, cells[initialFailureMechanismResultIndex].Value); - Assert.AreEqual("-", cells[initialFailureMechanismResultProfileProbabilityIndex].FormattedValue); - Assert.AreEqual("-", cells[initialFailureMechanismResultSectionProbabilityIndex].FormattedValue); + Assert.AreEqual(probability, cells[initialFailureMechanismResultProfileProbabilityIndex].FormattedValue); + Assert.AreEqual(probability, cells[initialFailureMechanismResultSectionProbabilityIndex].FormattedValue); Assert.AreEqual(false, cells[furtherAnalysisNeededIndex].FormattedValue); Assert.AreEqual(ProbabilityRefinementType.Section, cells[probabilityRefinementTypeIndex].Value); Assert.AreEqual("-", cells[refinedProfileProbabilityIndex].FormattedValue);