Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenarioRow.cs
===================================================================
diff -u -r650fc7b43cb6729baee51d079f0377df8d7a3de9 -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenarioRow.cs (.../MacroStabilityInwardsScenarioRow.cs) (revision 650fc7b43cb6729baee51d079f0377df8d7a3de9)
+++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenarioRow.cs (.../MacroStabilityInwardsScenarioRow.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -22,6 +22,7 @@
using System;
using System.ComponentModel;
using Core.Common.Base.Data;
+using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Forms.Helpers;
using Ringtoets.Common.Forms.TypeConverters;
using Ringtoets.MacroStabilityInwards.Data;
@@ -34,25 +35,47 @@
///
internal class MacroStabilityInwardsScenarioRow
{
+ private readonly DerivedMacroStabilityInwardsOutput derivedOutput;
+
///
/// Creates a new instance of .
///
- /// The this row contains.
- /// Thrown when is null.
- public MacroStabilityInwardsScenarioRow(MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculation)
+ /// The this row contains.
+ /// The failure mechanism that the calculation belongs to.
+ /// The assessment section that the calculation belongs to.
+ /// Thrown when any parameter is null.
+ public MacroStabilityInwardsScenarioRow(MacroStabilityInwardsCalculationScenario calculation,
+ MacroStabilityInwardsFailureMechanism failureMechanism,
+ IAssessmentSection assessmentSection)
{
- if (macroStabilityInwardsCalculation == null)
+ if (calculation == null)
{
- throw new ArgumentNullException(nameof(macroStabilityInwardsCalculation));
+ throw new ArgumentNullException(nameof(calculation));
}
- MacroStabilityInwardsCalculation = macroStabilityInwardsCalculation;
+ if (failureMechanism == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanism));
+ }
+
+ if (assessmentSection == null)
+ {
+ throw new ArgumentNullException(nameof(assessmentSection));
+ }
+
+ Calculation = calculation;
+
+ if (Calculation.HasOutput)
+ {
+ derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(calculation.Output, failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput,
+ assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution);
+ }
}
///
/// Gets the this row contains.
///
- public MacroStabilityInwardsCalculationScenario MacroStabilityInwardsCalculation { get; }
+ public MacroStabilityInwardsCalculationScenario Calculation { get; }
///
/// Gets or sets the is relevant.
@@ -61,12 +84,12 @@
{
get
{
- return MacroStabilityInwardsCalculation.IsRelevant;
+ return Calculation.IsRelevant;
}
set
{
- MacroStabilityInwardsCalculation.IsRelevant = value;
- MacroStabilityInwardsCalculation.NotifyObservers();
+ Calculation.IsRelevant = value;
+ Calculation.NotifyObservers();
}
}
@@ -77,12 +100,12 @@
{
get
{
- return new RoundedDouble(0, MacroStabilityInwardsCalculation.Contribution * 100);
+ return new RoundedDouble(0, Calculation.Contribution * 100);
}
set
{
- MacroStabilityInwardsCalculation.Contribution = (RoundedDouble) (value / 100);
- MacroStabilityInwardsCalculation.NotifyObservers();
+ Calculation.Contribution = (RoundedDouble) (value / 100);
+ Calculation.NotifyObservers();
}
}
@@ -93,7 +116,7 @@
{
get
{
- return MacroStabilityInwardsCalculation.Name;
+ return Calculation.Name;
}
}
@@ -105,11 +128,9 @@
{
get
{
- if (MacroStabilityInwardsCalculation.SemiProbabilisticOutput == null)
- {
- return RingtoetsCommonFormsResources.RoundedRouble_No_result_dash;
- }
- return ProbabilityFormattingHelper.Format(MacroStabilityInwardsCalculation.SemiProbabilisticOutput.MacroStabilityInwardsProbability);
+ return derivedOutput == null
+ ? RingtoetsCommonFormsResources.RoundedRouble_No_result_dash
+ : ProbabilityFormattingHelper.Format(derivedOutput.MacroStabilityInwardsProbability);
}
}
}
Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenariosView.cs
===================================================================
diff -u -r42b0a40e019f6b36f83495fc46b13bac5971292f -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenariosView.cs (.../MacroStabilityInwardsScenariosView.cs) (revision 42b0a40e019f6b36f83495fc46b13bac5971292f)
+++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenariosView.cs (.../MacroStabilityInwardsScenariosView.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -166,7 +166,10 @@
.OfType()
.Where(pc => pc.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments));
- List dataSource = calculations.Select(pc => new MacroStabilityInwardsScenarioRow(pc)).ToList();
+ List dataSource = calculations.Select(pc => new MacroStabilityInwardsScenarioRow(
+ pc,
+ MacroStabilityInwardsFailureMechanism,
+ null)).ToList();
dataGridViewControl.SetDataSource(dataSource);
}
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs
===================================================================
diff -u -r8d246ac6328e6e649ff6e78dfe3fac210d789ba0 -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs (.../MacroStabilityInwardsCalculationScenarioFactoryTest.cs) (revision 8d246ac6328e6e649ff6e78dfe3fac210d789ba0)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs (.../MacroStabilityInwardsCalculationScenarioFactoryTest.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -218,7 +218,30 @@
MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
// Assert
- MacroStabilityInwardsInput inputParameters = scenario.InputParameters;
+ AssertInput(scenario.InputParameters);
+ }
+
+ [Test]
+ public void CreateCalculatedMacroStabilityInwardsCalculationScenario_ReturnMacroStabilityInwardsCalculationScenario()
+ {
+ // Call
+ MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateCalculatedMacroStabilityInwardsCalculationScenario();
+
+ // Assert
+ AssertInput(scenario.InputParameters);
+
+ MacroStabilityInwardsOutput output = scenario.Output;
+ Assert.IsNotNull(output);
+ Assert.AreEqual(0.69717486793975103, output.FactorOfStability);
+ Assert.AreEqual(0.040462733730889267, output.ZValue);
+ Assert.AreEqual(0.97911632898222489, output.ForbiddenZonesXEntryMax);
+ Assert.AreEqual(0.44677048942389452, output.ForbiddenZonesXEntryMin);
+ Assert.IsNotNull(output.SlidingCurve);
+ Assert.IsNotNull(output.SlipPlane);
+ }
+
+ private static void AssertInput(MacroStabilityInwardsInput inputParameters)
+ {
Assert.AreEqual(MacroStabilityInwardsDikeSoilScenario.SandDikeOnClay,
inputParameters.DikeSoilScenario);
Assert.AreEqual(1, inputParameters.PiezometricHeadPhreaticLine2Outwards,
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsOutputTestFactoryTest.cs
===================================================================
diff -u -rf85578eb9fbbd05088386a9b17f9687f832b051a -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsOutputTestFactoryTest.cs (.../MacroStabilityInwardsOutputTestFactoryTest.cs) (revision f85578eb9fbbd05088386a9b17f9687f832b051a)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsOutputTestFactoryTest.cs (.../MacroStabilityInwardsOutputTestFactoryTest.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -101,18 +101,12 @@
// Assert
Assert.IsNotNull(output);
- AssertIsConcreteValue(output.FactorOfStability);
- AssertIsConcreteValue(output.ZValue);
- AssertIsConcreteValue(output.ForbiddenZonesXEntryMax);
- AssertIsConcreteValue(output.ForbiddenZonesXEntryMin);
+ Assert.AreEqual(0.69717486793975103, output.FactorOfStability);
+ Assert.AreEqual(0.040462733730889267, output.ZValue);
+ Assert.AreEqual(0.97911632898222489, output.ForbiddenZonesXEntryMax);
+ Assert.AreEqual(0.44677048942389452, output.ForbiddenZonesXEntryMin);
Assert.IsNotNull(output.SlidingCurve);
Assert.IsNotNull(output.SlipPlane);
}
-
- private static void AssertIsConcreteValue(double actualValue)
- {
- Assert.IsFalse(double.IsNaN(actualValue));
- Assert.IsFalse(double.IsInfinity(actualValue));
- }
}
}
\ No newline at end of file
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs
===================================================================
diff -u -r8d246ac6328e6e649ff6e78dfe3fac210d789ba0 -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs (.../MacroStabilityInwardsCalculationScenarioFactory.cs) (revision 8d246ac6328e6e649ff6e78dfe3fac210d789ba0)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs (.../MacroStabilityInwardsCalculationScenarioFactory.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -301,5 +301,16 @@
}
};
}
+
+ ///
+ /// Creates a scenario with valid input and output.
+ ///
+ /// A new .
+ public static MacroStabilityInwardsCalculationScenario CreateCalculatedMacroStabilityInwardsCalculationScenario()
+ {
+ MacroStabilityInwardsCalculationScenario calculation = CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
+ calculation.Output = MacroStabilityInwardsOutputTestFactory.CreateRandomOutput();
+ return calculation;
+ }
}
}
\ No newline at end of file
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsScenarioRowTest.cs
===================================================================
diff -u -rd485f27eb5a6d688406882dce60c3229e22f2ac2 -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsScenarioRowTest.cs (.../MacroStabilityInwardsScenarioRowTest.cs) (revision d485f27eb5a6d688406882dce60c3229e22f2ac2)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsScenarioRowTest.cs (.../MacroStabilityInwardsScenarioRowTest.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -24,6 +24,7 @@
using Core.Common.Base.Data;
using NUnit.Framework;
using Rhino.Mocks;
+using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.TestUtil;
using Ringtoets.Common.Forms.Helpers;
using Ringtoets.MacroStabilityInwards.Data;
@@ -36,52 +37,98 @@
public class MacroStabilityInwardsScenarioRowTest
{
[Test]
- public void Constructor_WithoutCalculation_ThrowsArgumentNullException()
+ public void Constructor_CalculationNull_ThrowsArgumentNullException()
{
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var failureMechanism = new MacroStabilityInwardsFailureMechanism();
+
// Call
- TestDelegate test = () => new MacroStabilityInwardsScenarioRow(null);
+ TestDelegate test = () => new MacroStabilityInwardsScenarioRow(null, failureMechanism, assessmentSection);
// Assert
- string paramName = Assert.Throws(test).ParamName;
- Assert.AreEqual("macroStabilityInwardsCalculation", paramName);
+ var exception = Assert.Throws(test);
+ Assert.AreEqual("calculation", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
- public void Constructor_WithCalculationWithSemiProbabilisticOutput_PropertiesFromCalculation()
+ public void Constructor_FailureMechanismNull_ThrowsArgumentNullException()
{
// Setup
- var random = new Random(21);
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
- calculation.SemiProbabilisticOutput = new MacroStabilityInwardsSemiProbabilisticOutput(
- random.NextDouble(),
- random.NextDouble(),
- random.NextDouble(),
- random.NextDouble(),
- random.NextDouble(),
- random.NextDouble());
// Call
- var row = new MacroStabilityInwardsScenarioRow(calculation);
+ TestDelegate test = () => new MacroStabilityInwardsScenarioRow(calculation, null, assessmentSection);
// Assert
- Assert.AreSame(calculation, row.MacroStabilityInwardsCalculation);
+ var exception = Assert.Throws(test);
+ Assert.AreEqual("failureMechanism", exception.ParamName);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
+ var failureMechanism = new MacroStabilityInwardsFailureMechanism();
+
+ // Call
+ TestDelegate test = () => new MacroStabilityInwardsScenarioRow(calculation, failureMechanism, null);
+
+ // Assert
+ var exception = Assert.Throws(test);
+ Assert.AreEqual("assessmentSection", exception.ParamName);
+ }
+
+ [Test]
+ public void Constructor_WithCalculationWithOutput_PropertiesFromCalculation()
+ {
+ // Setup
+ MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateCalculatedMacroStabilityInwardsCalculationScenario();
+ var failureMechanism = new TestMacroStabilityInwardsFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+
+ // Call
+ var row = new MacroStabilityInwardsScenarioRow(calculation, failureMechanism, assessmentSection);
+
+ // Assert
+ Assert.AreSame(calculation, row.Calculation);
Assert.AreEqual(calculation.Name, row.Name);
Assert.AreEqual(calculation.IsRelevant, row.IsRelevant);
Assert.AreEqual(calculation.Contribution * 100, row.Contribution);
- Assert.AreEqual(ProbabilityFormattingHelper.Format(calculation.SemiProbabilisticOutput.MacroStabilityInwardsProbability), row.FailureProbabilityMacroStabilityInwards);
+
+ DerivedMacroStabilityInwardsOutput expectedDerivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(
+ calculation.Output, failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput,
+ assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution);
+ Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.MacroStabilityInwardsProbability), row.FailureProbabilityMacroStabilityInwards);
}
[Test]
public void Constructor_WithCalculationWithoutSemiProbabilisticOutput_PropertiesFromCalculation()
{
// Setup
MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
+ var failureMechanism = new TestMacroStabilityInwardsFailureMechanism();
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+
// Call
- var row = new MacroStabilityInwardsScenarioRow(calculation);
+ var row = new MacroStabilityInwardsScenarioRow(calculation, failureMechanism, assessmentSection);
// Assert
- Assert.AreSame(calculation, row.MacroStabilityInwardsCalculation);
+ Assert.AreSame(calculation, row.Calculation);
Assert.AreEqual(calculation.Name, row.Name);
Assert.AreEqual(calculation.IsRelevant, row.IsRelevant);
Assert.AreEqual(calculation.Contribution * 100, row.Contribution);
@@ -94,49 +141,53 @@
public void IsRelevant_AlwaysOnChange_NotifyObserversAndCalculationPropertyChanged(bool newValue)
{
// Setup
+ var failureMechanism = new TestMacroStabilityInwardsFailureMechanism();
+ MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
+
var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
- MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
calculation.Attach(observer);
- var row = new MacroStabilityInwardsScenarioRow(calculation);
+ var row = new MacroStabilityInwardsScenarioRow(calculation, failureMechanism, assessmentSection);
// Call
row.IsRelevant = newValue;
// Assert
Assert.AreEqual(newValue, calculation.IsRelevant);
-
mocks.VerifyAll();
}
[Test]
public void Contribution_AlwaysOnChange_NotifyObserverAndCalculationPropertyChanged()
{
// Setup
- int newValue = new Random(21).Next(0, 100);
-
+ var failureMechanism = new TestMacroStabilityInwardsFailureMechanism();
MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput();
- var row = new MacroStabilityInwardsScenarioRow(calculation);
- var counter = 0;
- using (new Observer(() => counter++)
- {
- Observable = calculation
- })
- {
- // Call
- row.Contribution = (RoundedDouble) newValue;
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+ var observer = mocks.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
- // Assert
- Assert.AreEqual(1, counter);
+ calculation.Attach(observer);
- Assert.AreEqual(2, calculation.Contribution.NumberOfDecimalPlaces);
- Assert.AreEqual(newValue, calculation.Contribution * 100, calculation.Contribution.GetAccuracy());
- }
+ var row = new MacroStabilityInwardsScenarioRow(calculation, failureMechanism, assessmentSection);
+
+ int newValue = new Random(21).Next(0, 100);
+
+ // Call
+ row.Contribution = (RoundedDouble) newValue;
+
+ // Assert
+ Assert.AreEqual(2, calculation.Contribution.NumberOfDecimalPlaces);
+ Assert.AreEqual(newValue, calculation.Contribution * 100, calculation.Contribution.GetAccuracy());
+ mocks.VerifyAll();
}
}
}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingScenarioRow.cs
===================================================================
diff -u -r171eda478707e1f059c568074c7be10ecc93abb8 -re38673ff639b5d86a2f55997e2d0d876ba4737f7
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingScenarioRow.cs (.../PipingScenarioRow.cs) (revision 171eda478707e1f059c568074c7be10ecc93abb8)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingScenarioRow.cs (.../PipingScenarioRow.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7)
@@ -64,7 +64,7 @@
Calculation = calculation;
- if (calculation.Output != null)
+ if (calculation.HasOutput)
{
derivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism.PipingProbabilityAssessmentInput,
assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution);