Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismResultView.cs =================================================================== diff -u -r68ec2e96b004450e3b884fac10d1e7f6d7f18935 -r34d95e966db6e2d2d68bda8bfb6529f5788c5d3a --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismResultView.cs (.../StabilityPointStructuresFailureMechanismResultView.cs) (revision 68ec2e96b004450e3b884fac10d1e7f6d7f18935) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismResultView.cs (.../StabilityPointStructuresFailureMechanismResultView.cs) (revision 34d95e966db6e2d2d68bda8bfb6529f5788c5d3a) @@ -95,7 +95,14 @@ protected override object CreateFailureMechanismSectionResultRow(StabilityPointStructuresFailureMechanismSectionResult sectionResult) { - return new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult); + if (FailureMechanism == null) + { + return null; + } + + return new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult, + (StabilityPointStructuresFailureMechanism) FailureMechanism, + assessmentSection); } protected override void Dispose(bool disposing) Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismSectionResultRow.cs =================================================================== diff -u -rad12f4e2c4a765cc6c20e9f17ac051a99644ec44 -r34d95e966db6e2d2d68bda8bfb6529f5788c5d3a --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismSectionResultRow.cs (.../StabilityPointStructuresFailureMechanismSectionResultRow.cs) (revision ad12f4e2c4a765cc6c20e9f17ac051a99644ec44) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismSectionResultRow.cs (.../StabilityPointStructuresFailureMechanismSectionResultRow.cs) (revision 34d95e966db6e2d2d68bda8bfb6529f5788c5d3a) @@ -21,6 +21,7 @@ using System; using System.ComponentModel; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Forms.TypeConverters; using Ringtoets.Common.Forms.Views; @@ -34,15 +35,36 @@ public class StabilityPointStructuresFailureMechanismSectionResultRow : FailureMechanismSectionResultRow { + private readonly StabilityPointStructuresFailureMechanism failureMechanism; + private readonly IAssessmentSection assessmentSection; + /// /// Creates a new instance of . /// /// The to wrap /// so that it can be displayed as a row. - /// Thrown when is null. - public StabilityPointStructuresFailureMechanismSectionResultRow(StabilityPointStructuresFailureMechanismSectionResult sectionResult) - : base(sectionResult) {} + /// The failure mechanism the result belongs to. + /// The assessment section the result belongs to. + /// Thrown when any parameter is null. + public StabilityPointStructuresFailureMechanismSectionResultRow(StabilityPointStructuresFailureMechanismSectionResult sectionResult, + StabilityPointStructuresFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) + : base(sectionResult) + { + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + + this.failureMechanism = failureMechanism; + this.assessmentSection = assessmentSection; + } + /// /// Gets the . /// Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismResultViewTest.cs =================================================================== diff -u -r68ec2e96b004450e3b884fac10d1e7f6d7f18935 -r34d95e966db6e2d2d68bda8bfb6529f5788c5d3a --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismResultViewTest.cs (.../StabilityPointStructuresFailureMechanismResultViewTest.cs) (revision 68ec2e96b004450e3b884fac10d1e7f6d7f18935) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismResultViewTest.cs (.../StabilityPointStructuresFailureMechanismResultViewTest.cs) (revision 34d95e966db6e2d2d68bda8bfb6529f5788c5d3a) @@ -265,7 +265,7 @@ AssessmentLayerThree = (RoundedDouble) random.NextDouble() }; - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { // When view.Data = new[] @@ -333,7 +333,7 @@ AssessmentLayerOne = assessmentLayerOneState, AssessmentLayerThree = (RoundedDouble) random.NextDouble() }; - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { view.Data = new[] { @@ -388,7 +388,7 @@ public void GivenSectionResultWithoutCalculation_ThenLayerTwoAErrorTooltip(AssessmentLayerOneState assessmentLayerOneState) { // Given - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { FailureMechanismSection section = CreateSimpleFailureMechanismSection(); var sectionResult = new StabilityPointStructuresFailureMechanismSectionResult(section) @@ -421,7 +421,7 @@ AssessmentLayerOneState assessmentLayerOneState) { // Given - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { var calculation = new StructuresCalculation(); FailureMechanismSection section = CreateSimpleFailureMechanismSection(); @@ -456,7 +456,7 @@ public void GivenSectionResultAndFailedCalculation_ThenLayerTwoAErrorTooltip(AssessmentLayerOneState assessmentLayerOneState) { // Given - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { var calculation = new StructuresCalculation { @@ -492,7 +492,7 @@ public void GivenSectionResultAndSuccessfulCalculation_ThenLayerTwoANoError() { // Given - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { const double probability = 0.56789; var calculation = new StructuresCalculation @@ -529,7 +529,7 @@ public void GivenSectionResultAndAssessmentLayerOneStateSufficient_ThenLayerTwoANoError( StabilityPointStructuresFailureMechanismSectionResult sectionResult, string expectedValue) { - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { view.Data = new[] { @@ -557,7 +557,7 @@ AssessmentLayerOneState assessmentLayerOneState) { // Given - using (StabilityPointStructuresFailureMechanismResultView view = ShowFailureMechanismResultsView()) + using (StabilityPointStructuresFailureMechanismResultView view = CreateConfiguredFailureMechanismResultsView()) { const double probability = 0.56789; var successfulCalculation = new StructuresCalculation Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -rf4049b9b0967513aeadfddb1fe58efa3b3aa1677 -r34d95e966db6e2d2d68bda8bfb6529f5788c5d3a --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismSectionResultRowTest.cs (.../StabilityPointStructuresFailureMechanismSectionResultRowTest.cs) (revision f4049b9b0967513aeadfddb1fe58efa3b3aa1677) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismSectionResultRowTest.cs (.../StabilityPointStructuresFailureMechanismSectionResultRowTest.cs) (revision 34d95e966db6e2d2d68bda8bfb6529f5788c5d3a) @@ -22,6 +22,8 @@ using System; using Core.Common.TestUtil; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; @@ -40,11 +42,17 @@ public void Constructor_WithParameters_ExpectedValues() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new StabilityPointStructuresFailureMechanismSectionResult(section); + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + // Call - var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result); + var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result, failureMechanism, assessmentSection); // Assert Assert.IsInstanceOf>(row); @@ -55,25 +63,69 @@ nameof(StabilityPointStructuresFailureMechanismSectionResultRow.AssessmentLayerTwoA)); TestHelper.AssertTypeConverter( nameof(StabilityPointStructuresFailureMechanismSectionResultRow.AssessmentLayerThree)); + mocks.VerifyAll(); } [Test] + public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new StabilityPointStructuresFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => new StabilityPointStructuresFailureMechanismSectionResultRow(result, null, assessmentSection); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new StabilityPointStructuresFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => new StabilityPointStructuresFailureMechanismSectionResultRow( + result, new StabilityPointStructuresFailureMechanism(), null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] public void AssessmentLayerTwoA_NoCalculationSet_ReturnNaN() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var sectionResult = new StabilityPointStructuresFailureMechanismSectionResult(section); // Precondition Assert.IsNull(sectionResult.Calculation); - var resultRow = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult); + var resultRow = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult, failureMechanism, assessmentSection); // Call double assessmentLayerTwoA = resultRow.AssessmentLayerTwoA; // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] @@ -82,6 +134,12 @@ public void AssessmentLayerTwoA_CalculationNotDone_ReturnNaN(CalculationScenarioStatus status) { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + var calculation = new StructuresCalculation(); if (status == CalculationScenarioStatus.Failed) { @@ -94,19 +152,26 @@ Calculation = calculation }; - var resultRow = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult); + var resultRow = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult, failureMechanism, assessmentSection); // Call double assessmentLayerTwoA = resultRow.AssessmentLayerTwoA; // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] public void AssessmentLayerTwoA_CalculationSuccessful_ReturnAssessmentLayerTwoA() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + const double probability = 0.95; var calculation = new StructuresCalculation { @@ -119,38 +184,52 @@ Calculation = calculation }; - var resultRow = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult); + var resultRow = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult, failureMechanism, assessmentSection); // Call double assessmentLayerTwoA = resultRow.AssessmentLayerTwoA; // Assert Assert.AreEqual(probability, assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] public void GetSectionResultCalculation_NoCalculationSetOnSectionResult_ReturnNull() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new StabilityPointStructuresFailureMechanismSectionResult(section); // Precondition Assert.IsNull(result.Calculation); - var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result); + var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result, failureMechanism, assessmentSection); // Call StructuresCalculation calculation = row.GetSectionResultCalculation(); // Assert Assert.IsNull(calculation); + mocks.VerifyAll(); } [Test] public void GetSectionResultCalculation_WithCalculationSetOnSectionResult_ReturnCalculation() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + var expectedCalculation = new StructuresCalculation(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -159,30 +238,38 @@ Calculation = expectedCalculation }; - var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result); + var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result, failureMechanism, assessmentSection); // Call StructuresCalculation calculation = row.GetSectionResultCalculation(); // Assert Assert.AreSame(expectedCalculation, calculation); + mocks.VerifyAll(); } [Test] public void AssessmentLayerThree_ValueSet_ReturnExpectedValue() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + var random = new Random(21); double assessmentLayerThree = random.NextDouble(); var sectionResult = new StabilityPointStructuresFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); - var row = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult); + var row = new StabilityPointStructuresFailureMechanismSectionResultRow(sectionResult, failureMechanism, assessmentSection); // Call row.AssessmentLayerThree = assessmentLayerThree; // Assert Assert.AreEqual(assessmentLayerThree, sectionResult.AssessmentLayerThree); + mocks.VerifyAll(); } } } \ No newline at end of file