Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismSectionResultRow.cs
===================================================================
diff -u -rb9a1d3cdf1e58825664b0c7c2bcfff11aa48c852 -re2f2a69303e75986c7bfa60744ad6766b460aefc
--- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismSectionResultRow.cs (.../StabilityPointStructuresFailureMechanismSectionResultRow.cs) (revision b9a1d3cdf1e58825664b0c7c2bcfff11aa48c852)
+++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Views/StabilityPointStructuresFailureMechanismSectionResultRow.cs (.../StabilityPointStructuresFailureMechanismSectionResultRow.cs) (revision e2f2a69303e75986c7bfa60744ad6766b460aefc)
@@ -206,6 +206,46 @@
public double CombinedAssemblyProbability { get; private set; }
///
+ /// Gets or sets the indicator whether the combined assembly probability
+ /// should be overwritten by .
+ ///
+ /// Thrown when
+ /// is a valid value, but unsupported.
+ public bool UseManualAssemblyProbability
+ {
+ get
+ {
+ return SectionResult.UseManualAssemblyProbability;
+ }
+ set
+ {
+ SectionResult.UseManualAssemblyProbability = value;
+ UpdateInternalData();
+ }
+ }
+
+ ///
+ /// Gets or sets the manually entered assembly probability.
+ ///
+ /// Thrown when is
+ /// not in the range [0,1].
+ /// Thrown when
+ /// is a valid value, but unsupported.
+ [TypeConverter(typeof(NoProbabilityValueDoubleConverter))]
+ public double ManualAssemblyProbability
+ {
+ get
+ {
+ return SectionResult.ManualAssemblyProbability;
+ }
+ set
+ {
+ SectionResult.ManualAssemblyProbability = value;
+ UpdateInternalData();
+ }
+ }
+
+ ///
/// Gets the of the wrapped
/// .
///
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismSectionResultRowTest.cs
===================================================================
diff -u -rb9a1d3cdf1e58825664b0c7c2bcfff11aa48c852 -re2f2a69303e75986c7bfa60744ad6766b460aefc
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismSectionResultRowTest.cs (.../StabilityPointStructuresFailureMechanismSectionResultRowTest.cs) (revision b9a1d3cdf1e58825664b0c7c2bcfff11aa48c852)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresFailureMechanismSectionResultRowTest.cs (.../StabilityPointStructuresFailureMechanismSectionResultRowTest.cs) (revision e2f2a69303e75986c7bfa60744ad6766b460aefc)
@@ -106,6 +106,8 @@
Assert.AreEqual(result.GetDetailedAssessmentProbability(failureMechanism, assessmentSection), row.DetailedAssessmentProbability);
Assert.AreEqual(result.TailorMadeAssessmentResult, row.TailorMadeAssessmentResult);
Assert.AreEqual(row.TailorMadeAssessmentProbability, result.TailorMadeAssessmentProbability);
+ Assert.AreEqual(result.UseManualAssemblyProbability, row.UseManualAssemblyProbability);
+ Assert.AreEqual(result.ManualAssemblyProbability, row.ManualAssemblyProbability);
TestHelper.AssertTypeConverter(
nameof(StabilityPointStructuresFailureMechanismSectionResultRow.DetailedAssessmentProbability));
@@ -133,7 +135,7 @@
using (new AssemblyToolCalculatorFactoryConfig())
{
- var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance;
FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
calculator.SimpleAssessmentAssemblyOutput = new FailureMechanismSectionAssembly(
random.NextDouble(),
@@ -181,7 +183,7 @@
using (new AssemblyToolCalculatorFactoryConfig())
{
- var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance;
FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
calculator.SimpleAssessmentAssemblyOutput = new FailureMechanismSectionAssembly(
random.NextDouble(),
@@ -224,6 +226,166 @@
}
}
+ [Test]
+ public void UseManualAssemblyProbability_SetNewValue_NotifyObserversAndPropertyChanged()
+ {
+ // Setup
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+ var observer = mocks.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new StabilityPointStructuresFailureMechanismSectionResult(section);
+ result.Attach(observer);
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var row = new StabilityPointStructuresFailureMechanismSectionResultRow(
+ result, failureMechanism, assessmentSection);
+ bool originalValue = result.UseManualAssemblyProbability;
+ bool newValue = !originalValue;
+
+ // Call
+ row.UseManualAssemblyProbability = newValue;
+
+ // Assert
+ Assert.AreEqual(newValue, result.UseManualAssemblyProbability);
+ mocks.VerifyAll();
+ }
+ }
+
+ [Test]
+ [TestCase(0)]
+ [TestCase(1)]
+ [TestCase(0.5)]
+ [TestCase(1e-6)]
+ [TestCase(double.NaN)]
+ public void ManualAssemblyProbability_ValidValue_NotifyObserversAndPropertyChanged(double value)
+ {
+ // Setup
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+ var observer = mocks.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new StabilityPointStructuresFailureMechanismSectionResult(section);
+ result.Attach(observer);
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var row = new StabilityPointStructuresFailureMechanismSectionResultRow(
+ result, failureMechanism, assessmentSection);
+
+ // Call
+ row.ManualAssemblyProbability = value;
+
+ // Assert
+ Assert.AreEqual(value, row.ManualAssemblyProbability);
+ mocks.VerifyAll();
+ }
+ }
+
+ [Test]
+ [SetCulture("nl-NL")]
+ [TestCase(-20)]
+ [TestCase(-1e-6)]
+ [TestCase(1 + 1e-6)]
+ [TestCase(12)]
+ public void ManualAssemblyProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value)
+ {
+ // Setup
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new StabilityPointStructuresFailureMechanismSectionResult(section);
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var row = new StabilityPointStructuresFailureMechanismSectionResultRow(
+ result, failureMechanism, assessmentSection);
+
+ // Call
+ TestDelegate test = () => row.ManualAssemblyProbability = value;
+
+ // Assert
+ const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen.";
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
+ mocks.VerifyAll();
+ }
+ }
+
+ [Test]
+ public void GetSectionResultCalculation_NoCalculationSetOnSectionResult_ReturnNull()
+ {
+ // Setup
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+ mocks.ReplayAll();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new StabilityPointStructuresFailureMechanismSectionResult(section);
+
+ // Precondition
+ Assert.IsNull(result.Calculation);
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ 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 failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ var mocks = new MockRepository();
+ IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
+ mocks.ReplayAll();
+
+ var expectedCalculation = new StructuresCalculation();
+
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new StabilityPointStructuresFailureMechanismSectionResult(section)
+ {
+ Calculation = expectedCalculation
+ };
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result, failureMechanism, assessmentSection);
+
+ // Call
+ StructuresCalculation calculation = row.GetSectionResultCalculation();
+
+ // Assert
+ Assert.AreSame(expectedCalculation, calculation);
+ mocks.VerifyAll();
+ }
+ }
+
#region Registration
[Test]
@@ -495,65 +657,5 @@
}
#endregion
-
- [Test]
- public void GetSectionResultCalculation_NoCalculationSetOnSectionResult_ReturnNull()
- {
- // Setup
- var failureMechanism = new StabilityPointStructuresFailureMechanism();
-
- var mocks = new MockRepository();
- IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
- mocks.ReplayAll();
-
- FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
- var result = new StabilityPointStructuresFailureMechanismSectionResult(section);
-
- // Precondition
- Assert.IsNull(result.Calculation);
-
- using (new AssemblyToolCalculatorFactoryConfig())
- {
- 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 failureMechanism = new StabilityPointStructuresFailureMechanism();
-
- var mocks = new MockRepository();
- IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks);
- mocks.ReplayAll();
-
- var expectedCalculation = new StructuresCalculation();
-
- FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
- var result = new StabilityPointStructuresFailureMechanismSectionResult(section)
- {
- Calculation = expectedCalculation
- };
-
- using (new AssemblyToolCalculatorFactoryConfig())
- {
- var row = new StabilityPointStructuresFailureMechanismSectionResultRow(result, failureMechanism, assessmentSection);
-
- // Call
- StructuresCalculation calculation = row.GetSectionResultCalculation();
-
- // Assert
- Assert.AreSame(expectedCalculation, calculation);
- mocks.VerifyAll();
- }
- }
}
}
\ No newline at end of file