Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -rc859a699621f554951e1564bff32646bb76cc257 -rae221df798313584619c15c5504d1d19c7bfdcba --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision c859a699621f554951e1564bff32646bb76cc257) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision ae221df798313584619c15c5504d1d19c7bfdcba) @@ -39,6 +39,14 @@ public class PipingFailureMechanismResultView : FailureMechanismResultView { + private const int initialFailureMechanismResultIndex = 2; + private const int initialFailureMechanismResultProfileProbabilityIndex = 3; + private const int initialFailureMechanismResultSectionProbabilityIndex = 4; + private const int furtherAnalysisNeededIndex = 5; + private const int probabilityRefinementTypeIndex = 6; + private const int refinedProfileProbabilityIndex = 7; + private const int refinedSectionProbabilityIndex = 8; + private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver, PipingScenarioConfigurationPerFailureMechanismSection> scenarioConfigurationsPerSectionObserver; @@ -99,7 +107,18 @@ protected override PipingFailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow(PipingFailureMechanismSectionResult sectionResult) { - return new PipingFailureMechanismSectionResultRow(sectionResult, CreateCalculateStrategy(sectionResult)); + return new PipingFailureMechanismSectionResultRow( + sectionResult, CreateCalculateStrategy(sectionResult), + new PipingFailureMechanismSectionResultRow.ConstructionProperties + { + InitialFailureMechanismResultIndex = initialFailureMechanismResultIndex, + InitialFailureMechanismResultProfileProbabilityIndex = initialFailureMechanismResultProfileProbabilityIndex, + InitialFailureMechanismResultSectionProbabilityIndex = initialFailureMechanismResultSectionProbabilityIndex, + FurtherAnalysisNeededIndex = furtherAnalysisNeededIndex, + ProbabilityRefinementTypeIndex = probabilityRefinementTypeIndex, + RefinedProfileProbabilityIndex = refinedProfileProbabilityIndex, + RefinedSectionProbabilityIndex = refinedSectionProbabilityIndex + }); } protected override void AddDataGridColumns() Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs =================================================================== diff -u -r19c3b0d086d47d2a3896353493c7e838db757736 -rae221df798313584619c15c5504d1d19c7bfdcba --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 19c3b0d086d47d2a3896353493c7e838db757736) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision ae221df798313584619c15c5504d1d19c7bfdcba) @@ -49,17 +49,33 @@ /// The that is /// the source of this row. /// The strategy used to calculate probabilities. + /// The property values required to create an instance of + /// . /// Throw when any parameter is null. internal PipingFailureMechanismSectionResultRow(PipingFailureMechanismSectionResult sectionResult, - IPipingFailureMechanismSectionResultCalculateProbabilityStrategy calculateProbabilityStrategy) + IPipingFailureMechanismSectionResultCalculateProbabilityStrategy calculateProbabilityStrategy, + ConstructionProperties constructionProperties) : base(sectionResult) { if (calculateProbabilityStrategy == null) { throw new ArgumentNullException(nameof(calculateProbabilityStrategy)); } + if (constructionProperties == null) + { + throw new ArgumentNullException(nameof(constructionProperties)); + } + this.calculateProbabilityStrategy = calculateProbabilityStrategy; + + initialFailureMechanismResultIndex = constructionProperties.InitialFailureMechanismResultIndex; + initialFailureMechanismResultProfileProbabilityIndex = constructionProperties.InitialFailureMechanismResultProfileProbabilityIndex; + initialFailureMechanismResultSectionProbabilityIndex = constructionProperties.InitialFailureMechanismResultSectionProbabilityIndex; + furtherAnalysisNeededIndex = constructionProperties.FurtherAnalysisNeededIndex; + probabilityRefinementTypeIndex = constructionProperties.ProbabilityRefinementTypeIndex; + refinedProfileProbabilityIndex = constructionProperties.RefinedProfileProbabilityIndex; + refinedSectionProbabilityIndex = constructionProperties.RefinedSectionProbabilityIndex; } /// @@ -188,37 +204,37 @@ /// /// Sets the initial failure mechanism result index. /// - public int initialFailureMechanismResultIndex { internal get; set; } - + public int InitialFailureMechanismResultIndex { internal get; set; } + /// /// Sets the initial failure mechanism result profile probability index. /// - public int initialFailureMechanismResultProfileProbabilityIndex { internal get; set; } - + public int InitialFailureMechanismResultProfileProbabilityIndex { internal get; set; } + /// /// Sets the initial failure mechanism result section probability index. /// - public int initialFailureMechanismResultSectionProbabilityIndex { internal get; set; } - + public int InitialFailureMechanismResultSectionProbabilityIndex { internal get; set; } + /// /// Sets the further analysis needed index. /// - public int furtherAnalysisNeededIndex { internal get; set; } - + public int FurtherAnalysisNeededIndex { internal get; set; } + /// /// Sets the probability refinement type index. /// - public int probabilityRefinementTypeIndex { internal get; set; } - + public int ProbabilityRefinementTypeIndex { internal get; set; } + /// /// Sets the refined profile probability index. /// - public int refinedProfileProbabilityIndex { internal get; set; } - + public int RefinedProfileProbabilityIndex { internal get; set; } + /// /// Sets the refined section probability index. /// - public int refinedSectionProbabilityIndex { internal get; set; } + public int RefinedSectionProbabilityIndex { internal get; set; } } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -r5412b4f96ab3b27e5f8d053773d88859f165890e -rae221df798313584619c15c5504d1d19c7bfdcba --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 5412b4f96ab3b27e5f8d053773d88859f165890e) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision ae221df798313584619c15c5504d1d19c7bfdcba) @@ -45,14 +45,34 @@ var result = new PipingFailureMechanismSectionResult(section); // Call - void Call() => new PipingFailureMechanismSectionResultRow(result, null); + void Call() => new PipingFailureMechanismSectionResultRow(result, null, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("calculateProbabilityStrategy", exception.ParamName); } [Test] + public void Constructor_ConstructionPropertiesNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var calculateStrategy = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new PipingFailureMechanismSectionResult(section); + + // Call + void Call() => new PipingFailureMechanismSectionResultRow(result, calculateStrategy, null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("constructionProperties", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] public void Constructor_ExpectedValues() { // Setup @@ -69,7 +89,7 @@ var result = new PipingFailureMechanismSectionResult(section); // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); // Assert Assert.IsInstanceOf>(row); @@ -111,7 +131,7 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); // Precondition Assert.AreEqual(profileProbability, row.InitialFailureMechanismResultProfileProbability); @@ -256,7 +276,7 @@ var result = new PipingFailureMechanismSectionResult(section); result.Attach(observer); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); // Call setPropertyAction(row); @@ -277,7 +297,7 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); // Call void Call() => setPropertyAction(row);