Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/SectionResults/MacroStabilityOutwardsFailureMechanismSectionResult.cs =================================================================== diff -u -r264bb2a86306cb8dd1562164451d501321747709 -r6bf62bc0a3a325a5ea3c02c39958a74726377b8b --- Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/SectionResults/MacroStabilityOutwardsFailureMechanismSectionResult.cs (.../MacroStabilityOutwardsFailureMechanismSectionResult.cs) (revision 264bb2a86306cb8dd1562164451d501321747709) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/SectionResults/MacroStabilityOutwardsFailureMechanismSectionResult.cs (.../MacroStabilityOutwardsFailureMechanismSectionResult.cs) (revision 6bf62bc0a3a325a5ea3c02c39958a74726377b8b) @@ -20,8 +20,6 @@ // All rights reserved. using System; -using System.Globalization; -using Core.Common.Base; using Core.Common.Base.Data; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Probability; @@ -36,8 +34,8 @@ /// public class MacroStabilityOutwardsFailureMechanismSectionResult : FailureMechanismSectionResult { - private static readonly Range validityRangeAssessmentProbability = new Range(0, 1); private double detailedAssessmentProbability; + private double tailorMadeAssessmentProbability; /// /// Creates a new instance of . @@ -91,6 +89,20 @@ /// /// Gets or sets the value of the tailor made assessment of safety per failure mechanism section as a probability. /// - public RoundedDouble TailorMadeAssessmentProbability { get; set; } + /// Thrown when is not in range [0,1]. + public double TailorMadeAssessmentProbability + { + get + { + return tailorMadeAssessmentProbability; + } + set + { + ProbabilityHelper.ValidateProbability(value, null, + RingtoetsCommonDataResources.ArbitraryProbabilityFailureMechanismSectionResult_AssessmentProbability_Value_needs_to_be_in_Range_0_, + true); + tailorMadeAssessmentProbability = value; + } + } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/SectionResultRows/MacroStabilityOutwardsSectionResultRow.cs =================================================================== diff -u -r264bb2a86306cb8dd1562164451d501321747709 -r6bf62bc0a3a325a5ea3c02c39958a74726377b8b --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/SectionResultRows/MacroStabilityOutwardsSectionResultRow.cs (.../MacroStabilityOutwardsSectionResultRow.cs) (revision 264bb2a86306cb8dd1562164451d501321747709) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/SectionResultRows/MacroStabilityOutwardsSectionResultRow.cs (.../MacroStabilityOutwardsSectionResultRow.cs) (revision 6bf62bc0a3a325a5ea3c02c39958a74726377b8b) @@ -21,7 +21,6 @@ using System; using System.ComponentModel; -using Core.Common.Base.Data; using Ringtoets.Common.Forms.TypeConverters; using Ringtoets.Common.Forms.Views; using Ringtoets.Common.Primitives; @@ -79,16 +78,18 @@ /// /// Gets or sets the tailor made assessment probability of the . /// - [TypeConverter(typeof(NoValueRoundedDoubleConverter))] - public RoundedDouble TailorMadeAssessmentProbability + /// Thrown when is + /// not in the range [0,1]. + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public double TailorMadeAssessmentProbability { get { return SectionResult.TailorMadeAssessmentProbability; } set { - SectionResult.TailorMadeAssessmentProbability = value.ToPrecision(SectionResult.TailorMadeAssessmentProbability.NumberOfDecimalPlaces); + SectionResult.TailorMadeAssessmentProbability = value; } } } Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/SectionResults/MacroStabilityOutwardsFailureMechanismSectionResultTest.cs =================================================================== diff -u -r264bb2a86306cb8dd1562164451d501321747709 -r6bf62bc0a3a325a5ea3c02c39958a74726377b8b --- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/SectionResults/MacroStabilityOutwardsFailureMechanismSectionResultTest.cs (.../MacroStabilityOutwardsFailureMechanismSectionResultTest.cs) (revision 264bb2a86306cb8dd1562164451d501321747709) +++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/SectionResults/MacroStabilityOutwardsFailureMechanismSectionResultTest.cs (.../MacroStabilityOutwardsFailureMechanismSectionResultTest.cs) (revision 6bf62bc0a3a325a5ea3c02c39958a74726377b8b) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using Core.Common.Base.Data; using NUnit.Framework; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.TestUtil; @@ -93,23 +92,44 @@ } [Test] - [TestCase(double.NaN)] - [TestCase(double.PositiveInfinity)] - [TestCase(double.NegativeInfinity)] - [TestCase(5)] + [SetCulture("nl-NL")] + [TestCase(-20)] + [TestCase(-1e-6)] + [TestCase(1 + 1e-6)] + [TestCase(12)] + public void TailorMadeAssessmentProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double newValue) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityOutwardsFailureMechanismSectionResult(section); + + // Call + TestDelegate test = () => result.TailorMadeAssessmentProbability = newValue; + + // Assert + string message = Assert.Throws(test).Message; + const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase(0)] + [TestCase(1e-6)] [TestCase(0.5)] - public void TailorMadeAssessmentProbability_SetNewValue_ReturnsNewValue(double newValue) + [TestCase(1 - 1e-6)] + [TestCase(1)] + [TestCase(double.NaN)] + public void TailorMadeAssessmentProbability_ValidValue_NewValueSet(double newValue) { // Setup - var failureMechanismSectionResult = new MacroStabilityOutwardsFailureMechanismSectionResult( - FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityOutwardsFailureMechanismSectionResult(section); // Call - failureMechanismSectionResult.TailorMadeAssessmentProbability = (RoundedDouble) newValue; + result.TailorMadeAssessmentProbability = newValue; // Assert - Assert.AreEqual(newValue, failureMechanismSectionResult.TailorMadeAssessmentProbability, - failureMechanismSectionResult.TailorMadeAssessmentProbability.GetAccuracy()); + Assert.AreEqual(newValue, result.TailorMadeAssessmentProbability); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/SectionResultRows/MacroStabilityOutwardsSectionResultRowTest.cs =================================================================== diff -u -r59512bde82de1297788119a8cacd067789389d41 -r6bf62bc0a3a325a5ea3c02c39958a74726377b8b --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/SectionResultRows/MacroStabilityOutwardsSectionResultRowTest.cs (.../MacroStabilityOutwardsSectionResultRowTest.cs) (revision 59512bde82de1297788119a8cacd067789389d41) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/SectionResultRows/MacroStabilityOutwardsSectionResultRowTest.cs (.../MacroStabilityOutwardsSectionResultRowTest.cs) (revision 6bf62bc0a3a325a5ea3c02c39958a74726377b8b) @@ -21,7 +21,6 @@ using System; using Core.Common.Base; -using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; @@ -58,7 +57,7 @@ NoProbabilityValueDoubleConverter>( nameof(MacroStabilityOutwardsSectionResultRow.DetailedAssessmentProbability)); TestHelper.AssertTypeConverter( + NoProbabilityValueDoubleConverter>( nameof(MacroStabilityOutwardsSectionResultRow.TailorMadeAssessmentProbability)); } @@ -114,7 +113,7 @@ [TestCase(-1e-6)] [TestCase(1 + 1e-6)] [TestCase(12)] - public void DetailedAssessmentProbability_InvalidValue_ThrowsArgumentException(double value) + public void DetailedAssessmentProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value) { // Setup FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); @@ -125,26 +124,51 @@ TestDelegate test = () => row.DetailedAssessmentProbability = value; // Assert - string message = Assert.Throws(test).Message; + string message = Assert.Throws(test).Message; const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; Assert.AreEqual(expectedMessage, message); } [Test] - public void TailorMadeAssessmentProbability_AlwaysOnChange_ResultPropertyChanged() + [TestCase(0)] + [TestCase(1)] + [TestCase(0.5)] + [TestCase(1e-6)] + [TestCase(double.NaN)] + public void TailorMadeAssessmentProbability_ValidValue_ResultPropertyChanged(double value) { // Setup - var random = new Random(21); - double newValue = random.NextDouble(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new MacroStabilityOutwardsFailureMechanismSectionResult(section); var row = new MacroStabilityOutwardsSectionResultRow(result); // Call - row.TailorMadeAssessmentProbability = (RoundedDouble) newValue; + row.TailorMadeAssessmentProbability = value; // Assert - Assert.AreEqual(newValue, result.TailorMadeAssessmentProbability, row.TailorMadeAssessmentProbability.GetAccuracy()); + Assert.AreEqual(value, row.TailorMadeAssessmentProbability); } + + [Test] + [SetCulture("nl-NL")] + [TestCase(-20)] + [TestCase(-1e-6)] + [TestCase(1 + 1e-6)] + [TestCase(12)] + public void TailorMadeAssessmentProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityOutwardsFailureMechanismSectionResult(section); + var row = new MacroStabilityOutwardsSectionResultRow(result); + + // Call + TestDelegate test = () => row.TailorMadeAssessmentProbability = value; + + // Assert + string message = Assert.Throws(test).Message; + const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; + Assert.AreEqual(expectedMessage, message); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/SectionResultViews/MacrostabilityOutwardsResultViewTest.cs =================================================================== diff -u -r59512bde82de1297788119a8cacd067789389d41 -r6bf62bc0a3a325a5ea3c02c39958a74726377b8b --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/SectionResultViews/MacrostabilityOutwardsResultViewTest.cs (.../MacrostabilityOutwardsResultViewTest.cs) (revision 59512bde82de1297788119a8cacd067789389d41) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/SectionResultViews/MacrostabilityOutwardsResultViewTest.cs (.../MacrostabilityOutwardsResultViewTest.cs) (revision 6bf62bc0a3a325a5ea3c02c39958a74726377b8b) @@ -130,29 +130,29 @@ FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1")) { SimpleAssessmentResult = SimpleAssessmentResultType.None, - DetailedAssessmentProbability = random.NextRoundedDouble(), - TailorMadeAssessmentProbability = random.NextRoundedDouble() + DetailedAssessmentProbability = random.NextDouble(), + TailorMadeAssessmentProbability = random.NextDouble() }; var result2 = new MacroStabilityOutwardsFailureMechanismSectionResult( FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 2")) { SimpleAssessmentResult = SimpleAssessmentResultType.NotApplicable, - DetailedAssessmentProbability = random.NextRoundedDouble(), - TailorMadeAssessmentProbability = random.NextRoundedDouble() + DetailedAssessmentProbability = random.NextDouble(), + TailorMadeAssessmentProbability = random.NextDouble() }; var result3 = new MacroStabilityOutwardsFailureMechanismSectionResult( FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 3")) { SimpleAssessmentResult = SimpleAssessmentResultType.ProbabilityNegligible, - DetailedAssessmentProbability = random.NextRoundedDouble(), - TailorMadeAssessmentProbability = random.NextRoundedDouble() + DetailedAssessmentProbability = random.NextDouble(), + TailorMadeAssessmentProbability = random.NextDouble() }; var result4 = new MacroStabilityOutwardsFailureMechanismSectionResult( FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 4")) { SimpleAssessmentResult = SimpleAssessmentResultType.AssessFurther, - DetailedAssessmentProbability = random.NextRoundedDouble(), - TailorMadeAssessmentProbability = random.NextRoundedDouble() + DetailedAssessmentProbability = random.NextDouble(), + TailorMadeAssessmentProbability = random.NextDouble() }; var sectionResults = new ObservableList { @@ -180,7 +180,8 @@ Assert.AreEqual(result1.SimpleAssessmentResult, cells[simpleAssessmentIndex].Value); string expectedDetailedAssessmentProbabilityString1 = ProbabilityFormattingHelper.Format(result1.DetailedAssessmentProbability); Assert.AreEqual(expectedDetailedAssessmentProbabilityString1, cells[detailedAssessmentProbabilityIndex].FormattedValue); - Assert.AreEqual(result1.TailorMadeAssessmentProbability.ToString(), cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); + string expectedTailorMadeAssessmentProbabilityString1 = ProbabilityFormattingHelper.Format(result1.TailorMadeAssessmentProbability); + Assert.AreEqual(expectedTailorMadeAssessmentProbabilityString1, cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); DataGridViewTestHelper.AssertCellIsEnabled(cells[detailedAssessmentProbabilityIndex]); DataGridViewTestHelper.AssertCellIsEnabled(cells[tailorMadeAssessmentProbabilityIndex]); @@ -191,7 +192,8 @@ Assert.AreEqual(result2.SimpleAssessmentResult, cells[simpleAssessmentIndex].Value); string expectedDetailedAssessmentProbabilityString2 = ProbabilityFormattingHelper.Format(result2.DetailedAssessmentProbability); Assert.AreEqual(expectedDetailedAssessmentProbabilityString2, cells[detailedAssessmentProbabilityIndex].FormattedValue); - Assert.AreEqual(result2.TailorMadeAssessmentProbability.ToString(), cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); + string expectedTailorMadeAssessmentProbabilityString2 = ProbabilityFormattingHelper.Format(result2.TailorMadeAssessmentProbability); + Assert.AreEqual(expectedTailorMadeAssessmentProbabilityString2, cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); DataGridViewTestHelper.AssertCellIsDisabled(cells[detailedAssessmentProbabilityIndex]); DataGridViewTestHelper.AssertCellIsDisabled(cells[tailorMadeAssessmentProbabilityIndex]); @@ -202,7 +204,8 @@ Assert.AreEqual(result3.SimpleAssessmentResult, cells[simpleAssessmentIndex].Value); string expectedDetailedAssessmentProbabilityString3 = ProbabilityFormattingHelper.Format(result3.DetailedAssessmentProbability); Assert.AreEqual(expectedDetailedAssessmentProbabilityString3, cells[detailedAssessmentProbabilityIndex].FormattedValue); - Assert.AreEqual(result3.TailorMadeAssessmentProbability.ToString(), cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); + string expectedTailorMadeAssessmentProbabilityString3 = ProbabilityFormattingHelper.Format(result3.TailorMadeAssessmentProbability); + Assert.AreEqual(expectedTailorMadeAssessmentProbabilityString3, cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); DataGridViewTestHelper.AssertCellIsDisabled(cells[detailedAssessmentProbabilityIndex]); DataGridViewTestHelper.AssertCellIsDisabled(cells[tailorMadeAssessmentProbabilityIndex]); @@ -213,7 +216,8 @@ Assert.AreEqual(result4.SimpleAssessmentResult, cells[simpleAssessmentIndex].Value); string expectedDetailedAssessmentProbabilityString4 = ProbabilityFormattingHelper.Format(result4.DetailedAssessmentProbability); Assert.AreEqual(expectedDetailedAssessmentProbabilityString4, cells[detailedAssessmentProbabilityIndex].FormattedValue); - Assert.AreEqual(result4.TailorMadeAssessmentProbability.ToString(), cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); + string expectedTailorMadeAssessmentProbabilityString4 = ProbabilityFormattingHelper.Format(result4.TailorMadeAssessmentProbability); + Assert.AreEqual(expectedTailorMadeAssessmentProbabilityString4, cells[tailorMadeAssessmentProbabilityIndex].FormattedValue); DataGridViewTestHelper.AssertCellIsEnabled(cells[detailedAssessmentProbabilityIndex]); DataGridViewTestHelper.AssertCellIsEnabled(cells[tailorMadeAssessmentProbabilityIndex]); @@ -237,8 +241,8 @@ FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) { SimpleAssessmentResult = simpleAssessmentResult, - DetailedAssessmentProbability = random.NextRoundedDouble(), - TailorMadeAssessmentProbability = random.NextRoundedDouble() + DetailedAssessmentProbability = random.NextDouble(), + TailorMadeAssessmentProbability = random.NextDouble() }; var sectionResults = new ObservableList {