Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismWithDetailedAssessmentView.cs =================================================================== diff -u -rac584c5f1360d6ec1e639a2a1bce0d7f645cc01e -r3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismWithDetailedAssessmentView.cs (.../FailureMechanismWithDetailedAssessmentView.cs) (revision ac584c5f1360d6ec1e639a2a1bce0d7f645cc01e) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismWithDetailedAssessmentView.cs (.../FailureMechanismWithDetailedAssessmentView.cs) (revision 3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6) @@ -61,6 +61,7 @@ private Observer failureMechanismObserver; private Observer assessmentSectionObserver; + private Observer referenceLineObserver; private Observer hydraulicBoundaryLocationsObserver; private RecursiveObserver, HydraulicBoundaryLocationCalculation> waterLevelCalculationsForFactorizedSignalingNormObserver; @@ -165,6 +166,7 @@ { failureMechanismObserver.Dispose(); assessmentSectionObserver.Dispose(); + referenceLineObserver.Dispose(); hydraulicBoundaryLocationsObserver.Dispose(); waterLevelCalculationsForFactorizedSignalingNormObserver.Dispose(); waterLevelCalculationsForSignalingNormObserver.Dispose(); @@ -223,10 +225,14 @@ { Observable = FailureMechanism }; - assessmentSectionObserver = new Observer(UpdateAssessmentSectionMapData) + assessmentSectionObserver = new Observer(UpdateReferenceLineMapData) { Observable = AssessmentSection }; + referenceLineObserver = new Observer(UpdateReferenceLineMapData) + { + Observable = AssessmentSection.ReferenceLine + }; hydraulicBoundaryLocationsObserver = new Observer(UpdateHydraulicBoundaryLocationsMapData) { Observable = AssessmentSection.HydraulicBoundaryDatabase.Locations @@ -286,7 +292,7 @@ #region AssessmentSection MapData - private void UpdateAssessmentSectionMapData() + private void UpdateReferenceLineMapData() { SetReferenceLineMapData(); referenceLineMapData.NotifyObservers(); Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismWithoutDetailedAssessmentView.cs =================================================================== diff -u -rac584c5f1360d6ec1e639a2a1bce0d7f645cc01e -r3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismWithoutDetailedAssessmentView.cs (.../FailureMechanismWithoutDetailedAssessmentView.cs) (revision ac584c5f1360d6ec1e639a2a1bce0d7f645cc01e) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismWithoutDetailedAssessmentView.cs (.../FailureMechanismWithoutDetailedAssessmentView.cs) (revision 3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6) @@ -59,6 +59,7 @@ private Observer failureMechanismObserver; private Observer assessmentSectionObserver; + private Observer referenceLineObserver; private Observer hydraulicBoundaryLocationsObserver; private RecursiveObserver, HydraulicBoundaryLocationCalculation> waterLevelCalculationsForFactorizedSignalingNormObserver; @@ -154,6 +155,7 @@ { failureMechanismObserver.Dispose(); assessmentSectionObserver.Dispose(); + referenceLineObserver.Dispose(); hydraulicBoundaryLocationsObserver.Dispose(); waterLevelCalculationsForFactorizedSignalingNormObserver.Dispose(); waterLevelCalculationsForSignalingNormObserver.Dispose(); @@ -210,10 +212,14 @@ { Observable = FailureMechanism }; - assessmentSectionObserver = new Observer(UpdateAssessmentSectionMapData) + assessmentSectionObserver = new Observer(UpdateReferenceLineMapData) { Observable = AssessmentSection }; + referenceLineObserver = new Observer(UpdateReferenceLineMapData) + { + Observable = AssessmentSection.ReferenceLine + }; hydraulicBoundaryLocationsObserver = new Observer(UpdateHydraulicBoundaryLocationsMapData) { Observable = AssessmentSection.HydraulicBoundaryDatabase.Locations @@ -271,7 +277,7 @@ #region AssessmentSection MapData - private void UpdateAssessmentSectionMapData() + private void UpdateReferenceLineMapData() { SetReferenceLineMapData(); referenceLineMapData.NotifyObservers(); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithDetailedAssessmentViewTest.cs =================================================================== diff -u -r48faf08e17ce1af5b7d6e4e33ebef86353405664 -r3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithDetailedAssessmentViewTest.cs (.../FailureMechanismWithDetailedAssessmentViewTest.cs) (revision 48faf08e17ce1af5b7d6e4e33ebef86353405664) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithDetailedAssessmentViewTest.cs (.../FailureMechanismWithDetailedAssessmentViewTest.cs) (revision 3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6) @@ -416,6 +416,47 @@ } [Test] + public void UpdateObserver_AssessmentSectionUpdated_MapDataUpdated() + { + // Setup + var referenceLine = new ReferenceLine(); + referenceLine.SetGeometry(new List + { + new Point2D(1.0, 2.0), + new Point2D(2.0, 1.0) + }); + + var assessmentSection = new AssessmentSectionStub + { + ReferenceLine = referenceLine + }; + + using (FailureMechanismWithDetailedAssessmentView, FailureMechanismSectionResult> view = + CreateView(new TestFailureMechanism(), assessmentSection)) + { + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; + + var mocks = new MockRepository(); + IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection); + observers[referenceLineIndex].Expect(obs => obs.UpdateObserver()); + mocks.ReplayAll(); + + MapData referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex); + + // Precondition + MapDataTestHelper.AssertReferenceLineMetaData(assessmentSection.ReferenceLine, assessmentSection, referenceLineMapData); + + // Call + assessmentSection.Name = "New name"; + assessmentSection.NotifyObservers(); + + // Assert + MapDataTestHelper.AssertReferenceLineMetaData(assessmentSection.ReferenceLine, assessmentSection, referenceLineMapData); + mocks.VerifyAll(); + } + } + + [Test] public void UpdateObserver_ReferenceLineUpdated_MapDataUpdated() { // Setup @@ -447,12 +488,12 @@ MapDataTestHelper.AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData); // Call - assessmentSection.ReferenceLine.SetGeometry(new List + referenceLine.SetGeometry(new List { new Point2D(2.0, 5.0), new Point2D(4.0, 3.0) }); - assessmentSection.NotifyObservers(); + referenceLine.NotifyObservers(); // Assert MapDataTestHelper.AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithoutDetailedAssessmentViewTest.cs =================================================================== diff -u -r45668cee9f8146a743e4673a32bc4c885be8cace -r3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithoutDetailedAssessmentViewTest.cs (.../FailureMechanismWithoutDetailedAssessmentViewTest.cs) (revision 45668cee9f8146a743e4673a32bc4c885be8cace) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithoutDetailedAssessmentViewTest.cs (.../FailureMechanismWithoutDetailedAssessmentViewTest.cs) (revision 3b1bfb86e0bdf64c0e04b1c9397f6eb77834b3f6) @@ -379,6 +379,47 @@ } [Test] + public void UpdateObserver_AssessmentSectionUpdated_MapDataUpdated() + { + // Setup + var referenceLine = new ReferenceLine(); + referenceLine.SetGeometry(new List + { + new Point2D(1.0, 2.0), + new Point2D(2.0, 1.0) + }); + + var assessmentSection = new AssessmentSectionStub + { + ReferenceLine = referenceLine + }; + + using (FailureMechanismWithoutDetailedAssessmentView, FailureMechanismSectionResult> view = + CreateView(new TestFailureMechanism(), assessmentSection)) + { + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; + + var mocks = new MockRepository(); + IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection); + observers[referenceLineIndex].Expect(obs => obs.UpdateObserver()); + mocks.ReplayAll(); + + MapData referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex); + + // Precondition + MapDataTestHelper.AssertReferenceLineMetaData(assessmentSection.ReferenceLine, assessmentSection, referenceLineMapData); + + // Call + assessmentSection.Name = "New name"; + assessmentSection.NotifyObservers(); + + // Assert + MapDataTestHelper.AssertReferenceLineMetaData(assessmentSection.ReferenceLine, assessmentSection, referenceLineMapData); + mocks.VerifyAll(); + } + } + + [Test] public void UpdateObserver_ReferenceLineUpdated_MapDataUpdated() { // Setup @@ -410,12 +451,12 @@ MapDataTestHelper.AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData); // Call - assessmentSection.ReferenceLine.SetGeometry(new List + referenceLine.SetGeometry(new List { new Point2D(2.0, 5.0), new Point2D(4.0, 3.0) }); - assessmentSection.NotifyObservers(); + referenceLine.NotifyObservers(); // Assert MapDataTestHelper.AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);