Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -r5412b4f96ab3b27e5f8d053773d88859f165890e -rb24a89c790d199d7f70133aed2f47784baa201ca --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 5412b4f96ab3b27e5f8d053773d88859f165890e) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision b24a89c790d199d7f70133aed2f47784baa201ca) @@ -65,15 +65,17 @@ calculationInputObserver = new RecursiveObserver( UpdateView, cg => cg.Children.Concat(cg.Children - .OfType() - .Select(c => c.InputParameters))); + .OfType>() + .Select(c => c.InputParameters))) + { + Observable = failureMechanism.CalculationsGroup + }; calculationGroupObserver = new RecursiveObserver( UpdateView, - c => c.Children); - - CalculationGroup observableGroup = failureMechanism.CalculationsGroup; - calculationInputObserver.Observable = observableGroup; - calculationGroupObserver.Observable = observableGroup; + c => c.Children) + { + Observable = failureMechanism.CalculationsGroup + }; } protected override void Dispose(bool disposing) Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs =================================================================== diff -u -rcec2e1c9d537ddf703b6de52fcbfc8982ef6cea6 -rb24a89c790d199d7f70133aed2f47784baa201ca --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision cec2e1c9d537ddf703b6de52fcbfc8982ef6cea6) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismResultViewTest.cs (.../PipingFailureMechanismResultViewTest.cs) (revision b24a89c790d199d7f70133aed2f47784baa201ca) @@ -29,6 +29,7 @@ using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; +using Riskeer.Piping.Data.TestUtil; using Riskeer.Piping.Forms.Views; namespace Riskeer.Piping.Forms.Test.Views @@ -177,6 +178,60 @@ } } + [Test] + public void GivenPipingFailureMechanismResultView_WhenCalculationUpdatedAndNotifiesObservers_ThenDataGridViewUpdated() + { + // Given + var failureMechanism = new PipingFailureMechanism(); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1") + }); + + var calculationScenario = new TestPipingCalculationScenario(); + failureMechanism.CalculationsGroup.Children.Add(calculationScenario); + + using (ShowFailureMechanismResultsView(failureMechanism)) + { + var rowsChanged = false; + DataGridView dataGridView = GetDataGridView(); + dataGridView.Rows.CollectionChanged += (sender, args) => rowsChanged = true; + + // When + calculationScenario.NotifyObservers(); + + // Then + Assert.IsTrue(rowsChanged); + } + } + + [Test] + public void GivenPipingFailureMechanismResultView_WhenCalculationInputUpdatedAndNotifiesObservers_ThenDataGridViewUpdated() + { + // Given + var failureMechanism = new PipingFailureMechanism(); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1") + }); + + var calculationScenario = new TestPipingCalculationScenario(); + failureMechanism.CalculationsGroup.Children.Add(calculationScenario); + + using (ShowFailureMechanismResultsView(failureMechanism)) + { + var rowsChanged = false; + DataGridView dataGridView = GetDataGridView(); + dataGridView.Rows.CollectionChanged += (sender, args) => rowsChanged = true; + + // When + calculationScenario.InputParameters.NotifyObservers(); + + // Then + Assert.IsTrue(rowsChanged); + } + } + private static DataGridView GetDataGridView() { return (DataGridView) new ControlTester("dataGridView").TheObject;