Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithDetailedAssessmentViewTest.cs =================================================================== diff -u -r01c0caf1e4c74a882004bae70ef61bcc317cdce0 -r48faf08e17ce1af5b7d6e4e33ebef86353405664 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithDetailedAssessmentViewTest.cs (.../FailureMechanismWithDetailedAssessmentViewTest.cs) (revision 01c0caf1e4c74a882004bae70ef61bcc317cdce0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismWithDetailedAssessmentViewTest.cs (.../FailureMechanismWithDetailedAssessmentViewTest.cs) (revision 48faf08e17ce1af5b7d6e4e33ebef86353405664) @@ -571,6 +571,173 @@ } } + [Test] + public void GivenViewWithAssemblyFeatures_WhenFailureMechanismNotified_ThenMapDataUpdated() + { + // Given + var random = new Random(39); + var failureMechanism = new TestFailureMechanism(); + FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10)); + + var originalSimpleAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + var originalDetailedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + var originalTailorMadeAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + var originalCombinedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + + using (var view = new FailureMechanismWithDetailedAssessmentView( + failureMechanism, + new AssessmentSectionStub(), + () => originalSimpleAssemblyFeatures, + () => originalDetailedAssemblyFeatures, + () => originalTailorMadeAssemblyFeatures, + () => originalCombinedAssemblyFeatures)) + { + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; + + var mocks = new MockRepository(); + IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection); + observers[sectionsObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[sectionsStartPointObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[sectionsEndPointObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[simpleAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[detailedAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[tailorMadeAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[combinedAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + mocks.ReplayAll(); + + // Precondition + IEnumerable assemblyMapDataList = ((MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex)).Collection; + CollectionAssert.AreEqual(originalSimpleAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(simpleAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalDetailedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(detailedAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalTailorMadeAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(tailorMadeAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalCombinedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(combinedAssemblyIndex)).Features); + + // When + originalSimpleAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + originalDetailedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + originalTailorMadeAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + originalCombinedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + failureMechanism.NotifyObservers(); + + // Then + CollectionAssert.AreEqual(originalSimpleAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(simpleAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalDetailedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(detailedAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalTailorMadeAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(tailorMadeAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalCombinedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(combinedAssemblyIndex)).Features); + mocks.VerifyAll(); + } + } + + [Test] + public void GivenViewWithAssemblyFeatures_WhenFailureMechanismSectionResultNotified_ThenMapDataUpdated() + { + // Given + var random = new Random(39); + var failureMechanism = new TestFailureMechanism(); + FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10)); + + var originalSimpleAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + var originalDetailedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + var originalTailorMadeAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + var originalCombinedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()) + }; + + using (var view = new FailureMechanismWithDetailedAssessmentView( + failureMechanism, + new AssessmentSectionStub(), + () => originalSimpleAssemblyFeatures, + () => originalDetailedAssemblyFeatures, + () => originalTailorMadeAssemblyFeatures, + () => originalCombinedAssemblyFeatures)) + { + IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl; + + var mocks = new MockRepository(); + IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection); + observers[simpleAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[detailedAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[tailorMadeAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + observers[combinedAssemblyObserverIndex].Expect(obs => obs.UpdateObserver()); + mocks.ReplayAll(); + + // Precondition + IEnumerable assemblyMapDataList = ((MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex)).Collection; + CollectionAssert.AreEqual(originalSimpleAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(simpleAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalDetailedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(detailedAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalTailorMadeAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(tailorMadeAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalCombinedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(combinedAssemblyIndex)).Features); + + // When + originalSimpleAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + originalDetailedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + originalTailorMadeAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + originalCombinedAssemblyFeatures = new[] + { + new MapFeature(Enumerable.Empty()), + new MapFeature(Enumerable.Empty()) + }; + failureMechanism.SectionResults.First().NotifyObservers(); + + // Then + CollectionAssert.AreEqual(originalSimpleAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(simpleAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalDetailedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(detailedAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalTailorMadeAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(tailorMadeAssemblyIndex)).Features); + CollectionAssert.AreEqual(originalCombinedAssemblyFeatures, ((MapLineData) assemblyMapDataList.ElementAt(combinedAssemblyIndex)).Features); + mocks.VerifyAll(); + } + } + private static FailureMechanismWithDetailedAssessmentView, FailureMechanismSectionResult> CreateView( IHasSectionResults failureMechanism, IAssessmentSection assessmentSection)