Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismView.cs =================================================================== diff -u -r959e36fe7429c4b54ccd4b197fce3fa2b89bda88 -r17c7880d8f0ea83da6061dad54977cb04ebf5eac --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision 959e36fe7429c4b54ccd4b197fce3fa2b89bda88) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismView.cs (.../PipingFailureMechanismView.cs) (revision 17c7880d8f0ea83da6061dad54977cb04ebf5eac) @@ -188,10 +188,7 @@ MapDataCollection.Add(semiProbabilisticCalculationsMapData); } - /// - /// Creates the observers. - /// - protected virtual void CreateObservers() + private void CreateObservers() { failureMechanismObserver = new Observer(UpdateFailureMechanismMapData) { @@ -246,10 +243,7 @@ }; } - /// - /// Sets all map data features. - /// - protected virtual void SetAllMapDataFeatures() + private void SetAllMapDataFeatures() { SetCalculationsMapData(semiProbabilisticCalculationsMapData); SetCalculationsMapData(probabilisticCalculationsMapData); @@ -262,10 +256,7 @@ #region Calculations MapData - /// - /// Updates the semi probabilistic calculations map data. - /// - protected virtual void UpdateSemiProbabilisticCalculationsMapData() + private void UpdateSemiProbabilisticCalculationsMapData() { SetCalculationsMapData(semiProbabilisticCalculationsMapData); semiProbabilisticCalculationsMapData.NotifyObservers(); @@ -305,10 +296,7 @@ #region FailureMechanism MapData - /// - /// Updates the failure mechanism related map data. - /// - protected virtual void UpdateFailureMechanismMapData() + private void UpdateFailureMechanismMapData() { SetSectionsMapData(); sectionsMapData.NotifyObservers(); Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailurePathView.cs =================================================================== diff -u -rdfd2e82406d3cafb83004a065b3ea1f943ced729 -r17c7880d8f0ea83da6061dad54977cb04ebf5eac --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailurePathView.cs (.../PipingFailurePathView.cs) (revision dfd2e82406d3cafb83004a065b3ea1f943ced729) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailurePathView.cs (.../PipingFailurePathView.cs) (revision 17c7880d8f0ea83da6061dad54977cb04ebf5eac) @@ -20,12 +20,10 @@ // All rights reserved. using System; -using Core.Common.Base; -using Core.Components.Gis.Data; using Riskeer.Common.Data.AssessmentSection; -using Riskeer.Common.Forms.Factories; +using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Forms.MapLayers; using Riskeer.Piping.Data; -using Riskeer.Piping.Forms.Factories; using PipingDataResources = Riskeer.Piping.Data.Properties.Resources; namespace Riskeer.Piping.Forms.Views @@ -35,24 +33,20 @@ /// public class PipingFailurePathView : PipingFailureMechanismView { - private MapLineData simpleAssemblyMapData; - private MapLineData detailedAssemblyMapData; - private MapLineData tailorMadeAssemblyMapData; - private MapLineData combinedAssemblyMapData; + private CalculatableFailureMechanismSectionResultsMapLayer mapLayer; - private RecursiveObserver, PipingFailureMechanismSectionResultOld> sectionResultObserver; - /// /// Creates a new instance of . /// /// The failure mechanism to show the data for. /// The assessment section to show the data for. /// Thrown when any parameter is null. - public PipingFailurePathView(PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) : base(failureMechanism, assessmentSection) {} + public PipingFailurePathView(PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + : base(failureMechanism, assessmentSection) {} protected override void Dispose(bool disposing) { - sectionResultObserver.Dispose(); + mapLayer.Dispose(); base.Dispose(disposing); } @@ -61,69 +55,9 @@ { base.CreateMapData(); - MapDataCollection assemblyMapDataCollection = AssemblyMapDataFactory.CreateAssemblyMapDataCollection(); - tailorMadeAssemblyMapData = AssemblyMapDataFactory.CreateTailorMadeAssemblyMapData(); - detailedAssemblyMapData = AssemblyMapDataFactory.CreateDetailedAssemblyMapData(); - simpleAssemblyMapData = AssemblyMapDataFactory.CreateSimpleAssemblyMapData(); - combinedAssemblyMapData = AssemblyMapDataFactory.CreateCombinedAssemblyMapData(); - - assemblyMapDataCollection.Add(tailorMadeAssemblyMapData); - assemblyMapDataCollection.Add(detailedAssemblyMapData); - assemblyMapDataCollection.Add(simpleAssemblyMapData); - assemblyMapDataCollection.Add(combinedAssemblyMapData); - MapDataCollection.Insert(4, assemblyMapDataCollection); + mapLayer = new CalculatableFailureMechanismSectionResultsMapLayer( + FailureMechanism, sr => PipingFailureMechanismAssemblyFactory.AssembleSection(sr, FailureMechanism, AssessmentSection)); + MapDataCollection.Insert(4, mapLayer.MapData); } - - protected override void CreateObservers() - { - base.CreateObservers(); - - sectionResultObserver = new RecursiveObserver, PipingFailureMechanismSectionResultOld>(UpdateAssemblyMapData, sr => sr) - { - Observable = FailureMechanism.SectionResultsOld - }; - } - - protected override void SetAllMapDataFeatures() - { - base.SetAllMapDataFeatures(); - - SetAssemblyMapData(); - } - - protected override void UpdateSemiProbabilisticCalculationsMapData() - { - base.UpdateSemiProbabilisticCalculationsMapData(); - - UpdateAssemblyMapData(); - } - - protected override void UpdateFailureMechanismMapData() - { - base.UpdateFailureMechanismMapData(); - - UpdateAssemblyMapData(); - } - - #region Assembly MapData - - private void UpdateAssemblyMapData() - { - SetAssemblyMapData(); - simpleAssemblyMapData.NotifyObservers(); - detailedAssemblyMapData.NotifyObservers(); - tailorMadeAssemblyMapData.NotifyObservers(); - combinedAssemblyMapData.NotifyObservers(); - } - - private void SetAssemblyMapData() - { - simpleAssemblyMapData.Features = PipingAssemblyMapDataFeaturesFactory.CreateSimpleAssemblyFeatures(FailureMechanism); - detailedAssemblyMapData.Features = PipingAssemblyMapDataFeaturesFactory.CreateDetailedAssemblyFeatures(FailureMechanism, AssessmentSection); - tailorMadeAssemblyMapData.Features = PipingAssemblyMapDataFeaturesFactory.CreateTailorMadeAssemblyFeatures(FailureMechanism, AssessmentSection); - combinedAssemblyMapData.Features = PipingAssemblyMapDataFeaturesFactory.CreateCombinedAssemblyFeatures(FailureMechanism, AssessmentSection); - } - - #endregion } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailurePathViewTest.cs =================================================================== diff -u -r3a4cc52eb9f7524ca64d6c2ab3a90230db2149c7 -r17c7880d8f0ea83da6061dad54977cb04ebf5eac --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailurePathViewTest.cs (.../PipingFailurePathViewTest.cs) (revision 3a4cc52eb9f7524ca64d6c2ab3a90230db2149c7) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailurePathViewTest.cs (.../PipingFailurePathViewTest.cs) (revision 17c7880d8f0ea83da6061dad54977cb04ebf5eac) @@ -24,15 +24,13 @@ using System.Linq; using System.Threading; using System.Windows.Forms; -using Core.Common.Base; using Core.Common.Base.Geometry; using Core.Common.TestUtil; using Core.Components.Gis.Data; using Core.Components.Gis.Features; using Core.Components.Gis.Forms; using Core.Components.Gis.Geometries; using NUnit.Framework; -using Rhino.Mocks; using Riskeer.AssemblyTool.Data; using Riskeer.AssemblyTool.KernelWrapper.Calculators; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; @@ -71,16 +69,6 @@ private const int sectionsStartPointIndex = 1; private const int sectionsEndPointIndex = 2; - private const int tailorMadeAssemblyIndex = 0; - private const int detailedAssemblyIndex = 1; - private const int simpleAssemblyIndex = 2; - private const int combinedAssemblyIndex = 3; - - private const int simpleAssemblyObserverIndex = 0; - private const int detailedAssemblyObserverIndex = 1; - private const int tailorMadeAssemblyObserverIndex = 2; - private const int combinedAssemblyObserverIndex = 3; - private Form testForm; [SetUp] @@ -209,21 +197,15 @@ hydraulicBoundaryLocation2 }); - var expectedSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var expectedDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var expectedTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var expectedCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - - using (new AssemblyToolCalculatorFactoryConfigOld()) + using (new AssemblyToolCalculatorFactoryConfig()) { - var calculatorFactory = (TestAssemblyToolCalculatorFactoryOld) AssemblyToolCalculatorFactoryOld.Instance; - FailureMechanismSectionAssemblyCalculatorOldStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; + var failureMechanismSectionAssemblyResult = new FailureMechanismSectionAssemblyResult( + random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextEnumValue()); + calculator.FailureMechanismSectionAssemblyResultOutput = failureMechanismSectionAssemblyResult; - calculator.SimpleAssessmentAssemblyOutput = expectedSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = expectedDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = expectedTailorMadeAssembly; - calculator.CombinedAssemblyOutput = expectedCombinedAssembly; - // Call PipingFailurePathView view = CreateView(failureMechanism, assessmentSection); @@ -248,457 +230,19 @@ AssertProbabilisticCalculationsMapData(failureMechanism.Calculations.OfType(), mapDataList[probabilisticCalculationsIndex]); AssertSemiProbabilisticCalculationsMapData(failureMechanism.Calculations.OfType(), mapDataList[semiProbabilisticCalculationsIndex]); - MapDataTestHelper.AssertAssemblyMapDataCollection(expectedSimpleAssembly, - expectedDetailedAssembly, - expectedTailorMadeAssembly, - expectedCombinedAssembly, - (MapDataCollection) mapDataList[assemblyResultsIndex], - failureMechanism); + MapDataTestHelper.AssertAssemblyMapData(failureMechanism, failureMechanismSectionAssemblyResult, mapDataList[assemblyResultsIndex]); } } [Test] [Apartment(ApartmentState.STA)] - public void GivenViewWithFailureMechanismSectionsData_WhenFailureMechanismSectionsUpdatedAndNotified_ThenMapDataUpdated() - { - // Given - var failureMechanism = new PipingFailureMechanism(); - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) view.Controls[0]).MapControl; - - IEnumerable sectionsCollection = ((MapDataCollection) map.Data.Collection.ElementAt(sectionsCollectionIndex)).Collection; - var sectionMapData = (MapLineData) sectionsCollection.ElementAt(sectionsIndex); - var sectionStartsMapData = (MapPointData) sectionsCollection.ElementAt(sectionsStartPointIndex); - var sectionsEndsMapData = (MapPointData) sectionsCollection.ElementAt(sectionsEndPointIndex); - - 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(); - - // When - FailureMechanismTestHelper.SetSections(failureMechanism, new[] - { - new FailureMechanismSection(string.Empty, new[] - { - new Point2D(1, 2), - new Point2D(1, 2) - }) - }); - failureMechanism.NotifyObservers(); - - // Then - MapDataTestHelper.AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionMapData); - MapDataTestHelper.AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionStartsMapData); - MapDataTestHelper.AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsEndsMapData); - mocks.VerifyAll(); - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenViewWithCalculationGroupData_WhenCalculationGroupUpdatedAndNotified_ThenMapDataUpdated() - { - // Given - var failureMechanism = new PipingFailureMechanism(); - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) view.Controls[0]).MapControl; - - var surfaceLineA = new PipingSurfaceLine(string.Empty); - surfaceLineA.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.0), - new Point3D(3.0, 0.0, 1.7) - }); - - var surfaceLineB = new PipingSurfaceLine(string.Empty); - surfaceLineB.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.5), - new Point3D(3.0, 0.0, 1.8) - }); - surfaceLineA.ReferenceLineIntersectionWorldPoint = new Point2D(1.3, 1.3); - surfaceLineB.ReferenceLineIntersectionWorldPoint = new Point2D(1.5, 1.5); - - var calculationA = - SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( - new TestHydraulicBoundaryLocation()); - var calculationB = - ProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( - new TestHydraulicBoundaryLocation()); - - calculationA.InputParameters.SurfaceLine = surfaceLineA; - calculationB.InputParameters.SurfaceLine = surfaceLineB; - - failureMechanism.CalculationsGroup.Children.Add(calculationA); - failureMechanism.CalculationsGroup.Children.Add(calculationB); - - var probabilisticCalculationMapData = (MapLineData) map.Data.Collection.ElementAt(probabilisticCalculationsIndex); - var semiProbabilisticCalculationMapData = (MapLineData) map.Data.Collection.ElementAt(semiProbabilisticCalculationsIndex); - - 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(); - - // When - failureMechanism.CalculationsGroup.Children.Add(calculationB); - failureMechanism.CalculationsGroup.NotifyObservers(); - - // Then - AssertSemiProbabilisticCalculationsMapData(failureMechanism.Calculations.OfType(), semiProbabilisticCalculationMapData); - AssertProbabilisticCalculationsMapData(failureMechanism.Calculations.OfType(), probabilisticCalculationMapData); - mocks.VerifyAll(); - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenViewWithSemiProbabilisticCalculationInputData_WhenCalculationInputUpdatedAndNotified_ThenMapDataUpdated() - { - // Given - var surfaceLineA = new PipingSurfaceLine(string.Empty); - surfaceLineA.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.0), - new Point3D(3.0, 0.0, 1.7) - }); - - var surfaceLineB = new PipingSurfaceLine(string.Empty); - surfaceLineB.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.5), - new Point3D(3.0, 0.0, 1.8) - }); - surfaceLineA.ReferenceLineIntersectionWorldPoint = new Point2D(1.3, 1.3); - surfaceLineB.ReferenceLineIntersectionWorldPoint = new Point2D(1.5, 1.5); - - var calculationScenario = - SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( - new TestHydraulicBoundaryLocation()); - - calculationScenario.InputParameters.SurfaceLine = surfaceLineA; - - var failureMechanism = new PipingFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculationScenario); - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) view.Controls[0]).MapControl; - - var calculationMapData = (MapLineData) map.Data.Collection.ElementAt(semiProbabilisticCalculationsIndex); - - 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(); - - // When - calculationScenario.InputParameters.SurfaceLine = surfaceLineB; - calculationScenario.InputParameters.NotifyObservers(); - - // Then - AssertSemiProbabilisticCalculationsMapData(failureMechanism.Calculations.Cast(), calculationMapData); - mocks.VerifyAll(); - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenViewWithSemiProbabilisticCalculationData_WhenCalculationUpdatedAndNotified_ThenMapDataUpdated() - { - // Given - var surfaceLineA = new PipingSurfaceLine(string.Empty); - surfaceLineA.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.0), - new Point3D(3.0, 0.0, 1.7) - }); - - var surfaceLineB = new PipingSurfaceLine(string.Empty); - surfaceLineB.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.5), - new Point3D(3.0, 0.0, 1.8) - }); - surfaceLineA.ReferenceLineIntersectionWorldPoint = new Point2D(1.3, 1.3); - surfaceLineB.ReferenceLineIntersectionWorldPoint = new Point2D(1.5, 1.5); - - var calculationScenario = - SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( - new TestHydraulicBoundaryLocation()); - - calculationScenario.InputParameters.SurfaceLine = surfaceLineA; - - var failureMechanism = new PipingFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculationScenario); - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) view.Controls[0]).MapControl; - - var calculationMapData = (MapLineData) map.Data.Collection.ElementAt(semiProbabilisticCalculationsIndex); - - 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(); - - // When - calculationScenario.Name = "new name"; - calculationScenario.NotifyObservers(); - - // Then - AssertSemiProbabilisticCalculationsMapData(failureMechanism.Calculations.Cast(), calculationMapData); - mocks.VerifyAll(); - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenViewWithAssemblyData_WhenFailureMechanismNotified_ThenMapDataUpdated() - { - // Given - var random = new Random(39); - var failureMechanism = new PipingFailureMechanism(); - FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10)); - - var originalSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - - using (new AssemblyToolCalculatorFactoryConfigOld()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactoryOld) AssemblyToolCalculatorFactoryOld.Instance; - FailureMechanismSectionAssemblyCalculatorOldStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - - calculator.SimpleAssessmentAssemblyOutput = originalSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = originalDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = originalTailorMadeAssembly; - calculator.CombinedAssemblyOutput = originalCombinedAssembly; - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) 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 - var assemblyMapData = (MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex); - MapDataTestHelper.AssertAssemblyMapDataCollection(originalSimpleAssembly, - originalDetailedAssembly, - originalTailorMadeAssembly, - originalCombinedAssembly, - assemblyMapData, - failureMechanism); - - // When - var updatedSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - calculator.SimpleAssessmentAssemblyOutput = updatedSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = updatedDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = updatedTailorMadeAssembly; - calculator.CombinedAssemblyOutput = updatedCombinedAssembly; - failureMechanism.NotifyObservers(); - - // Then - MapDataTestHelper.AssertAssemblyMapDataCollection(updatedSimpleAssembly, - updatedDetailedAssembly, - updatedTailorMadeAssembly, - updatedCombinedAssembly, - assemblyMapData, - failureMechanism); - mocks.VerifyAll(); - } - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenViewWithAssemblyData_WhenSemiProbabilisticCalculationNotified_ThenMapDataUpdated() - { - // Given - var random = new Random(39); - var surfaceLineA = new PipingSurfaceLine(string.Empty); - surfaceLineA.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.0), - new Point3D(3.0, 0.0, 1.7) - }); - - var surfaceLineB = new PipingSurfaceLine(string.Empty); - surfaceLineB.SetGeometry(new[] - { - new Point3D(0.0, 0.0, 1.5), - new Point3D(3.0, 0.0, 1.8) - }); - surfaceLineA.ReferenceLineIntersectionWorldPoint = new Point2D(1.3, 1.3); - surfaceLineB.ReferenceLineIntersectionWorldPoint = new Point2D(1.5, 1.5); - - var calculation = - SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( - new TestHydraulicBoundaryLocation()); - - calculation.InputParameters.SurfaceLine = surfaceLineA; - - var failureMechanism = new PipingFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculation); - FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10)); - - var originalSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - - using (new AssemblyToolCalculatorFactoryConfigOld()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactoryOld) AssemblyToolCalculatorFactoryOld.Instance; - FailureMechanismSectionAssemblyCalculatorOldStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - - calculator.SimpleAssessmentAssemblyOutput = originalSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = originalDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = originalTailorMadeAssembly; - calculator.CombinedAssemblyOutput = originalCombinedAssembly; - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) 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 - var assemblyMapData = (MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex); - MapDataTestHelper.AssertAssemblyMapDataCollection(originalSimpleAssembly, - originalDetailedAssembly, - originalTailorMadeAssembly, - originalCombinedAssembly, - assemblyMapData, - failureMechanism); - - // When - var updatedSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - calculator.SimpleAssessmentAssemblyOutput = updatedSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = updatedDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = updatedTailorMadeAssembly; - calculator.CombinedAssemblyOutput = updatedCombinedAssembly; - calculation.NotifyObservers(); - - // Then - MapDataTestHelper.AssertAssemblyMapDataCollection(updatedSimpleAssembly, - updatedDetailedAssembly, - updatedTailorMadeAssembly, - updatedCombinedAssembly, - assemblyMapData, - failureMechanism); - mocks.VerifyAll(); - } - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenViewWithAssemblyData_WhenFailureMechanismSectionResultNotified_ThenMapDataUpdated() - { - // Given - var random = new Random(39); - var failureMechanism = new PipingFailureMechanism(); - FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10)); - - var originalSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var originalCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - - using (new AssemblyToolCalculatorFactoryConfigOld()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactoryOld) AssemblyToolCalculatorFactoryOld.Instance; - FailureMechanismSectionAssemblyCalculatorOldStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - - calculator.SimpleAssessmentAssemblyOutput = originalSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = originalDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = originalTailorMadeAssembly; - calculator.CombinedAssemblyOutput = originalCombinedAssembly; - - PipingFailurePathView view = CreateView(failureMechanism, new AssessmentSectionStub()); - - IMapControl map = ((RiskeerMapControl) 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 - var assemblyMapData = (MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex); - MapDataTestHelper.AssertAssemblyMapDataCollection(originalSimpleAssembly, - originalDetailedAssembly, - originalTailorMadeAssembly, - originalCombinedAssembly, - assemblyMapData, - failureMechanism); - - // When - var updatedSimpleAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedDetailedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedTailorMadeAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - var updatedCombinedAssembly = new FailureMechanismSectionAssemblyOld(random.NextDouble(), random.NextEnumValue()); - calculator.SimpleAssessmentAssemblyOutput = updatedSimpleAssembly; - calculator.DetailedAssessmentAssemblyOutput = updatedDetailedAssembly; - calculator.TailorMadeAssessmentAssemblyOutput = updatedTailorMadeAssembly; - calculator.CombinedAssemblyOutput = updatedCombinedAssembly; - failureMechanism.SectionResultsOld.First().NotifyObservers(); - - // Then - MapDataTestHelper.AssertAssemblyMapDataCollection(updatedSimpleAssembly, - updatedDetailedAssembly, - updatedTailorMadeAssembly, - updatedCombinedAssembly, - assemblyMapData, - failureMechanism); - mocks.VerifyAll(); - } - } - - [Test] - [Apartment(ApartmentState.STA)] public void UpdateObserver_DataUpdated_MapLayersSameOrder() { // Setup const int updatedReferenceLineLayerIndex = referenceLineIndex + 7; const int updatedSurfaceLineLayerIndex = surfaceLinesIndex - 1; const int updatedSectionCollectionIndex = sectionsCollectionIndex - 1; - const int updatedAssemblyResultsCollectionIndex = assemblyResultsIndex - 1; + const int updatedAssemblyResultsIndex = assemblyResultsIndex - 1; const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryLocationsIndex - 1; const int updatedStochasticSoilModelsLayerIndex = stochasticSoilModelsIndex - 1; const int updatedProbabilisticCalculationsIndex = probabilisticCalculationsIndex - 1; @@ -728,8 +272,8 @@ var sectionsData = (MapDataCollection) mapDataCollection.ElementAt(updatedSectionCollectionIndex); Assert.AreEqual("Vakindeling", sectionsData.Name); - var assemblyResultsData = (MapDataCollection) mapDataCollection.ElementAt(updatedAssemblyResultsCollectionIndex); - Assert.AreEqual("Toetsoordeel", assemblyResultsData.Name); + var assemblyResultsData = (MapLineData) mapDataCollection.ElementAt(updatedAssemblyResultsIndex); + Assert.AreEqual("Duidingsklasse per vak", assemblyResultsData.Name); var hydraulicLocationsData = (MapPointData) mapDataCollection.ElementAt(updatedHydraulicLocationsLayerIndex); Assert.AreEqual("Hydraulische belastingen", hydraulicLocationsData.Name); @@ -765,8 +309,8 @@ var actualSectionsData = (MapDataCollection) mapDataCollection.ElementAt(updatedSectionCollectionIndex); Assert.AreEqual("Vakindeling", actualSectionsData.Name); - var actualAssemblyResultsData = (MapDataCollection) mapDataCollection.ElementAt(updatedAssemblyResultsCollectionIndex); - Assert.AreEqual("Toetsoordeel", actualAssemblyResultsData.Name); + var actualAssemblyResultsData = (MapLineData) mapDataCollection.ElementAt(updatedAssemblyResultsIndex); + Assert.AreEqual("Duidingsklasse per vak", actualAssemblyResultsData.Name); var actualHydraulicLocationsData = (MapPointData) mapDataCollection.ElementAt(updatedHydraulicLocationsLayerIndex); Assert.AreEqual("Hydraulische belastingen", actualHydraulicLocationsData.Name); @@ -874,20 +418,23 @@ var referenceLineMapData = (MapLineData) mapDataList[referenceLineIndex]; var stochasticSoilModelsMapData = (MapLineData) mapDataList[stochasticSoilModelsIndex]; var surfaceLinesMapData = (MapLineData) mapDataList[surfaceLinesIndex]; + var assemblyGroupsMapData = (MapLineData) mapDataList[assemblyResultsIndex]; var hydraulicBoundaryLocationsMapData = (MapPointData) mapDataList[hydraulicBoundaryLocationsIndex]; var probabilisticCalculationsMapData = (MapLineData) mapDataList[probabilisticCalculationsIndex]; var semiProbabilisticCalculationsMapData = (MapLineData) mapDataList[semiProbabilisticCalculationsIndex]; CollectionAssert.IsEmpty(referenceLineMapData.Features); CollectionAssert.IsEmpty(stochasticSoilModelsMapData.Features); CollectionAssert.IsEmpty(surfaceLinesMapData.Features); + CollectionAssert.IsEmpty(assemblyGroupsMapData.Features); CollectionAssert.IsEmpty(hydraulicBoundaryLocationsMapData.Features); CollectionAssert.IsEmpty(probabilisticCalculationsMapData.Features); CollectionAssert.IsEmpty(semiProbabilisticCalculationsMapData.Features); Assert.AreEqual("Referentielijn", referenceLineMapData.Name); Assert.AreEqual("Stochastische ondergrondmodellen", stochasticSoilModelsMapData.Name); Assert.AreEqual("Profielschematisaties", surfaceLinesMapData.Name); + Assert.AreEqual("Duidingsklasse per vak", assemblyGroupsMapData.Name); Assert.AreEqual("Hydraulische belastingen", hydraulicBoundaryLocationsMapData.Name); Assert.AreEqual("Probabilistische berekeningen", probabilisticCalculationsMapData.Name); Assert.AreEqual("Semi-probabilistische berekeningen", semiProbabilisticCalculationsMapData.Name); @@ -908,59 +455,6 @@ Assert.AreEqual("Vakindeling (eindpunten)", sectionsEndPointMapData.Name); Assert.AreEqual("Vakindeling (startpunten)", sectionsStartPointMapData.Name); Assert.AreEqual("Vakindeling", sectionsMapData.Name); - - var assemblyResultsMapDataCollection = (MapDataCollection) mapDataList[assemblyResultsIndex]; - Assert.AreEqual("Toetsoordeel", assemblyResultsMapDataCollection.Name); - List assemblyMapDataList = assemblyResultsMapDataCollection.Collection.ToList(); - Assert.AreEqual(4, assemblyMapDataList.Count); - - var combinedAssemblyMapData = (MapLineData) assemblyMapDataList[combinedAssemblyIndex]; - var simpleAssemblyMapData = (MapLineData) assemblyMapDataList[simpleAssemblyIndex]; - var detailedAssemblyMapData = (MapLineData) assemblyMapDataList[detailedAssemblyIndex]; - var tailorMadeAssemblyMapData = (MapLineData) assemblyMapDataList[tailorMadeAssemblyIndex]; - - CollectionAssert.IsEmpty(combinedAssemblyMapData.Features); - CollectionAssert.IsEmpty(simpleAssemblyMapData.Features); - CollectionAssert.IsEmpty(detailedAssemblyMapData.Features); - CollectionAssert.IsEmpty(tailorMadeAssemblyMapData.Features); - - Assert.AreEqual("Gecombineerd toetsoordeel", combinedAssemblyMapData.Name); - Assert.AreEqual("Toetsoordeel eenvoudige toets", simpleAssemblyMapData.Name); - Assert.AreEqual("Toetsoordeel gedetailleerde toets", detailedAssemblyMapData.Name); - Assert.AreEqual("Toetsoordeel toets op maat", tailorMadeAssemblyMapData.Name); } - - /// - /// Attaches mocked observers to all map data components. - /// - /// The . - /// The map data collection containing the - /// elements. - /// An array of mocked observers attached to the data in . - private static IObserver[] AttachMapDataObservers(MockRepository mocks, IEnumerable mapData) - { - MapData[] mapDataArray = mapData.ToArray(); - - MapData[] assemblyResultsCollection = ((MapDataCollection) mapDataArray[assemblyResultsIndex]).Collection.ToArray(); - var simpleAssemblyMapDataObserver = mocks.StrictMock(); - assemblyResultsCollection[simpleAssemblyIndex].Attach(simpleAssemblyMapDataObserver); - - var detailedAssemblyMapDataObserver = mocks.StrictMock(); - assemblyResultsCollection[detailedAssemblyIndex].Attach(detailedAssemblyMapDataObserver); - - var tailorMadeAssemblyMapDataObserver = mocks.StrictMock(); - assemblyResultsCollection[tailorMadeAssemblyIndex].Attach(tailorMadeAssemblyMapDataObserver); - - var combinedAssemblyMapDataObserver = mocks.StrictMock(); - assemblyResultsCollection[combinedAssemblyIndex].Attach(combinedAssemblyMapDataObserver); - - return new[] - { - simpleAssemblyMapDataObserver, - detailedAssemblyMapDataObserver, - tailorMadeAssemblyMapDataObserver, - combinedAssemblyMapDataObserver - }; - } } } \ No newline at end of file