Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -rae221df798313584619c15c5504d1d19c7bfdcba -rf3dd442bed9a828039f786a3ab21769f4acd6d7a --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision ae221df798313584619c15c5504d1d19c7bfdcba) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision f3dd442bed9a828039f786a3ab21769f4acd6d7a) @@ -108,7 +108,7 @@ protected override PipingFailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow(PipingFailureMechanismSectionResult sectionResult) { return new PipingFailureMechanismSectionResultRow( - sectionResult, CreateCalculateStrategy(sectionResult), + sectionResult, CreateCalculateStrategy(sectionResult), FailureMechanism, assessmentSection, new PipingFailureMechanismSectionResultRow.ConstructionProperties { InitialFailureMechanismResultIndex = initialFailureMechanismResultIndex, Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs =================================================================== diff -u -r297d01e1742867ded4f512269a9b309e664572af -rf3dd442bed9a828039f786a3ab21769f4acd6d7a --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 297d01e1742867ded4f512269a9b309e664572af) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision f3dd442bed9a828039f786a3ab21769f4acd6d7a) @@ -22,6 +22,7 @@ using System; using System.ComponentModel; using Core.Common.Controls.DataGrid; +using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Forms.Helpers; using Riskeer.Common.Forms.TypeConverters; @@ -45,18 +46,24 @@ private readonly int refinedSectionProbabilityIndex; private readonly IPipingFailureMechanismSectionResultCalculateProbabilityStrategy calculateProbabilityStrategy; + private readonly PipingFailureMechanism failureMechanism; + private readonly IAssessmentSection assessmentSection; /// /// Creates a new instance of . /// /// The that is /// the source of this row. /// The strategy used to calculate probabilities. + /// The failure mechanism the section result belongs to. + /// The assessment section the section result belongs to. /// The property values required to create an instance of /// . /// Throw when any parameter is null. internal PipingFailureMechanismSectionResultRow(PipingFailureMechanismSectionResult sectionResult, IPipingFailureMechanismSectionResultCalculateProbabilityStrategy calculateProbabilityStrategy, + PipingFailureMechanism failureMechanism, + IAssessmentSection assessmentSection, ConstructionProperties constructionProperties) : base(sectionResult) { @@ -65,12 +72,24 @@ throw new ArgumentNullException(nameof(calculateProbabilityStrategy)); } + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + if (constructionProperties == null) { throw new ArgumentNullException(nameof(constructionProperties)); } this.calculateProbabilityStrategy = calculateProbabilityStrategy; + this.failureMechanism = failureMechanism; + this.assessmentSection = assessmentSection; initialFailureMechanismResultIndex = constructionProperties.InitialFailureMechanismResultIndex; initialFailureMechanismResultProfileProbabilityIndex = constructionProperties.InitialFailureMechanismResultProfileProbabilityIndex; Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -r297d01e1742867ded4f512269a9b309e664572af -rf3dd442bed9a828039f786a3ab21769f4acd6d7a --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 297d01e1742867ded4f512269a9b309e664572af) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision f3dd442bed9a828039f786a3ab21769f4acd6d7a) @@ -26,6 +26,7 @@ using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; +using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Forms.TestUtil; @@ -55,30 +56,77 @@ public void Constructor_CalculateProbabilityStrategyNull_ThrowsArgumentNullException() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); // Call - void Call() => new PipingFailureMechanismSectionResultRow(result, null, ConstructionProperties); + void Call() => new PipingFailureMechanismSectionResultRow(result, null, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("calculateProbabilityStrategy", exception.ParamName); + mocks.VerifyAll(); } [Test] + public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new PipingFailureMechanismSectionResult(section); + + // Call + void Call() => new PipingFailureMechanismSectionResultRow(result, calculateStrategy, null, assessmentSection, ConstructionProperties); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("failureMechanism", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_AssessmentSectionNull_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, new PipingFailureMechanism(), null, ConstructionProperties); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("assessmentSection", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] public void Constructor_ConstructionPropertiesNull_ThrowsArgumentNullException() { // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); // Call - void Call() => new PipingFailureMechanismSectionResultRow(result, calculateStrategy, null); + void Call() => new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, null); // Assert var exception = Assert.Throws(Call); @@ -97,6 +145,7 @@ var calculateStrategy = mocks.Stub(); calculateStrategy.Stub(c => c.CalculateProfileProbability()).Return(profileProbability); calculateStrategy.Stub(c => c.CalculateSectionProbability()).Return(sectionProbability); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -106,7 +155,7 @@ }; // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Assert Assert.IsInstanceOf>(row); @@ -154,12 +203,13 @@ var calculateStrategy = mocks.Stub(); calculateStrategy.Stub(c => c.CalculateProfileProbability()).Return(profileProbability); calculateStrategy.Stub(c => c.CalculateSectionProbability()).Return(sectionProbability); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Precondition Assert.AreEqual(profileProbability, row.InitialFailureMechanismResultProfileProbability); @@ -182,6 +232,7 @@ // Given var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -190,7 +241,7 @@ ProbabilityRefinementType = ProbabilityRefinementType.Both }; - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Precondition Assert.AreEqual(result.RefinedProfileProbability, row.RefinedProfileProbability); @@ -327,6 +378,7 @@ // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); @@ -335,7 +387,7 @@ var result = new PipingFailureMechanismSectionResult(section); result.Attach(observer); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Call setPropertyAction(row); @@ -351,12 +403,13 @@ // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Call void Call() => setPropertyAction(row); @@ -396,6 +449,7 @@ // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -408,7 +462,7 @@ }; // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Assert IDictionary columnStateDefinitions = row.ColumnStateDefinitions; @@ -441,6 +495,7 @@ // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -450,7 +505,7 @@ }; // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Assert IDictionary columnStateDefinitions = row.ColumnStateDefinitions; @@ -471,6 +526,7 @@ // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -481,7 +537,7 @@ }; // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Assert IDictionary columnStateDefinitions = row.ColumnStateDefinitions; @@ -507,6 +563,7 @@ // Setup var mocks = new MockRepository(); var calculateStrategy = mocks.Stub(); + var assessmentSection = mocks.Stub(); mocks.ReplayAll(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -517,7 +574,7 @@ }; // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanism(), assessmentSection, ConstructionProperties); // Assert IDictionary columnStateDefinitions = row.ColumnStateDefinitions;