Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -rb24a89c790d199d7f70133aed2f47784baa201ca -r714c73027a6c63dcde5693e7567a60267cc69ae0 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision b24a89c790d199d7f70133aed2f47784baa201ca) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 714c73027a6c63dcde5693e7567a60267cc69ae0) @@ -39,6 +39,7 @@ { private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationGroupObserver; + private readonly RecursiveObserver, PipingScenarioConfigurationPerFailureMechanismSection> scenarioConfigurationsPerSectionObserver; private readonly IAssessmentSection assessmentSection; /// @@ -76,12 +77,20 @@ { Observable = failureMechanism.CalculationsGroup }; + + scenarioConfigurationsPerSectionObserver = new RecursiveObserver, PipingScenarioConfigurationPerFailureMechanismSection>( + UpdateView, + sc => sc) + { + Observable = failureMechanism.ScenarioConfigurationsPerFailureMechanismSection + }; } protected override void Dispose(bool disposing) { calculationInputObserver.Dispose(); calculationGroupObserver.Dispose(); + scenarioConfigurationsPerSectionObserver.Dispose(); base.Dispose(disposing); } Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs =================================================================== diff -u -r74407a8a8acd86ad005b3d9515251193f3cf26af -r714c73027a6c63dcde5693e7567a60267cc69ae0 --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision 74407a8a8acd86ad005b3d9515251193f3cf26af) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision 714c73027a6c63dcde5693e7567a60267cc69ae0) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using System.Windows.Forms; using NUnit.Extensions.Forms; using NUnit.Framework; @@ -179,7 +180,7 @@ } [Test] - public void GivenPipingFailureMechanismResultView_WhenCalculationUpdatedAndNotifiesObservers_ThenDataGridViewUpdated() + public void GivenPipingFailureMechanismResultView_WhenCalculationNotifiesObservers_ThenDataGridViewUpdated() { // Given var failureMechanism = new PipingFailureMechanism(); @@ -209,7 +210,7 @@ } [Test] - public void GivenPipingFailureMechanismResultView_WhenCalculationInputUpdatedAndNotifiesObservers_ThenDataGridViewUpdated() + public void GivenPipingFailureMechanismResultView_WhenCalculationInputNotifiesObservers_ThenDataGridViewUpdated() { // Given var failureMechanism = new PipingFailureMechanism(); @@ -238,6 +239,33 @@ } } + [Test] + public void GivenPipingFailureMechanismResultView_WhenScenarioConfigurationsPerFailureMechanismSectionNotifiesObservers_ThenDataGridViewUpdated() + { + // Given + var failureMechanism = new PipingFailureMechanism(); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1") + }); + + using (ShowFailureMechanismResultsView(failureMechanism)) + { + var rowsChanged = false; + DataGridView dataGridView = GetDataGridView(); + dataGridView.Rows.CollectionChanged += (sender, args) => rowsChanged = true; + + // Precondition + Assert.IsFalse(rowsChanged); + + // When + failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.First().NotifyObservers(); + + // Then + Assert.IsTrue(rowsChanged); + } + } + private static DataGridView GetDataGridView() { return (DataGridView) new ControlTester("dataGridView").TheObject;