Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismSectionsProbabilityAssessmentView.cs =================================================================== diff -u -rfdfadac14aca46b2ffde145e6532ee7bb18d2507 -r303f338bc9e42d1d7621666fdf83b93a11f28b64 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismSectionsProbabilityAssessmentView.cs (.../FailureMechanismSectionsProbabilityAssessmentView.cs) (revision fdfadac14aca46b2ffde145e6532ee7bb18d2507) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismSectionsProbabilityAssessmentView.cs (.../FailureMechanismSectionsProbabilityAssessmentView.cs) (revision 303f338bc9e42d1d7621666fdf83b93a11f28b64) @@ -37,6 +37,7 @@ private readonly ProbabilityAssessmentInput probabilityAssessmentInput; private readonly Observer failureMechanismObserver; + private double currentA; /// /// Creates a new instance of . @@ -70,6 +71,8 @@ protected override void SetDataGridViewControlData() { + currentA = probabilityAssessmentInput.A; + failureMechanismSectionsDataGridViewControl.SetDataSource( sections.Select(section => new FailureMechanismSectionProbabilityAssessmentRow(section, probabilityAssessmentInput)) .ToArray()); @@ -84,6 +87,13 @@ private void HandleProbabilityAssessmentInputChange() { + if (currentA.Equals(probabilityAssessmentInput.A)) + { + return; + } + + currentA = probabilityAssessmentInput.A; + failureMechanismSectionsDataGridViewControl.RefreshDataGridView(); } } Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismSectionProbabilityAssessmentRowTest.cs =================================================================== diff -u -r0a15d24f5c981c82d77f10cd67ab9171c4ee555a -r303f338bc9e42d1d7621666fdf83b93a11f28b64 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismSectionProbabilityAssessmentRowTest.cs (.../FailureMechanismSectionProbabilityAssessmentRowTest.cs) (revision 0a15d24f5c981c82d77f10cd67ab9171c4ee555a) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismSectionProbabilityAssessmentRowTest.cs (.../FailureMechanismSectionProbabilityAssessmentRowTest.cs) (revision 303f338bc9e42d1d7621666fdf83b93a11f28b64) @@ -68,7 +68,7 @@ } [Test] - public void GivenRow_WhenProbabilityAssessmentInputChanged_ThenNChangedAccordingly() + public void GivenRow_WhenProbabilityAssessmentInputChanged_ThenLengthEffectChangedAccordingly() { // Given var random = new Random(39); Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismSectionsProbabilityAssessmentViewTest.cs =================================================================== diff -u -r828558d9bcb3134b16a9acee46e4cba9d94ae893 -r303f338bc9e42d1d7621666fdf83b93a11f28b64 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismSectionsProbabilityAssessmentViewTest.cs (.../FailureMechanismSectionsProbabilityAssessmentViewTest.cs) (revision 828558d9bcb3134b16a9acee46e4cba9d94ae893) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismSectionsProbabilityAssessmentViewTest.cs (.../FailureMechanismSectionsProbabilityAssessmentViewTest.cs) (revision 303f338bc9e42d1d7621666fdf83b93a11f28b64) @@ -202,7 +202,7 @@ } [Test] - public void GivenViewWithSections_WhenFailureMechanismNotifiesChangeAndProbabilityAssessmentInputChanged_ThenDataGridViewUpdated() + public void GivenViewWithSections_WhenFailureMechanismNotifiesChangeAndProbabilityAssessmentInputChanged_ThenDataGridViewRefreshed() { // Given var failureMechanism = new TestFailureMechanism(); @@ -214,6 +214,12 @@ failureMechanism, probabilityAssessmentInput)) { + DataGridView sectionsDataGridView = GetSectionsDataGridView(view); + + var count = 0; + + sectionsDataGridView.DataSourceChanged += (s, e) => { count++; }; + DataGridViewControl sectionsDataGridViewControl = GetSectionsDataGridViewControl(view); // Precondition @@ -224,10 +230,39 @@ failureMechanism.NotifyObservers(); // Then + Assert.AreEqual(0, count); AssertSectionsDataGridViewControl(failureMechanism.Sections.ToArray(), probabilityAssessmentInput, sectionsDataGridViewControl); } } + [Test] + public void GivenViewWithSections_WhenFailureMechanismNotifiesChangeButNothingRelevantChanged_ThenDataGridViewNotUpdated() + { + // Given + var failureMechanism = new TestFailureMechanism(); + failureMechanism.AddSection(CreateFailureMechanismSection("a", 0.0, 0.0, 1.0, 1.0)); + + ProbabilityAssessmentInput probabilityAssessmentInput = CreateProbabilityAssessmentInput(); + + using (FailureMechanismSectionsProbabilityAssessmentView view = ShowFailureMechanismSectionsProbabilityAssessmentView(failureMechanism.Sections, + failureMechanism, + probabilityAssessmentInput)) + { + DataGridView sectionsDataGridView = GetSectionsDataGridView(view); + + var count = 0; + + sectionsDataGridView.Invalidated += (s, e) => { count++; }; + + // When + failureMechanism.Contribution = 50; + failureMechanism.NotifyObservers(); + + // Then + Assert.AreEqual(0, count); + } + } + private static FailureMechanismSection CreateFailureMechanismSection(string name, double x1, double y1, double x2, double y2) { return new FailureMechanismSection(name, new[] @@ -249,6 +284,11 @@ return ControlTestHelper.GetControls(view, "failureMechanismSectionsDataGridViewControl").Single(); } + private static DataGridView GetSectionsDataGridView(FailureMechanismSectionsView view) + { + return ControlTestHelper.GetControls(view, "dataGridView").Single(); + } + private static void AssertSectionsDataGridViewControl(FailureMechanismSection[] sections, ProbabilityAssessmentInput probabilityAssessmentInput, DataGridViewControl sectionsDataGridViewControl)