Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismView.cs =================================================================== diff -u -rf1f94637a6b45b394493bf16a078b317c02d329b -re54fdbbe09236acfd5fc7051e847a3c978e0c2c2 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismView.cs (.../FailureMechanismView.cs) (revision f1f94637a6b45b394493bf16a078b317c02d329b) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismView.cs (.../FailureMechanismView.cs) (revision e54fdbbe09236acfd5fc7051e847a3c978e0c2c2) @@ -41,7 +41,8 @@ private readonly Observer failureMechanismObserver; private readonly Observer assessmentSectionObserver; - private readonly Observer hydraulicBoundaryDatabaseObserver; + private readonly Observer hydraulicBoundaryLocationsObserver; + private readonly RecursiveObserver, HydraulicBoundaryLocation> hydraulicBoundaryLocationObserver; private readonly MapDataCollection mapDataCollection; private readonly MapLineData referenceLineMapData; @@ -62,14 +63,16 @@ failureMechanismObserver = new Observer(UpdateMapData); assessmentSectionObserver = new Observer(() => { - if (!ReferenceEquals(hydraulicBoundaryDatabaseObserver.Observable, data.Parent.HydraulicBoundaryDatabase)) + if (!ReferenceEquals(hydraulicBoundaryLocationsObserver.Observable, data.Parent.HydraulicBoundaryDatabase)) { - hydraulicBoundaryDatabaseObserver.Observable = data.Parent.HydraulicBoundaryDatabase; + hydraulicBoundaryLocationsObserver.Observable = data.Parent.HydraulicBoundaryDatabase; } UpdateMapData(); }); - hydraulicBoundaryDatabaseObserver = new Observer(UpdateMapData); + hydraulicBoundaryLocationsObserver = new Observer(UpdateMapData); + hydraulicBoundaryLocationObserver = new RecursiveObserver, HydraulicBoundaryLocation>( + UpdateMapData, hbl => hbl); mapDataCollection = new MapDataCollection(defaultMapDataCollectionName); referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData(); @@ -99,7 +102,8 @@ { failureMechanismObserver.Observable = null; assessmentSectionObserver.Observable = null; - hydraulicBoundaryDatabaseObserver.Observable = null; + hydraulicBoundaryLocationsObserver.Observable = null; + hydraulicBoundaryLocationObserver.Observable = null; mapDataCollection.Name = defaultMapDataCollectionName; @@ -111,7 +115,8 @@ assessmentSectionObserver.Observable = data.Parent; mapDataCollection.Name = data.WrappedData.Name; - hydraulicBoundaryDatabaseObserver.Observable = data.Parent.HydraulicBoundaryDatabase; + hydraulicBoundaryLocationsObserver.Observable = data.Parent.HydraulicBoundaryDatabase.Locations; + hydraulicBoundaryLocationObserver.Observable = data.Parent.HydraulicBoundaryDatabase.Locations; SetMapDataFeatures(); @@ -132,7 +137,8 @@ { failureMechanismObserver.Dispose(); assessmentSectionObserver.Dispose(); - hydraulicBoundaryDatabaseObserver.Dispose(); + hydraulicBoundaryLocationsObserver.Dispose(); + hydraulicBoundaryLocationObserver.Dispose(); if (disposing) { Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismViewTest.cs =================================================================== diff -u -rf1876d31d910814fdf1d327c325fc1dfd6846c5e -re54fdbbe09236acfd5fc7051e847a3c978e0c2c2 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismViewTest.cs (.../FailureMechanismViewTest.cs) (revision f1876d31d910814fdf1d327c325fc1dfd6846c5e) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismViewTest.cs (.../FailureMechanismViewTest.cs) (revision e54fdbbe09236acfd5fc7051e847a3c978e0c2c2) @@ -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.Linq; using System.Windows.Forms; @@ -232,7 +233,7 @@ } [Test] - public void UpdateObserver_AssessmentSectionUpdated_MapDataUpdated() + public void UpdateObserver_HydraulicBoundaryLocationsDataUpdated_MapDataUpdated() { // Setup using (var view = new FailureMechanismView()) @@ -260,30 +261,31 @@ MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); // Call - assessmentSection.HydraulicBoundaryDatabase.Locations.Clear(); - assessmentSection.HydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)); - assessmentSection.NotifyObservers(); + assessmentSection.HydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(2, "test2", 3.0, 4.0)); + assessmentSection.HydraulicBoundaryDatabase.Locations.NotifyObservers(); // Assert MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); } } [Test] - public void UpdateObserver_HydraulicBoundaryDatabaseUpdated_MapDataUpdated() + public void UpdatedObserver_LocationUpdatedAndNotified_MapDataUpdated() { // Setup + var random = new Random(21); using (var view = new FailureMechanismView()) { 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 } } }; @@ -295,14 +297,17 @@ MapData hydraulicBoundaryLocationsMapData = map.Data.Collection.ElementAt(hydraulicBoundaryLocationsIndex); // Precondition - MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); + MapDataTestHelper.AssertHydraulicBoundaryLocationOutputsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, + hydraulicBoundaryLocationsMapData); // Call - assessmentSection.HydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(2, "test2", 3.0, 4.0)); - assessmentSection.HydraulicBoundaryDatabase.NotifyObservers(); + hydraulicBoundaryLocation.DesignWaterLevelCalculation.Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()); + hydraulicBoundaryLocation.WaveHeightCalculation.Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()); + hydraulicBoundaryLocation.NotifyObservers(); // Assert - MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, hydraulicBoundaryLocationsMapData); + MapDataTestHelper.AssertHydraulicBoundaryLocationOutputsMapData(assessmentSection.HydraulicBoundaryDatabase.Locations, + hydraulicBoundaryLocationsMapData); } }