Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensions.cs
===================================================================
diff -u
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensions.cs (revision 0)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensions.cs (revision d2bccf12592be5246fc438434a8eec34f24d68ff)
@@ -0,0 +1,73 @@
+// Copyright (C) Stichting Deltares 2017. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Data.Probability;
+
+namespace Ringtoets.GrassCoverErosionInwards.Data
+{
+ ///
+ /// Extension methods for obtaining level 2a results from output for an assessment of the
+ /// grass cover erosion inwards failure mechanism.
+ ///
+ public static class GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensions
+ {
+ ///
+ /// Gets the value for the detailed assessment of safety per failure mechanism section as a probability.
+ ///
+ /// The section result to get the assessment layer 2A for.
+ /// The failure mechanism the calculations belong to.
+ /// The assessment section the calculations belong to.
+ /// The calculated assessment layer 2A; or when there are no
+ /// is no calculation assigned to the section result or the calculation is not performed.
+ /// Thrown when any parameter is null.
+ public static double GetAssessmentLayerTwoA(this GrassCoverErosionInwardsFailureMechanismSectionResult sectionResult,
+ GrassCoverErosionInwardsFailureMechanism failureMechanism,
+ IAssessmentSection assessmentSection)
+ {
+ if (sectionResult == null)
+ {
+ throw new ArgumentNullException(nameof(sectionResult));
+ }
+
+ if (failureMechanism == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanism));
+ }
+
+ if (assessmentSection == null)
+ {
+ throw new ArgumentNullException(nameof(assessmentSection));
+ }
+
+ if (sectionResult.Calculation == null || !sectionResult.Calculation.HasOutput)
+ {
+ return double.NaN;
+ }
+
+ ProbabilityAssessmentOutput derivedOutput = GrassCoverErosionInwardsProbabilityAssessmentOutputFactory.Create(sectionResult.Calculation.Output.OvertoppingOutput,
+ failureMechanism, assessmentSection);
+
+ return derivedOutput.Probability;
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/Ringtoets.GrassCoverErosionInwards.Data.csproj
===================================================================
diff -u -rcd75ebe8ea8ae0d361b7632af2bc7771a7a81a65 -rd2bccf12592be5246fc438434a8eec34f24d68ff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/Ringtoets.GrassCoverErosionInwards.Data.csproj (.../Ringtoets.GrassCoverErosionInwards.Data.csproj) (revision cd75ebe8ea8ae0d361b7632af2bc7771a7a81a65)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/Ringtoets.GrassCoverErosionInwards.Data.csproj (.../Ringtoets.GrassCoverErosionInwards.Data.csproj) (revision d2bccf12592be5246fc438434a8eec34f24d68ff)
@@ -11,6 +11,7 @@
+
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismSectionResultRow.cs
===================================================================
diff -u -rad12f4e2c4a765cc6c20e9f17ac051a99644ec44 -rd2bccf12592be5246fc438434a8eec34f24d68ff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismSectionResultRow.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResultRow.cs) (revision ad12f4e2c4a765cc6c20e9f17ac051a99644ec44)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismSectionResultRow.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResultRow.cs) (revision d2bccf12592be5246fc438434a8eec34f24d68ff)
@@ -40,7 +40,8 @@
/// the source of this row.
/// Thrown when is
/// null.
- public GrassCoverErosionInwardsFailureMechanismSectionResultRow(GrassCoverErosionInwardsFailureMechanismSectionResult sectionResult) : base(sectionResult) {}
+ public GrassCoverErosionInwardsFailureMechanismSectionResultRow(GrassCoverErosionInwardsFailureMechanismSectionResult sectionResult)
+ : base(sectionResult) {}
///
/// Gets or sets the value of the tailored assessment of safety.
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs
===================================================================
diff -u
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs (revision 0)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs (revision d2bccf12592be5246fc438434a8eec34f24d68ff)
@@ -0,0 +1,152 @@
+// Copyright (C) Stichting Deltares 2017. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Data.FailureMechanism;
+using Ringtoets.Common.Data.TestUtil;
+using Ringtoets.GrassCoverErosionInwards.Data.TestUtil;
+
+namespace Ringtoets.GrassCoverErosionInwards.Data.Test
+{
+ [TestFixture]
+ public class GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensionsTest
+ {
+ [Test]
+ public void GetAssessmentLayerTwoA_SectionResultNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ // Call
+ TestDelegate call = () => GrassCoverErosionInwardsFailureMechanismSection2aAssessmentResultExtensions.GetAssessmentLayerTwoA(null,
+ new GrassCoverErosionInwardsFailureMechanism(),
+ assessmentSection);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("sectionResult", exception.ParamName);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void GetAssessmentLayerTwoA_FailureMechanismNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var failureMechanismSectionResult = new GrassCoverErosionInwardsFailureMechanismSectionResult(section);
+
+ // Call
+ TestDelegate call = () => failureMechanismSectionResult.GetAssessmentLayerTwoA(null, assessmentSection);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("failureMechanism", exception.ParamName);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void GetAssessmentLayerTwoA_AssessmentSectionNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var failureMechanismSectionResult = new GrassCoverErosionInwardsFailureMechanismSectionResult(section);
+
+ // Call
+ TestDelegate call = () => failureMechanismSectionResult.GetAssessmentLayerTwoA(new GrassCoverErosionInwardsFailureMechanism(), null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("assessmentSection", exception.ParamName);
+ }
+
+ [Test]
+ public void GetAssessmentLayerTwoA_SectionResultWithoutCalculation_ReturnsNaN()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var failureMechanismSectionResult = new GrassCoverErosionInwardsFailureMechanismSectionResult(section);
+
+ // Call
+ double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
+
+ // Assert
+ Assert.IsNaN(assessmentLayerTwoA);
+ }
+
+ [Test]
+ public void GetAssessmentLayerTwoA_CalculationWithoutOutput_ReturnsNaN()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var failureMechanismSectionResult = new GrassCoverErosionInwardsFailureMechanismSectionResult(section);
+
+ failureMechanismSectionResult.Calculation = new GrassCoverErosionInwardsCalculation();
+
+ // Call
+ double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
+
+ // Assert
+ Assert.IsNaN(assessmentLayerTwoA);
+ }
+
+ [Test]
+ public void GetAssessmentLayerTwoA_CalculationWithOutput_ReturnsDerivedProbability()
+ {
+ // Setup
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var failureMechanismSectionResult = new GrassCoverErosionInwardsFailureMechanismSectionResult(section);
+
+ failureMechanismSectionResult.Calculation = new GrassCoverErosionInwardsCalculation
+ {
+ Output = new TestGrassCoverErosionInwardsOutput()
+ };
+
+ // Call
+ double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
+
+ // Assert
+ Assert.AreEqual(0.5, assessmentLayerTwoA);
+ mocks.VerifyAll();
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/Ringtoets.GrassCoverErosionInwards.Data.Test.csproj
===================================================================
diff -u -rcd75ebe8ea8ae0d361b7632af2bc7771a7a81a65 -rd2bccf12592be5246fc438434a8eec34f24d68ff
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/Ringtoets.GrassCoverErosionInwards.Data.Test.csproj (.../Ringtoets.GrassCoverErosionInwards.Data.Test.csproj) (revision cd75ebe8ea8ae0d361b7632af2bc7771a7a81a65)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/Ringtoets.GrassCoverErosionInwards.Data.Test.csproj (.../Ringtoets.GrassCoverErosionInwards.Data.Test.csproj) (revision d2bccf12592be5246fc438434a8eec34f24d68ff)
@@ -19,6 +19,7 @@
+