Index: Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs
===================================================================
diff -u -rf1bd17ba95b3fbae5928d4240523d50d8b83b64d -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs (.../FailureMechanismContribution.cs) (revision f1bd17ba95b3fbae5928d4240523d50d8b83b64d)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs (.../FailureMechanismContribution.cs) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -138,7 +138,7 @@
{
Contribution = otherContribution
};
- var otherContributionItem = new FailureMechanismContributionItem(otherFailureMechanism, norm);
+ var otherContributionItem = new FailureMechanismContributionItem(otherFailureMechanism, norm, true);
distribution.Add(otherContributionItem);
}
}
Index: Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContributionItem.cs
===================================================================
diff -u -r103f8cf52c957309a116106dc9ae31169ff83169 -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContributionItem.cs (.../FailureMechanismContributionItem.cs) (revision 103f8cf52c957309a116106dc9ae31169ff83169)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContributionItem.cs (.../FailureMechanismContributionItem.cs) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -41,8 +41,11 @@
///
/// The for which the contribution is defined.
/// The norm used to calculate the probability space.
+ /// Gets a value indicating whether
+ /// the corresponding failure mechanism is always relevant. When true, then
+ /// cannot be set to false.
/// Thrown when is null.
- public FailureMechanismContributionItem(IFailureMechanism failureMechanism, int norm)
+ public FailureMechanismContributionItem(IFailureMechanism failureMechanism, int norm, bool isFailureMechanismAlwaysRelevant = false)
{
if (failureMechanism == null)
{
@@ -52,6 +55,7 @@
Assessment = failureMechanism.Name;
Contribution = failureMechanism.Contribution;
Norm = norm;
+ IsAlwaysRelevant = isFailureMechanismAlwaysRelevant;
}
///
@@ -88,15 +92,24 @@
{
get
{
- return failureMechanism.IsRelevant;
+ return IsAlwaysRelevant || failureMechanism.IsRelevant;
}
set
{
- failureMechanism.IsRelevant = value;
+ if (!IsAlwaysRelevant)
+ {
+ failureMechanism.IsRelevant = value;
+ }
}
}
///
+ /// Gets a value indicating whether the corresponding failure mechanism is always
+ /// relevant. When true, then cannot be set to false.
+ ///
+ public bool IsAlwaysRelevant { get; private set; }
+
+ ///
/// Notifies the observers for the wrapped .
///
public void NotifyFailureMechanismObservers()
Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionItemTest.cs
===================================================================
diff -u -r1e4d77c17c6eac78bfd705efdff9e52b4fca2c7e -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionItemTest.cs (.../FailureMechanismContributionItemTest.cs) (revision 1e4d77c17c6eac78bfd705efdff9e52b4fca2c7e)
+++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionItemTest.cs (.../FailureMechanismContributionItemTest.cs) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -85,12 +85,43 @@
Assert.AreEqual(name, result.Assessment);
Assert.AreEqual(contribution, result.Contribution);
Assert.AreEqual(norm, result.Norm);
+ Assert.IsFalse(result.IsAlwaysRelevant);
Assert.AreEqual(isRelevant, result.IsRelevant);
mockRepository.VerifyAll();
}
[Test]
+ public void Constructor_WithFailureMechanismThatIsAlwaysRelevant_SetProperties()
+ {
+ // Setup
+ string name = "SomeName";
+ var random = new Random(21);
+ double contribution = random.Next(1, 100);
+ var norm = random.Next(1, int.MaxValue);
+ const bool isRelevant = false;
+
+ var failureMechanism = mockRepository.StrictMock();
+ failureMechanism.Expect(fm => fm.Name).Return(name);
+ failureMechanism.Expect(fm => fm.Contribution).Return(contribution);
+ failureMechanism.Stub(fm => fm.IsRelevant).Return(isRelevant);
+
+ mockRepository.ReplayAll();
+
+ // Call
+ var result = new FailureMechanismContributionItem(failureMechanism, norm, true);
+
+ // Assert
+ Assert.AreEqual(name, result.Assessment);
+ Assert.AreEqual(contribution, result.Contribution);
+ Assert.AreEqual(norm, result.Norm);
+ Assert.IsTrue(result.IsAlwaysRelevant);
+ Assert.IsTrue(result.IsRelevant);
+
+ mockRepository.VerifyAll();
+ }
+
+ [Test]
[TestCase(20, 2000, 10000)]
[TestCase(3, 100, 10000/3.0)]
[TestCase(25.5, 2550, 10000)]
@@ -137,6 +168,26 @@
}
[Test]
+ public void IsRelevant_SetNewValueWhenAlwaysRelevant_NothingChanges()
+ {
+ // Setup
+ var failureMechanism = mockRepository.Stub();
+ failureMechanism.IsRelevant = false;
+ mockRepository.ReplayAll();
+
+ var contributionItem = new FailureMechanismContributionItem(failureMechanism, 30000, true);
+
+ // Precondition:
+ Assert.IsTrue(contributionItem.IsRelevant);
+
+ // Call
+ contributionItem.IsRelevant = false;
+
+ // Assert
+ Assert.IsTrue(contributionItem.IsRelevant);
+ }
+
+ [Test]
public void NotifyFailureMechanismObservers_Always_CallsFailureMechanismUpdateObservers()
{
// Setup
Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs
===================================================================
diff -u -rf1bd17ba95b3fbae5928d4240523d50d8b83b64d -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision f1bd17ba95b3fbae5928d4240523d50d8b83b64d)
+++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -132,6 +132,8 @@
FailureMechanismContributionItem otherFailureMechanismItem = result.Distribution.ElementAt(0);
Assert.AreEqual(contribution, otherFailureMechanismItem.Contribution);
AssertFailureProbabilitySpace(contribution, norm, otherFailureMechanismItem.ProbabilitySpace);
+ Assert.IsTrue(otherFailureMechanismItem.IsAlwaysRelevant);
+ Assert.IsTrue(otherFailureMechanismItem.IsRelevant);
Assert.AreEqual(norm, result.Norm);
}
@@ -179,7 +181,9 @@
CollectionAssert.AreEqual(failureMechanismNames, result.Distribution.Select(d => d.Assessment));
CollectionAssert.AreEqual(failureMechanismContributions, result.Distribution.Select(d => d.Contribution));
CollectionAssert.AreEqual(failureMechanismContributions.Select(c => (norm/c)*100), result.Distribution.Select(d => d.ProbabilitySpace));
-
+ var expectedIsAlwaysRelevant = Enumerable.Repeat(false, failureMechanismCount)
+ .Concat(Enumerable.Repeat(true, 1));
+ CollectionAssert.AreEqual(expectedIsAlwaysRelevant, result.Distribution.Select(d => d.IsAlwaysRelevant));
mockRepository.VerifyAll();
}
Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs
===================================================================
diff -u -r4ee9bf9a46317d760d9d8fdf95b9024571fc04fe -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 4ee9bf9a46317d760d9d8fdf95b9024571fc04fe)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -409,8 +409,11 @@
{
foreach (DataGridViewRow row in probabilityDistributionGrid.Rows)
{
- var isFailureMechanismRelevant = (bool)row.Cells[isRelevantColumn.Index].Value;
+ var isRelevantCell = (DataGridViewCheckBoxCell)row.Cells[isRelevantColumn.Index];
+ FailureMechanismContributionItem rowData = data.Distribution.ElementAt(row.Index);
+ isRelevantCell.ReadOnly = rowData.IsAlwaysRelevant;
+ var isFailureMechanismRelevant = (bool)isRelevantCell.Value;
SetRowStyle(isFailureMechanismRelevant, row);
}
}
Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj
===================================================================
diff -u -r684b8c0ca681ea2da3cc988bd60e9223037e5a16 -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision 684b8c0ca681ea2da3cc988bd60e9223037e5a16)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -66,7 +66,6 @@
-
Fisheye: Tag 8efe7a79774f6a946a58c45f052c975d43304fb3 refers to a dead (removed) revision in file `Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/DisabledFailureMechanismTreeNodeInfoTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs
===================================================================
diff -u -r4ee9bf9a46317d760d9d8fdf95b9024571fc04fe -r8efe7a79774f6a946a58c45f052c975d43304fb3
--- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 4ee9bf9a46317d760d9d8fdf95b9024571fc04fe)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 8efe7a79774f6a946a58c45f052c975d43304fb3)
@@ -881,6 +881,35 @@
mocks.VerifyAll();
}
+ [Test]
+ public void GivenView_WhenSettingFailureMechanismThatIsAlwaysRelevant_IsRelevantFlagTrueAndReadonly()
+ {
+ // Given
+ using (var view = new FailureMechanismContributionView())
+ {
+ ShowFormWithView(view);
+
+ var failureMechanisms = Enumerable.Empty();
+ var contribution = new FailureMechanismContribution(failureMechanisms, 50.0, 30000);
+
+ // Precondition:
+ FailureMechanismContributionItem[] contributionItems = contribution.Distribution.ToArray();
+ Assert.AreEqual(1, contributionItems.Length);
+ Assert.IsTrue(contributionItems[0].IsAlwaysRelevant);
+ Assert.IsTrue(contributionItems[0].IsRelevant);
+
+ // When
+ view.Data = contribution;
+
+ // Then
+ var dataGridView = (DataGridView)new ControlTester(dataGridViewControlName).TheObject;
+ DataGridViewRow row = dataGridView.Rows[0];
+ DataGridViewCell isRelevantCell = row.Cells[isRelevantColumnIndex];
+ Assert.IsTrue((bool)isRelevantCell.Value);
+ Assert.IsTrue(isRelevantCell.ReadOnly);
+ }
+ }
+
private void AssertDataGridViewDataSource(IEnumerable expectedDistributionElements, DataGridView dataGridView)
{
FailureMechanismContributionItem[] itemArray = expectedDistributionElements.ToArray();