Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationScenario.cs =================================================================== diff -u -red08434acc8f5619842f1c6cb0b7f9a56cf8dad0 -r77b27109212e94d58eb47248d4210f7eac243fb6 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationScenario.cs (.../PipingCalculationScenario.cs) (revision ed08434acc8f5619842f1c6cb0b7f9a56cf8dad0) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationScenario.cs (.../PipingCalculationScenario.cs) (revision 77b27109212e94d58eb47248d4210f7eac243fb6) @@ -66,11 +66,6 @@ return Output == null ? CalculationScenarioStatus.NotCalculated : CalculationScenarioStatus.Done; - - // -// return SemiProbabilisticOutput == null || double.IsNaN(SemiProbabilisticOutput.PipingProbability) -// ? CalculationScenarioStatus.Failed -// : CalculationScenarioStatus.Done; } } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -rf4c4fe2feedd73d2f45395017b77df2bb56d5c27 -r77b27109212e94d58eb47248d4210f7eac243fb6 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision f4c4fe2feedd73d2f45395017b77df2bb56d5c27) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 77b27109212e94d58eb47248d4210f7eac243fb6) @@ -184,7 +184,8 @@ currentDataGridViewCell.ErrorText = RingtoetsCommonFormsResources.FailureMechanismResultView_DataGridViewCellFormatting_Not_all_calculations_have_been_executed; return; } - if (calculationScenarioStatus == CalculationScenarioStatus.Failed) + + if (double.IsNaN(resultRow.AssessmentLayerTwoA)) { currentDataGridViewCell.ErrorText = RingtoetsCommonFormsResources.FailureMechanismResultView_DataGridViewCellFormatting_All_calculations_must_have_valid_output; return; Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationScenarioTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r77b27109212e94d58eb47248d4210f7eac243fb6 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationScenarioTest.cs (.../PipingCalculationScenarioTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationScenarioTest.cs (.../PipingCalculationScenarioTest.cs) (revision 77b27109212e94d58eb47248d4210f7eac243fb6) @@ -95,40 +95,6 @@ } [Test] - public void CalculationScenarioStatus_SemiProbabilisticOutputNull_ReturnsStatusFailed() - { - // Setup - var scenario = new PipingCalculationScenario(new GeneralPipingInput()) - { - Output = new TestPipingOutput(), -// SemiProbabilisticOutput = null - }; - - // Call - CalculationScenarioStatus status = scenario.Status; - - // Assert - Assert.AreEqual(CalculationScenarioStatus.Failed, status); - } - - [Test] - public void CalculationScenarioStatus_ScenarioInvalid_ReturnsStatusFailed() - { - // Setup - var scenario = new PipingCalculationScenario(new GeneralPipingInput()) - { - Output = new TestPipingOutput(), -// SemiProbabilisticOutput = new TestDerivedPipingOutput(double.NaN) - }; - - // Call - CalculationScenarioStatus status = scenario.Status; - - // Assert - Assert.AreEqual(CalculationScenarioStatus.Failed, status); - } - - [Test] public void CalculationScenarioStatus_PipingOutputSet_ReturnsStatusDone() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r77b27109212e94d58eb47248d4210f7eac243fb6 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs (.../PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs (.../PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs) (revision 77b27109212e94d58eb47248d4210f7eac243fb6) @@ -25,7 +25,6 @@ using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.TestUtil; using Ringtoets.Piping.Data.TestUtil; @@ -77,7 +76,7 @@ double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculations, failureMechanism, assessmentSection); // Assert - Assert.AreEqual(1.0194628510792693e-21, assessmentLayerTwoA); + Assert.AreEqual(1.0231368235852602e-10, assessmentLayerTwoA); mocks.VerifyAll(); } @@ -164,6 +163,45 @@ } [Test] + public void GetAssessmentLayerTwoA_ScenarioWithNanResults_ReturnsNaN() + { + // Setup + var failureMechanism = new PipingFailureMechanism(); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new PipingFailureMechanismSectionResult(section); + + const double contribution1 = 0.2; + const double contribution2 = 0.8; + + PipingCalculationScenario pipingCalculationScenario1 = PipingCalculationScenarioFactory.CreatePipingCalculationScenario(section); + PipingCalculationScenario pipingCalculationScenario2 = PipingCalculationScenarioFactory.CreateNotCalculatedPipingCalculationScenario(section); + + pipingCalculationScenario1.IsRelevant = true; + pipingCalculationScenario1.Contribution = (RoundedDouble)contribution1; + + pipingCalculationScenario2.IsRelevant = true; + pipingCalculationScenario2.Contribution = (RoundedDouble)contribution2; + pipingCalculationScenario2.Output = new PipingOutput(new PipingOutput.ConstructionProperties()); + + var calculations = new[] + { + pipingCalculationScenario1, + pipingCalculationScenario2 + }; + + // Call + double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculations, failureMechanism, assessmentSection); + + // Assert + Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); + } + + [Test] public void GetTotalContribution_Always_ReturnsTotalRelevantScenarioContribution() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r77b27109212e94d58eb47248d4210f7eac243fb6 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision 77b27109212e94d58eb47248d4210f7eac243fb6) @@ -406,38 +406,39 @@ } } -// [Test] -// [TestCase(AssessmentLayerOneState.NotAssessed)] -// [TestCase(AssessmentLayerOneState.NoVerdict)] -// public void FailureMechanismResultView_AssessmentLayerTwoANaN_ShowsErrorTooltip(AssessmentLayerOneState assessmentLayerOneState) -// { -// // Setup -// const int rowIndex = 0; -// -// var pipingFailureMechanism = new PipingFailureMechanism(); -// using (PipingFailureMechanismResultView view = ShowFullyConfiguredFailureMechanismResultsView(pipingFailureMechanism)) -// { -// PipingCalculationScenario calculationScenario = PipingCalculationScenarioFactory.CreateFailedPipingCalculationScenario( -// pipingFailureMechanism.Sections.First()); -// pipingFailureMechanism.CalculationsGroup.Children.Add(calculationScenario); -// view.Data = pipingFailureMechanism.SectionResults; -// -// var gridTester = new ControlTester("dataGridView"); -// var dataGridView = (DataGridView) gridTester.TheObject; -// -// DataGridViewCell dataGridViewCell = dataGridView.Rows[rowIndex].Cells[assessmentLayerTwoAIndex]; -// dataGridView.Rows[rowIndex].Cells[assessmentLayerOneIndex].Value = assessmentLayerOneState; -// -// // Call -// object formattedValue = dataGridViewCell.FormattedValue; // Need to do this to fire the CellFormatting event. -// -// // Assert -// Assert.AreEqual("Alle berekeningen voor dit vak moeten een geldige uitkomst hebben.", -// dataGridViewCell.ErrorText); -// Assert.AreEqual("-", formattedValue); -// } -// } + [Test] + [TestCase(AssessmentLayerOneState.NotAssessed)] + [TestCase(AssessmentLayerOneState.NoVerdict)] + public void FailureMechanismResultView_AssessmentLayerTwoANaN_ShowsErrorTooltip(AssessmentLayerOneState assessmentLayerOneState) + { + // Setup + const int rowIndex = 0; + var pipingFailureMechanism = new PipingFailureMechanism(); + using (PipingFailureMechanismResultView view = ShowFullyConfiguredFailureMechanismResultsView(pipingFailureMechanism)) + { + PipingCalculationScenario calculationScenario = PipingCalculationScenarioFactory.CreateNotCalculatedPipingCalculationScenario( + pipingFailureMechanism.Sections.First()); + calculationScenario.Output = new PipingOutput(new PipingOutput.ConstructionProperties()); + pipingFailureMechanism.CalculationsGroup.Children.Add(calculationScenario); + view.Data = pipingFailureMechanism.SectionResults; + + var gridTester = new ControlTester("dataGridView"); + var dataGridView = (DataGridView) gridTester.TheObject; + + DataGridViewCell dataGridViewCell = dataGridView.Rows[rowIndex].Cells[assessmentLayerTwoAIndex]; + dataGridView.Rows[rowIndex].Cells[assessmentLayerOneIndex].Value = assessmentLayerOneState; + + // Call + object formattedValue = dataGridViewCell.FormattedValue; // Need to do this to fire the CellFormatting event. + + // Assert + Assert.AreEqual("Alle berekeningen voor dit vak moeten een geldige uitkomst hebben.", + dataGridViewCell.ErrorText); + Assert.AreEqual("-", formattedValue); + } + } + [Test] [TestCase(AssessmentLayerOneState.NotAssessed)] [TestCase(AssessmentLayerOneState.NoVerdict)] @@ -496,34 +497,35 @@ } } -// [Test] -// public void FailureMechanismResultView_AssessmentLayerOneStateSufficientAndAssessmentLayerTwoAHasError_DoesNotShowError() -// { -// // Setup -// const int rowIndex = 0; -// -// var pipingFailureMechanism = new PipingFailureMechanism(); -// using (ShowFullyConfiguredFailureMechanismResultsView(pipingFailureMechanism)) -// { -// PipingCalculationScenario calculationScenario = PipingCalculationScenarioFactory.CreateFailedPipingCalculationScenario( -// pipingFailureMechanism.Sections.First()); -// pipingFailureMechanism.CalculationsGroup.Children.Add(calculationScenario); -// -// var gridTester = new ControlTester("dataGridView"); -// var dataGridView = (DataGridView) gridTester.TheObject; -// -// DataGridViewCell dataGridViewCell = dataGridView.Rows[rowIndex].Cells[assessmentLayerTwoAIndex]; -// -// // Call -// dataGridView.Rows[rowIndex].Cells[assessmentLayerOneIndex].Value = AssessmentLayerOneState.Sufficient; -// object formattedValue = dataGridViewCell.FormattedValue; // Need to do this to fire the CellFormatting event. -// -// // Assert -// Assert.IsEmpty(dataGridViewCell.ErrorText); -// Assert.AreEqual("-", formattedValue); -// } -// } + [Test] + public void FailureMechanismResultView_AssessmentLayerOneStateSufficientAndAssessmentLayerTwoAHasError_DoesNotShowError() + { + // Setup + const int rowIndex = 0; + var pipingFailureMechanism = new PipingFailureMechanism(); + using (ShowFullyConfiguredFailureMechanismResultsView(pipingFailureMechanism)) + { + PipingCalculationScenario calculationScenario = PipingCalculationScenarioFactory.CreateNotCalculatedPipingCalculationScenario( + pipingFailureMechanism.Sections.First()); + calculationScenario.Output = new PipingOutput(new PipingOutput.ConstructionProperties()); + pipingFailureMechanism.CalculationsGroup.Children.Add(calculationScenario); + + var gridTester = new ControlTester("dataGridView"); + var dataGridView = (DataGridView) gridTester.TheObject; + + DataGridViewCell dataGridViewCell = dataGridView.Rows[rowIndex].Cells[assessmentLayerTwoAIndex]; + + // Call + dataGridView.Rows[rowIndex].Cells[assessmentLayerOneIndex].Value = AssessmentLayerOneState.Sufficient; + object formattedValue = dataGridViewCell.FormattedValue; // Need to do this to fire the CellFormatting event. + + // Assert + Assert.IsEmpty(dataGridViewCell.ErrorText); + Assert.AreEqual("-", formattedValue); + } + } + private PipingFailureMechanismResultView ShowFullyConfiguredFailureMechanismResultsView(PipingFailureMechanism failureMechanism) { failureMechanism.AddSection(new FailureMechanismSection("Section 1", new List