Index: Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/MapDataTestHelper.cs
===================================================================
diff -u -rda009ab9b1ad1d0b62e0032a3686ad2193f76280 -r5215d7ff24e8918f4f8282576a8436b1d3b9523d
--- Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/MapDataTestHelper.cs (.../MapDataTestHelper.cs) (revision da009ab9b1ad1d0b62e0032a3686ad2193f76280)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/MapDataTestHelper.cs (.../MapDataTestHelper.cs) (revision 5215d7ff24e8918f4f8282576a8436b1d3b9523d)
@@ -314,6 +314,37 @@
AssertAssemblyMapData("Gecombineerd toetsoordeel", failureMechanism, expectedCombinedAssembly, assemblyMapDataCollection.ElementAt(3));
}
+ ///
+ /// Asserts whether the contains the data that is representative
+ /// for the and supplied .
+ ///
+ /// The expected simple assembly category.
+ /// The expected detailed assembly category.
+ /// The expected tailor made assembly category.
+ /// The expected combined assembly category.
+ /// The that needs to be asserted.
+ /// The the map data collection belongs to.
+ /// Thrown when:
+ ///
+ /// - there is an incorrect amount of items in ;
+ /// - one of the items in has incorrect properties.
+ ///
+ ///
+ public static void AssertAssemblyMapDataCollection(FailureMechanismSectionAssemblyCategoryGroup expectedSimpleAssemblyCategory,
+ FailureMechanismSectionAssemblyCategoryGroup expectedDetailedAssemblyCategory,
+ FailureMechanismSectionAssemblyCategoryGroup expectedTailorMadeAssemblyCategory,
+ FailureMechanismSectionAssemblyCategoryGroup expectedCombinedAssemblyCategory,
+ MapDataCollection assemblyMapData,
+ IFailureMechanism failureMechanism)
+ {
+ IEnumerable assemblyMapDataCollection = assemblyMapData.Collection;
+ Assert.AreEqual(4, assemblyMapDataCollection.Count());
+ AssertAssemblyMapData("Toetsoordeel toets op maat", failureMechanism, expectedTailorMadeAssemblyCategory, assemblyMapDataCollection.ElementAt(0));
+ AssertAssemblyMapData("Toetsoordeel gedetailleerde toets", failureMechanism, expectedDetailedAssemblyCategory, assemblyMapDataCollection.ElementAt(1));
+ AssertAssemblyMapData("Toetsoordeel eenvoudige toets", failureMechanism, expectedSimpleAssemblyCategory, assemblyMapDataCollection.ElementAt(2));
+ AssertAssemblyMapData("Gecombineerd toetsoordeel", failureMechanism, expectedCombinedAssemblyCategory, assemblyMapDataCollection.ElementAt(3));
+ }
+
private static void AssertAssemblyMapData(string expectedMapDataName,
IFailureMechanism failureMechanism,
FailureMechanismSectionAssembly expectedAssembly,
@@ -341,6 +372,31 @@
}
}
+ private static void AssertAssemblyMapData(string expectedMapDataName,
+ IFailureMechanism failureMechanism,
+ FailureMechanismSectionAssemblyCategoryGroup expectedCategory,
+ MapData mapData)
+ {
+ var assemblyMapLineData = (MapLineData) mapData;
+ Assert.AreEqual(expectedMapDataName, assemblyMapLineData.Name);
+
+ MapFeature[] features = assemblyMapLineData.Features.ToArray();
+ FailureMechanismSection[] sections = failureMechanism.Sections.ToArray();
+ Assert.AreEqual(sections.Length, features.Length);
+
+ for (var index = 0; index < sections.Length; index++)
+ {
+ MapFeature feature = features[index];
+
+ FailureMechanismSection failureMechanismSection = sections[index];
+ CollectionAssert.AreEqual(failureMechanismSection.Points, feature.MapGeometries.Single().PointCollections.Single());
+
+ Assert.AreEqual(new EnumDisplayWrapper(
+ DisplayFailureMechanismSectionAssemblyCategoryGroupConverter.Convert(expectedCategory)).DisplayName,
+ feature.MetaData["Categorie"]);
+ }
+ }
+
private static IEnumerable GetWorldPoints(ForeshoreProfile foreshoreProfile)
{
return AdvancedMath2D.FromXToXY(
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs
===================================================================
diff -u -r836441ac723bd5a092714b56b41dbaa4133446b4 -r5215d7ff24e8918f4f8282576a8436b1d3b9523d
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision 836441ac723bd5a092714b56b41dbaa4133446b4)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision 5215d7ff24e8918f4f8282576a8436b1d3b9523d)
@@ -965,8 +965,8 @@
// Setup
const int updatedReferenceLineLayerIndex = referenceLineIndex + 6;
const int updatedSectionCollectionIndex = sectionsCollectionIndex - 1;
- const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryLocationsIndex - 1;
const int updatedAssemblyResultsCollectionIndex = assemblyResultsIndex - 1;
+ const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryLocationsIndex - 1;
const int updatedDikeProfilesLayerIndex = dikeProfilesIndex - 1;
const int updatedForeshoreProfilesLayerIndex = foreshoreProfilesIndex - 1;
const int updatedCalculationsIndex = calculationsIndex - 1;
Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverFailureMechanismView.cs
===================================================================
diff -u -r15ca90de3817685565658c19a1a107f861812c69 -r5215d7ff24e8918f4f8282576a8436b1d3b9523d
--- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverFailureMechanismView.cs (.../StabilityStoneCoverFailureMechanismView.cs) (revision 15ca90de3817685565658c19a1a107f861812c69)
+++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverFailureMechanismView.cs (.../StabilityStoneCoverFailureMechanismView.cs) (revision 5215d7ff24e8918f4f8282576a8436b1d3b9523d)
@@ -45,15 +45,21 @@
///
public partial class StabilityStoneCoverFailureMechanismView : UserControl, IMapView
{
- private readonly MapLineData referenceLineMapData;
- private readonly MapPointData hydraulicBoundaryLocationsMapData;
- private readonly MapLineData foreshoreProfilesMapData;
- private readonly MapLineData calculationsMapData;
+ private MapDataCollection mapDataCollection;
+ private MapLineData referenceLineMapData;
+ private MapPointData hydraulicBoundaryLocationsMapData;
+ private MapLineData foreshoreProfilesMapData;
+ private MapLineData calculationsMapData;
- private readonly MapLineData sectionsMapData;
- private readonly MapPointData sectionsStartPointMapData;
- private readonly MapPointData sectionsEndPointMapData;
+ private MapLineData sectionsMapData;
+ private MapPointData sectionsStartPointMapData;
+ private MapPointData sectionsEndPointMapData;
+ private MapLineData simpleAssemblyMapData;
+ private MapLineData detailedAssemblyMapData;
+ private MapLineData tailorMadeAssemblyMapData;
+ private MapLineData combinedAssemblyMapData;
+
private Observer failureMechanismObserver;
private Observer assessmentSectionObserver;
private Observer hydraulicBoundaryLocationsObserver;
@@ -71,6 +77,7 @@
private RecursiveObserver calculationGroupObserver;
private RecursiveObserver calculationObserver;
private RecursiveObserver foreshoreProfileObserver;
+ private RecursiveObserver, StabilityStoneCoverFailureMechanismSectionResult> sectionResultObserver;
///
/// Creates a new instance of .
@@ -98,28 +105,7 @@
CreateObservers();
- var mapDataCollection = new MapDataCollection(StabilityStoneCoverDataResources.StabilityStoneCoverFailureMechanism_DisplayName);
- referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData();
- hydraulicBoundaryLocationsMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryLocationsMapData();
- foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData();
- calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData();
-
- MapDataCollection sectionsMapDataCollection = RingtoetsMapDataFactory.CreateSectionsMapDataCollection();
- sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData();
- sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData();
- sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData();
-
- mapDataCollection.Add(referenceLineMapData);
-
- sectionsMapDataCollection.Add(sectionsMapData);
- sectionsMapDataCollection.Add(sectionsStartPointMapData);
- sectionsMapDataCollection.Add(sectionsEndPointMapData);
- mapDataCollection.Add(sectionsMapDataCollection);
-
- mapDataCollection.Add(hydraulicBoundaryLocationsMapData);
- mapDataCollection.Add(foreshoreProfilesMapData);
- mapDataCollection.Add(calculationsMapData);
-
+ CreateMapData();
SetMapDataFeatures();
ringtoetsMapControl.SetAllData(mapDataCollection, AssessmentSection.BackgroundData);
}
@@ -162,6 +148,7 @@
calculationInputObserver.Dispose();
calculationGroupObserver.Dispose();
calculationObserver.Dispose();
+ sectionResultObserver.Dispose();
if (disposing)
{
@@ -171,13 +158,50 @@
base.Dispose(disposing);
}
+ private void CreateMapData()
+ {
+ mapDataCollection = new MapDataCollection(StabilityStoneCoverDataResources.StabilityStoneCoverFailureMechanism_DisplayName);
+ referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData();
+ hydraulicBoundaryLocationsMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryLocationsMapData();
+ foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData();
+ calculationsMapData = RingtoetsMapDataFactory.CreateCalculationsMapData();
+
+ MapDataCollection sectionsMapDataCollection = RingtoetsMapDataFactory.CreateSectionsMapDataCollection();
+ sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData();
+ sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData();
+ sectionsEndPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsEndPointMapData();
+
+ MapDataCollection assemblyMapDataCollection = AssemblyMapDataFactory.CreateAssemblyMapDataCollection();
+ tailorMadeAssemblyMapData = AssemblyMapDataFactory.CreateTailorMadeAssemblyMapData();
+ detailedAssemblyMapData = AssemblyMapDataFactory.CreateDetailedAssemblyMapData();
+ simpleAssemblyMapData = AssemblyMapDataFactory.CreateSimpleAssemblyMapData();
+ combinedAssemblyMapData = AssemblyMapDataFactory.CreateCombinedAssemblyMapData();
+
+ mapDataCollection.Add(referenceLineMapData);
+
+ sectionsMapDataCollection.Add(sectionsMapData);
+ sectionsMapDataCollection.Add(sectionsStartPointMapData);
+ sectionsMapDataCollection.Add(sectionsEndPointMapData);
+ mapDataCollection.Add(sectionsMapDataCollection);
+
+ assemblyMapDataCollection.Add(tailorMadeAssemblyMapData);
+ assemblyMapDataCollection.Add(detailedAssemblyMapData);
+ assemblyMapDataCollection.Add(simpleAssemblyMapData);
+ assemblyMapDataCollection.Add(combinedAssemblyMapData);
+ mapDataCollection.Add(assemblyMapDataCollection);
+
+ mapDataCollection.Add(hydraulicBoundaryLocationsMapData);
+ mapDataCollection.Add(foreshoreProfilesMapData);
+ mapDataCollection.Add(calculationsMapData);
+ }
+
private void CreateObservers()
{
- failureMechanismObserver = new Observer(UpdateSectionsMapData)
+ failureMechanismObserver = new Observer(UpdateFailureMechanismData)
{
Observable = FailureMechanism
};
- assessmentSectionObserver = new Observer(UpdateReferenceLineMapData)
+ assessmentSectionObserver = new Observer(UpdateAssessmentSectionData)
{
Observable = AssessmentSection
};
@@ -225,6 +249,12 @@
{
Observable = FailureMechanism.ForeshoreProfiles
};
+
+ sectionResultObserver = new RecursiveObserver,
+ StabilityStoneCoverFailureMechanismSectionResult>(UpdateAssemblyMapData, sr => sr)
+ {
+ Observable = FailureMechanism.SectionResults
+ };
}
private void SetMapDataFeatures()
@@ -234,14 +264,38 @@
SetHydraulicBoundaryLocationsMapData();
SetForeshoreProfilesMapData();
SetCalculationsMapData();
+ SetAssemblyMapData();
}
+ #region Assembly MapData
+
+ private void UpdateAssemblyMapData()
+ {
+ SetAssemblyMapData();
+ simpleAssemblyMapData.NotifyObservers();
+ detailedAssemblyMapData.NotifyObservers();
+ tailorMadeAssemblyMapData.NotifyObservers();
+ combinedAssemblyMapData.NotifyObservers();
+ }
+
+ private void SetAssemblyMapData()
+ {
+ simpleAssemblyMapData.Features = StabilityStoneCoverAssemblyMapDataFeaturesFactory.CreateSimpleAssemblyFeatures(FailureMechanism);
+ detailedAssemblyMapData.Features = StabilityStoneCoverAssemblyMapDataFeaturesFactory.CreateDetailedAssemblyFeatures(FailureMechanism);
+ tailorMadeAssemblyMapData.Features = StabilityStoneCoverAssemblyMapDataFeaturesFactory.CreateTailorMadeAssemblyFeatures(FailureMechanism);
+ combinedAssemblyMapData.Features = StabilityStoneCoverAssemblyMapDataFeaturesFactory.CreateCombinedAssemblyFeatures(FailureMechanism);
+ }
+
+ #endregion
+
#region Calculations MapData
private void UpdateCalculationsMapData()
{
SetCalculationsMapData();
calculationsMapData.NotifyObservers();
+
+ UpdateAssemblyMapData();
}
private void SetCalculationsMapData()
@@ -268,9 +322,9 @@
#endregion
- #region ReferenceLine MapData
+ #region AssessmentSection MapData
- private void UpdateReferenceLineMapData()
+ private void UpdateAssessmentSectionData()
{
SetReferenceLineMapData();
referenceLineMapData.NotifyObservers();
@@ -284,14 +338,16 @@
#endregion
- #region Sections MapData
+ #region FailureMechanism MapData
- private void UpdateSectionsMapData()
+ private void UpdateFailureMechanismData()
{
SetSectionsMapData();
sectionsMapData.NotifyObservers();
sectionsStartPointMapData.NotifyObservers();
sectionsEndPointMapData.NotifyObservers();
+
+ UpdateAssemblyMapData();
}
private void SetSectionsMapData()
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs
===================================================================
diff -u -r15ca90de3817685565658c19a1a107f861812c69 -r5215d7ff24e8918f4f8282576a8436b1d3b9523d
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs (.../StabilityStoneCoverFailureMechanismViewTest.cs) (revision 15ca90de3817685565658c19a1a107f861812c69)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs (.../StabilityStoneCoverFailureMechanismViewTest.cs) (revision 5215d7ff24e8918f4f8282576a8436b1d3b9523d)
@@ -25,12 +25,17 @@
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 Ringtoets.AssemblyTool.Data;
+using Ringtoets.AssemblyTool.KernelWrapper.Calculators;
+using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Calculators;
+using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Calculators.Assembly;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.Common.Data.Hydraulics;
@@ -47,20 +52,30 @@
{
private const int referenceLineIndex = 0;
private const int sectionsCollectionIndex = 1;
- private const int hydraulicBoundaryLocationsIndex = 2;
- private const int foreshoreProfilesIndex = 3;
- private const int calculationsIndex = 4;
+ private const int assemblyResultsIndex = 2;
+ private const int hydraulicBoundaryLocationsIndex = 3;
+ private const int foreshoreProfilesIndex = 4;
+ private const int calculationsIndex = 5;
private const int sectionsIndex = 0;
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 hydraulicBoundaryLocationsObserverIndex = 1;
private const int foreshoreProfileObserverIndex = 2;
private const int calculationObserverIndex = 3;
private const int sectionsObserverIndex = 4;
private const int sectionsStartPointObserverIndex = 5;
private const int sectionsEndPointObserverIndex = 6;
+ private const int simpleAssemblyObserverIndex = 7;
+ private const int detailedAssemblyObserverIndex = 8;
+ private const int tailorMadeAssemblyObserverIndex = 9;
+ private const int combinedAssemblyObserverIndex = 10;
[Test]
public void Constructor_FailureMechanismNull_ThrowsArgumentNullException()
@@ -133,6 +148,8 @@
public void Constructor_WithAllData_DataUpdatedToCollectionOfFilledMapData()
{
// Setup
+ var random = new Random(39);
+
var calculationA = new StabilityStoneCoverWaveConditionsCalculation
{
InputParameters =
@@ -201,27 +218,50 @@
new HydraulicBoundaryLocation(1, "test", 1.0, 2.0)
});
- // Call
- using (var view = new StabilityStoneCoverFailureMechanismView(failureMechanism, assessmentSection))
+ var expectedSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var expectedDetailedAssemblyCategory = random.NextEnumValue();
+ var expectedTailorMadeAssemblyCategory = random.NextEnumValue();
+ var expectedCombinedAssemblyCategory = random.NextEnumValue();
+
+ using (new AssemblyToolCalculatorFactoryConfig())
{
- IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl;
+ var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
- // Assert
- MapDataCollection mapData = map.Data;
- Assert.IsInstanceOf(mapData);
+ calculator.SimpleAssessmentAssemblyOutput = expectedSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = expectedDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = expectedTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = expectedCombinedAssemblyCategory;
- List mapDataList = mapData.Collection.ToList();
- Assert.AreEqual(5, mapDataList.Count);
- MapDataTestHelper.AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
-
- IEnumerable sectionsCollection = ((MapDataCollection) mapDataList[sectionsCollectionIndex]).Collection;
- MapDataTestHelper.AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionsCollection.ElementAt(sectionsIndex));
- MapDataTestHelper.AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionsCollection.ElementAt(sectionsStartPointIndex));
- MapDataTestHelper.AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsCollection.ElementAt(sectionsEndPointIndex));
+ // Call
+ using (var view = new StabilityStoneCoverFailureMechanismView(failureMechanism, assessmentSection))
+ {
+ IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl;
- MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapDataList[hydraulicBoundaryLocationsIndex]);
- MapDataTestHelper.AssertForeshoreProfilesMapData(failureMechanism.ForeshoreProfiles, mapDataList[foreshoreProfilesIndex]);
- AssertCalculationsMapData(failureMechanism.Calculations.Cast(), mapDataList[calculationsIndex]);
+ // Assert
+ MapDataCollection mapData = map.Data;
+ Assert.IsInstanceOf(mapData);
+
+ List mapDataList = mapData.Collection.ToList();
+ Assert.AreEqual(6, mapDataList.Count);
+ MapDataTestHelper.AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
+
+ IEnumerable sectionsCollection = ((MapDataCollection) mapDataList[sectionsCollectionIndex]).Collection;
+ MapDataTestHelper.AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionsCollection.ElementAt(sectionsIndex));
+ MapDataTestHelper.AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionsCollection.ElementAt(sectionsStartPointIndex));
+ MapDataTestHelper.AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsCollection.ElementAt(sectionsEndPointIndex));
+
+ MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapDataList[hydraulicBoundaryLocationsIndex]);
+ MapDataTestHelper.AssertForeshoreProfilesMapData(failureMechanism.ForeshoreProfiles, mapDataList[foreshoreProfilesIndex]);
+ AssertCalculationsMapData(failureMechanism.Calculations.Cast(), mapDataList[calculationsIndex]);
+
+ MapDataTestHelper.AssertAssemblyMapDataCollection(expectedSimpleAssembly.Group,
+ expectedDetailedAssemblyCategory,
+ expectedTailorMadeAssemblyCategory,
+ expectedCombinedAssemblyCategory,
+ (MapDataCollection) mapDataList[assemblyResultsIndex],
+ failureMechanism);
+ }
}
}
@@ -351,7 +391,7 @@
using (var view = new StabilityStoneCoverFailureMechanismView(failureMechanism, new AssessmentSectionStub()))
{
IMapControl map = ((RingtoetsMapControl) 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);
@@ -362,6 +402,10 @@
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();
// When
@@ -495,6 +539,10 @@
var mocks = new MockRepository();
IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection);
observers[calculationObserverIndex].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();
var calculationMapData = (MapLineData) map.Data.Collection.ElementAt(calculationsIndex);
@@ -543,6 +591,10 @@
var mocks = new MockRepository();
IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection);
observers[calculationObserverIndex].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();
var calculationMapData = (MapLineData) map.Data.Collection.ElementAt(calculationsIndex);
@@ -583,6 +635,10 @@
var mocks = new MockRepository();
IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection);
observers[calculationObserverIndex].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();
var calculationMapData = (MapLineData) map.Data.Collection.ElementAt(calculationsIndex);
@@ -602,11 +658,220 @@
}
[Test]
+ public void GivenViewWithAssemblyData_WhenFailureMechanismNotified_ThenMapDataUpdated()
+ {
+ // Given
+ var random = new Random(39);
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10));
+
+ var originalSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var originalDetailedAssemblyCategory = random.NextEnumValue();
+ var originalTailorMadeAssemblyCategory = random.NextEnumValue();
+ var originalCombinedAssemblyCategory = random.NextEnumValue();
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+
+ calculator.SimpleAssessmentAssemblyOutput = originalSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = originalDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = originalTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = originalCombinedAssemblyCategory;
+
+ using (var view = new StabilityStoneCoverFailureMechanismView(failureMechanism, new AssessmentSectionStub()))
+ {
+ 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
+ var assemblyMapData = (MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex);
+ MapDataTestHelper.AssertAssemblyMapDataCollection(originalSimpleAssembly.Group,
+ originalDetailedAssemblyCategory,
+ originalTailorMadeAssemblyCategory,
+ originalCombinedAssemblyCategory,
+ assemblyMapData,
+ failureMechanism);
+
+ // When
+ var updatedSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var updatedDetailedAssemblyCategory = random.NextEnumValue();
+ var updatedTailorMadeAssemblyCategory = random.NextEnumValue();
+ var updatedCombinedAssemblyCategory = random.NextEnumValue();
+ calculator.SimpleAssessmentAssemblyOutput = updatedSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = updatedDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = updatedTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = updatedCombinedAssemblyCategory;
+ failureMechanism.NotifyObservers();
+
+ // Then
+ MapDataTestHelper.AssertAssemblyMapDataCollection(updatedSimpleAssembly.Group,
+ updatedDetailedAssemblyCategory,
+ updatedTailorMadeAssemblyCategory,
+ updatedCombinedAssemblyCategory,
+ assemblyMapData,
+ failureMechanism);
+ mocks.VerifyAll();
+ }
+ }
+ }
+
+ [Test]
+ public void GivenViewWithAssemblyData_WhenCalculationNotified_ThenMapDataUpdated()
+ {
+ // Given
+ var random = new Random(39);
+ var calculationA = new StabilityStoneCoverWaveConditionsCalculation();
+
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationA);
+ FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10));
+
+ var originalSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var originalDetailedAssemblyCategory = random.NextEnumValue();
+ var originalTailorMadeAssemblyCategory = random.NextEnumValue();
+ var originalCombinedAssemblyCategory = random.NextEnumValue();
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+
+ calculator.SimpleAssessmentAssemblyOutput = originalSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = originalDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = originalTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = originalCombinedAssemblyCategory;
+
+ using (var view = new StabilityStoneCoverFailureMechanismView(failureMechanism, new AssessmentSectionStub()))
+ {
+ IMapControl map = ((RingtoetsMapControl) view.Controls[0]).MapControl;
+
+ var mocks = new MockRepository();
+ IObserver[] observers = AttachMapDataObservers(mocks, map.Data.Collection);
+ observers[calculationObserverIndex].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
+ var assemblyMapData = (MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex);
+ MapDataTestHelper.AssertAssemblyMapDataCollection(originalSimpleAssembly.Group,
+ originalDetailedAssemblyCategory,
+ originalTailorMadeAssemblyCategory,
+ originalCombinedAssemblyCategory,
+ assemblyMapData,
+ failureMechanism);
+
+ // When
+ var updatedSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var updatedDetailedAssemblyCategory = random.NextEnumValue();
+ var updatedTailorMadeAssemblyCategory = random.NextEnumValue();
+ var updatedCombinedAssemblyCategory = random.NextEnumValue();
+ calculator.SimpleAssessmentAssemblyOutput = updatedSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = updatedDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = updatedTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = updatedCombinedAssemblyCategory;
+ calculationA.NotifyObservers();
+
+ // Then
+ MapDataTestHelper.AssertAssemblyMapDataCollection(updatedSimpleAssembly.Group,
+ updatedDetailedAssemblyCategory,
+ updatedTailorMadeAssemblyCategory,
+ updatedCombinedAssemblyCategory,
+ assemblyMapData,
+ failureMechanism);
+ mocks.VerifyAll();
+ }
+ }
+ }
+
+ [Test]
+ public void GivenViewWithAssemblyData_WhenFailureMechanismSectionResultNotified_ThenMapDataUpdated()
+ {
+ // Given
+ var random = new Random(39);
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ FailureMechanismTestHelper.AddSections(failureMechanism, random.Next(1, 10));
+
+ var originalSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var originalDetailedAssemblyCategory = random.NextEnumValue();
+ var originalTailorMadeAssemblyCategory = random.NextEnumValue();
+ var originalCombinedAssemblyCategory = random.NextEnumValue();
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+
+ calculator.SimpleAssessmentAssemblyOutput = originalSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = originalDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = originalTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = originalCombinedAssemblyCategory;
+
+ using (var view = new StabilityStoneCoverFailureMechanismView(failureMechanism, new AssessmentSectionStub()))
+ {
+ 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
+ var assemblyMapData = (MapDataCollection) map.Data.Collection.ElementAt(assemblyResultsIndex);
+ MapDataTestHelper.AssertAssemblyMapDataCollection(originalSimpleAssembly.Group,
+ originalDetailedAssemblyCategory,
+ originalTailorMadeAssemblyCategory,
+ originalCombinedAssemblyCategory,
+ assemblyMapData,
+ failureMechanism);
+
+ // When
+ var updatedSimpleAssembly = new FailureMechanismSectionAssembly(random.NextDouble(), random.NextEnumValue());
+ var updatedDetailedAssemblyCategory = random.NextEnumValue();
+ var updatedTailorMadeAssemblyCategory = random.NextEnumValue();
+ var updatedCombinedAssemblyCategory = random.NextEnumValue();
+ calculator.SimpleAssessmentAssemblyOutput = updatedSimpleAssembly;
+ calculator.DetailedAssessmentAssemblyGroupOutput = updatedDetailedAssemblyCategory;
+ calculator.TailorMadeAssemblyCategoryOutput = updatedTailorMadeAssemblyCategory;
+ calculator.CombinedAssemblyCategoryOutput = updatedCombinedAssemblyCategory;
+ failureMechanism.SectionResults.First().NotifyObservers();
+
+ // Then
+ MapDataTestHelper.AssertAssemblyMapDataCollection(updatedSimpleAssembly.Group,
+ updatedDetailedAssemblyCategory,
+ updatedTailorMadeAssemblyCategory,
+ updatedCombinedAssemblyCategory,
+ assemblyMapData,
+ failureMechanism);
+ mocks.VerifyAll();
+ }
+ }
+ }
+
+ [Test]
public void UpdateObserver_DataUpdated_MapLayersSameOrder()
{
// Setup
- const int updatedReferenceLineLayerIndex = referenceLineIndex + 4;
+ const int updatedReferenceLineLayerIndex = referenceLineIndex + 5;
const int updatedSectionsCollectionLayerIndex = sectionsCollectionIndex - 1;
+ const int updatedAssemblyResultsCollectionIndex = assemblyResultsIndex - 1;
const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryLocationsIndex - 1;
const int updatedForeshoreProfilesLayerIndex = foreshoreProfilesIndex - 1;
const int updatedCalculationsIndex = calculationsIndex - 1;
@@ -633,6 +898,9 @@
var sectionsData = (MapDataCollection) mapDataList[updatedSectionsCollectionLayerIndex];
Assert.AreEqual("Vakindeling", sectionsData.Name);
+ var assemblyResultsData = (MapDataCollection) mapDataList[updatedAssemblyResultsCollectionIndex];
+ Assert.AreEqual("Toetsoordeel", assemblyResultsData.Name);
+
var hydraulicLocationsData = (MapPointData) mapDataList[updatedHydraulicLocationsLayerIndex];
Assert.AreEqual("Hydraulische belastingen", hydraulicLocationsData.Name);
@@ -661,6 +929,9 @@
var actualSectionsData = (MapDataCollection) mapDataList[updatedSectionsCollectionLayerIndex];
Assert.AreEqual("Vakindeling", actualSectionsData.Name);
+ var actualAssemblyResultsData = (MapDataCollection) mapDataList[updatedAssemblyResultsCollectionIndex];
+ Assert.AreEqual("Toetsoordeel", actualAssemblyResultsData.Name);
+
var actualHydraulicLocationsData = (MapPointData) mapDataList[updatedHydraulicLocationsLayerIndex];
Assert.AreEqual("Hydraulische belastingen", actualHydraulicLocationsData.Name);
@@ -702,7 +973,7 @@
List mapDataList = mapDataCollection.Collection.ToList();
- Assert.AreEqual(5, mapDataList.Count);
+ Assert.AreEqual(6, mapDataList.Count);
var referenceLineMapData = (MapLineData) mapDataList[referenceLineIndex];
var foreshoreProfilesMapData = (MapLineData) mapDataList[foreshoreProfilesIndex];
@@ -735,6 +1006,26 @@
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);
}
///
@@ -770,6 +1061,19 @@
var sectionsEndPointMapDataObserver = mocks.StrictMock();
sectionsCollection[sectionsEndPointIndex].Attach(sectionsEndPointMapDataObserver);
+ 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[]
{
referenceLineMapDataObserver,
@@ -779,6 +1083,10 @@
sectionsMapDataObserver,
sectionsStartPointMapDataObserver,
sectionsEndPointMapDataObserver,
+ simpleAssemblyMapDataObserver,
+ detailedAssemblyMapDataObserver,
+ tailorMadeAssemblyMapDataObserver,
+ combinedAssemblyMapDataObserver
};
}
}