Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismViewTest.cs =================================================================== diff -u -r386509fa21d9db327c02c2664f8a114d7f4404ef -re855d4739bb02a913644ca71efac87196ce7229b --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismViewTest.cs (.../ClosingStructuresFailureMechanismViewTest.cs) (revision 386509fa21d9db327c02c2664f8a114d7f4404ef) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismViewTest.cs (.../ClosingStructuresFailureMechanismViewTest.cs) (revision e855d4739bb02a913644ca71efac87196ce7229b) @@ -23,7 +23,6 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; -using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Core.Components.Gis.Data; using Core.Components.Gis.Features; Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs =================================================================== diff -u -r386509fa21d9db327c02c2664f8a114d7f4404ef -re855d4739bb02a913644ca71efac87196ce7229b --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision 386509fa21d9db327c02c2664f8a114d7f4404ef) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision e855d4739bb02a913644ca71efac87196ce7229b) @@ -334,7 +334,7 @@ var random = new Random(21); using (var view = new GrassCoverErosionInwardsFailureMechanismView()) { - IMapControl map = ((RingtoetsMapControl)view.Controls[0]).MapControl; + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0); var assessmentSection = new ObservableTestAssessmentSectionStub Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Views/HeightStructuresFailureMechanismViewTest.cs =================================================================== diff -u -r386509fa21d9db327c02c2664f8a114d7f4404ef -re855d4739bb02a913644ca71efac87196ce7229b --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Views/HeightStructuresFailureMechanismViewTest.cs (.../HeightStructuresFailureMechanismViewTest.cs) (revision 386509fa21d9db327c02c2664f8a114d7f4404ef) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Views/HeightStructuresFailureMechanismViewTest.cs (.../HeightStructuresFailureMechanismViewTest.cs) (revision e855d4739bb02a913644ca71efac87196ce7229b) @@ -342,7 +342,7 @@ var random = new Random(21); using (var view = new HeightStructuresFailureMechanismView()) { - IMapControl map = ((RingtoetsMapControl)view.Controls[0]).MapControl; + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0); var assessmentSection = new ObservableTestAssessmentSectionStub Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismViewTest.cs =================================================================== diff -u -r98af5a62ebc1f698a030dc82ad1fb0055d97935d -re855d4739bb02a913644ca71efac87196ce7229b --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismViewTest.cs (.../MacroStabilityInwardsFailureMechanismViewTest.cs) (revision 98af5a62ebc1f698a030dc82ad1fb0055d97935d) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismViewTest.cs (.../MacroStabilityInwardsFailureMechanismViewTest.cs) (revision e855d4739bb02a913644ca71efac87196ce7229b) @@ -379,7 +379,7 @@ var random = new Random(21); using (var view = new MacroStabilityInwardsFailureMechanismView()) { - IMapControl map = ((RingtoetsMapControl)view.Controls[0]).MapControl; + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0); var assessmentSection = new ObservableTestAssessmentSectionStub Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs =================================================================== diff -u -rd04fe66045d6183879fd4e70bab196d127039350 -re855d4739bb02a913644ca71efac87196ce7229b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision d04fe66045d6183879fd4e70bab196d127039350) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision e855d4739bb02a913644ca71efac87196ce7229b) @@ -45,11 +45,12 @@ public partial class PipingFailureMechanismView : UserControl, IMapView { private readonly Observer failureMechanismObserver; - private readonly Observer hydraulicBoundaryDatabaseObserver; + private readonly Observer hydraulicBoundaryLocationsObserver; private readonly Observer assessmentSectionObserver; private readonly Observer surfaceLinesObserver; private readonly Observer stochasticSoilModelsObserver; + private readonly RecursiveObserver, HydraulicBoundaryLocation> hydraulicBoundaryLocationObserver; private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationGroupObserver; private readonly RecursiveObserver calculationObserver; @@ -75,19 +76,13 @@ InitializeComponent(); failureMechanismObserver = new Observer(UpdateMapData); - assessmentSectionObserver = new Observer(() => - { - if (!ReferenceEquals(hydraulicBoundaryDatabaseObserver.Observable, data.Parent.HydraulicBoundaryDatabase)) - { - hydraulicBoundaryDatabaseObserver.Observable = data.Parent.HydraulicBoundaryDatabase; - } - - UpdateMapData(); - }); - hydraulicBoundaryDatabaseObserver = new Observer(UpdateHydraulicBoundaryLocationsMapData); + assessmentSectionObserver = new Observer(UpdateMapData); + hydraulicBoundaryLocationsObserver = new Observer(UpdateHydraulicBoundaryLocationsMapData); surfaceLinesObserver = new Observer(UpdateSurfaceLinesMapData); stochasticSoilModelsObserver = new Observer(UpdateStochasticSoilModelsMapData); + hydraulicBoundaryLocationObserver = new RecursiveObserver, HydraulicBoundaryLocation>( + UpdateHydraulicBoundaryLocationsMapData, hbl => hbl); calculationInputObserver = new RecursiveObserver( UpdateCalculationsMapData, pcg => pcg.Children.Concat(pcg.Children.OfType().Select(pc => pc.InputParameters))); calculationGroupObserver = new RecursiveObserver(UpdateCalculationsMapData, pcg => pcg.Children); @@ -128,7 +123,8 @@ { failureMechanismObserver.Observable = null; assessmentSectionObserver.Observable = null; - hydraulicBoundaryDatabaseObserver.Observable = null; + hydraulicBoundaryLocationsObserver.Observable = null; + hydraulicBoundaryLocationObserver.Observable = null; stochasticSoilModelsObserver.Observable = null; calculationInputObserver.Observable = null; calculationGroupObserver.Observable = null; @@ -142,7 +138,8 @@ { failureMechanismObserver.Observable = data.WrappedData; assessmentSectionObserver.Observable = data.Parent; - hydraulicBoundaryDatabaseObserver.Observable = data.Parent.HydraulicBoundaryDatabase; + hydraulicBoundaryLocationsObserver.Observable = data.Parent.HydraulicBoundaryDatabase.Locations; + hydraulicBoundaryLocationObserver.Observable = data.Parent.HydraulicBoundaryDatabase.Locations; stochasticSoilModelsObserver.Observable = data.WrappedData.StochasticSoilModels; calculationInputObserver.Observable = data.WrappedData.CalculationsGroup; calculationGroupObserver.Observable = data.WrappedData.CalculationsGroup; @@ -169,7 +166,8 @@ { failureMechanismObserver.Dispose(); assessmentSectionObserver.Dispose(); - hydraulicBoundaryDatabaseObserver.Dispose(); + hydraulicBoundaryLocationsObserver.Dispose(); + hydraulicBoundaryLocationObserver.Dispose(); stochasticSoilModelsObserver.Dispose(); calculationInputObserver.Dispose(); calculationGroupObserver.Dispose(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs =================================================================== diff -u -r44cf5bc0f292171637b0c91b74005effe4d2798c -re855d4739bb02a913644ca71efac87196ce7229b --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision 44cf5bc0f292171637b0c91b74005effe4d2798c) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision e855d4739bb02a913644ca71efac87196ce7229b) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; @@ -329,7 +330,7 @@ } [Test] - public void GivenViewWithAssessmentSectionData_WhenAssessmentSectionUpdatedAndNotified_ThenMapDataUpdated() + public void GivenViewWithHydraulicBoundaryLocationsData_WhenHydraulicBoundaryLocationsUpdatedAndNotified_ThenMapDataUpdated() { // Given using (var view = new PipingFailureMechanismView()) @@ -351,14 +352,7 @@ var mocks = new MockRepository(); IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection); - observers[referenceLineIndex].Expect(obs => obs.UpdateObserver()); - observers[stochasticSoilModelsIndex].Expect(obs => obs.UpdateObserver()); - observers[surfaceLinesIndex].Expect(obs => obs.UpdateObserver()); - observers[sectionsIndex].Expect(obs => obs.UpdateObserver()); - observers[sectionsStartPointIndex].Expect(obs => obs.UpdateObserver()); - observers[sectionsEndPointIndex].Expect(obs => obs.UpdateObserver()); observers[hydraulicBoundaryLocationsIndex].Expect(obs => obs.UpdateObserver()); - observers[calculationsIndex].Expect(obs => obs.UpdateObserver()); mocks.ReplayAll(); MapData hydraulicBoundaryLocationsMapData = map.Data.Collection.ElementAt(hydraulicBoundaryLocationsIndex); @@ -367,9 +361,8 @@ MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); // When - assessmentSection.HydraulicBoundaryDatabase.Locations.Clear(); assessmentSection.HydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)); - assessmentSection.NotifyObservers(); + assessmentSection.HydraulicBoundaryDatabase.Locations.NotifyObservers(); // Then MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); @@ -378,43 +371,44 @@ } [Test] - public void GivenViewWithHydraulicBoundaryDatabaseData_WhenHydraulicBoundaryDatabaseUpdatedAndNotified_ThenMapDataUpdated() + public void GivenViewWithHydraulicBoundaryLocationsData_WhenLocationUpdatedAndNotified_ThenMapDataUpdated() { // Given + var random = new Random(21); using (var view = new PipingFailureMechanismView()) { IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0); var assessmentSection = new ObservableTestAssessmentSectionStub { HydraulicBoundaryDatabase = { Locations = { - new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0) + hydraulicBoundaryLocation } } }; - view.Data = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection); + var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection); - var mocks = new MockRepository(); - IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection); - observers[hydraulicBoundaryLocationsIndex].Expect(obs => obs.UpdateObserver()); - mocks.ReplayAll(); + view.Data = failureMechanismContext; MapData hydraulicBoundaryLocationsMapData = map.Data.Collection.ElementAt(hydraulicBoundaryLocationsIndex); // Precondition - MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); + MapDataTestHelper.AssertHydraulicBoundaryLocationOutputsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, + hydraulicBoundaryLocationsMapData); // When - assessmentSection.HydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)); - assessmentSection.HydraulicBoundaryDatabase.NotifyObservers(); + hydraulicBoundaryLocation.DesignWaterLevelCalculation.Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()); + hydraulicBoundaryLocation.WaveHeightCalculation.Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()); + hydraulicBoundaryLocation.NotifyObservers(); // Then - MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); - mocks.VerifyAll(); + MapDataTestHelper.AssertHydraulicBoundaryLocationOutputsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, + hydraulicBoundaryLocationsMapData); } }