Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFactory.cs
===================================================================
diff -u -r44e2c0b1a9a5cf648e6287c2f02038cc1d598c46 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFactory.cs (.../RingtoetsMapDataFactory.cs) (revision 44e2c0b1a9a5cf648e6287c2f02038cc1d598c46)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFactory.cs (.../RingtoetsMapDataFactory.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -118,5 +118,17 @@
Style = new LineStyle(Color.DarkSeaGreen, 2, DashStyle.Solid)
};
}
+
+ ///
+ /// Create with default styling for collections of .
+ ///
+ /// The created .
+ public static MapLineData CreateForeshoreProfileMapData()
+ {
+ return new MapLineData(Resources.ForeshoreProfiles_DisplayName)
+ {
+ Style = new LineStyle(Color.LightSeaGreen, 2, DashStyle.Solid)
+ };
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFeaturesFactory.cs
===================================================================
diff -u -r1e07c6eef1c8cdc531e12e6c5429838757972142 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFeaturesFactory.cs (.../RingtoetsMapDataFeaturesFactory.cs) (revision 1e07c6eef1c8cdc531e12e6c5429838757972142)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFeaturesFactory.cs (.../RingtoetsMapDataFeaturesFactory.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -144,14 +144,17 @@
return new MapFeature[0];
}
- var features = new List();
- foreach (var dikeProfile in dikeProfiles)
+ return dikeProfiles.Select(dikeProfile => GetAsSingleMapFeature(GetWorldPoints(dikeProfile))).ToArray();
+ }
+
+ public static MapFeature[] CreateForeshoreProfilesFeatures(IEnumerable foreshoreProfiles)
+ {
+ if (foreshoreProfiles == null || !foreshoreProfiles.Any())
{
- features.Add(GetAsSingleMapFeature(GetWorldPoints(dikeProfile)));
- features.Add(GetAsSingleMapFeature(GetWorldPoints(dikeProfile.ForeshoreProfile)));
+ return new MapFeature[0];
}
- return features.ToArray();
+ return foreshoreProfiles.Select(foreshoreProfile => GetAsSingleMapFeature(GetWorldPoints(foreshoreProfile))).ToArray();
}
private static Point2D[] GetWorldPoints(DikeProfile dikeProfile)
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/RingtoetsMapDataFactoryTest.cs
===================================================================
diff -u -r44e2c0b1a9a5cf648e6287c2f02038cc1d598c46 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/RingtoetsMapDataFactoryTest.cs (.../RingtoetsMapDataFactoryTest.cs) (revision 44e2c0b1a9a5cf648e6287c2f02038cc1d598c46)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/RingtoetsMapDataFactoryTest.cs (.../RingtoetsMapDataFactoryTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -95,7 +95,7 @@
}
[Test]
- public void CreateDikeProfileMapData_ReturnsEmptyMapPointDataWithDefaultStyling()
+ public void CreateDikeProfileMapData_ReturnsEmptyMapLineDataWithDefaultStyling()
{
// Call
MapLineData data = RingtoetsMapDataFactory.CreateDikeProfileMapData();
@@ -106,6 +106,18 @@
AssertEqualStyle(data.Style, Color.DarkSeaGreen, 2, DashStyle.Solid);
}
+ [Test]
+ public void CreateForeshoreProfileMapData_ReturnsEmptyMapLineDataWithDefaultStyling()
+ {
+ // Call
+ MapLineData data = RingtoetsMapDataFactory.CreateForeshoreProfileMapData();
+
+ // Assert
+ Assert.IsEmpty(data.Features);
+ Assert.AreEqual(RingtoetsCommonFormsResources.ForeshoreProfiles_DisplayName, data.Name);
+ AssertEqualStyle(data.Style, Color.LightSeaGreen, 2, DashStyle.Solid);
+ }
+
private static string GetSectionPointDisplayName(string name)
{
return string.Format("{0} ({1})",
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/RingtoetsMapDataFeaturesFactoryTest.cs
===================================================================
diff -u -r1e07c6eef1c8cdc531e12e6c5429838757972142 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/RingtoetsMapDataFeaturesFactoryTest.cs (.../RingtoetsMapDataFeaturesFactoryTest.cs) (revision 1e07c6eef1c8cdc531e12e6c5429838757972142)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/RingtoetsMapDataFeaturesFactoryTest.cs (.../RingtoetsMapDataFeaturesFactoryTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -332,15 +332,11 @@
MapFeature[] features = RingtoetsMapDataFeaturesFactory.CreateDikeProfilesFeatures(dikeProfiles);
// Assert
- Assert.AreEqual(4, features.Length);
+ Assert.AreEqual(2, features.Length);
Assert.AreEqual(1, features.ElementAt(0).MapGeometries.Count());
Assert.AreEqual(1, features.ElementAt(1).MapGeometries.Count());
- Assert.AreEqual(1, features.ElementAt(2).MapGeometries.Count());
- Assert.AreEqual(1, features.ElementAt(3).MapGeometries.Count());
var mapDataDikeGeometryOne = features.ElementAt(0).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
- var mapDataForeshoreGeometryOne = features.ElementAt(1).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
- var mapDataDikeGeometryTwo = features.ElementAt(2).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
- var mapDataForeshoreGeometryTwo = features.ElementAt(3).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
+ var mapDataDikeGeometryTwo = features.ElementAt(1).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
CollectionElementsAlmostEquals(new[]
{
@@ -349,19 +345,87 @@
}, mapDataDikeGeometryOne);
CollectionElementsAlmostEquals(new[]
{
- new Point2D(5, 0.8),
- new Point2D(5, -3.7)
- }, mapDataForeshoreGeometryOne);
- CollectionElementsAlmostEquals(new[]
- {
new Point2D(2, -0.3),
new Point2D(2, -3.6),
new Point2D(2, -5.3),
new Point2D(2, -3.2)
}, mapDataDikeGeometryTwo);
- Assert.IsEmpty(mapDataForeshoreGeometryTwo);
}
+ [Test]
+ public void CreateForeshoreProfilesFeatures_NullForeshoreProfiles_ReturnsEmptyCollection()
+ {
+ // Call
+ MapFeature[] features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(null);
+ // Assert
+ Assert.IsEmpty(features);
+ }
+
+ [Test]
+ public void CreateForeshoreProfilesFeatures_EmptyForeshoreProfiles_ReturnsEmptyCollection()
+ {
+ // Call
+ MapFeature[] features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(
+ Enumerable.Empty());
+
+ // Assert
+ Assert.IsEmpty(features);
+ }
+
+ [Test]
+ public void CreateForeshoreProfilesFeatures_WithForeshoreProfiles_ReturnsCollectionWithForeshoreProfileAndForeshoreProfile()
+ {
+ // Setup
+ var pointA = new Point2D(1.2, 2.3);
+ var pointB = new Point2D(2.7, 2.0);
+
+ var pointC = new Point2D(1.3, 2.3);
+ var pointD = new Point2D(4.6, 2.0);
+ var pointE = new Point2D(3.2, 23.3);
+ var pointF = new Point2D(7.7, 12.6);
+
+ var pointsOne = new[]
+ {
+ pointA,
+ pointB
+ };
+ var pointsTwo = new[]
+ {
+ pointC,
+ pointD,
+ pointE,
+ pointF
+ };
+ var dikeProfiles = new[]
+ {
+ new ForeshoreProfile(new Point2D(5,4), pointsOne, null, new ForeshoreProfile.ConstructionProperties()),
+ new ForeshoreProfile(new Point2D(2,1), pointsTwo, null, new ForeshoreProfile.ConstructionProperties())
+ };
+
+ // Call
+ MapFeature[] features = RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(dikeProfiles);
+
+ // Assert
+ Assert.AreEqual(2, features.Length);
+ Assert.AreEqual(1, features.ElementAt(0).MapGeometries.Count());
+ Assert.AreEqual(1, features.ElementAt(1).MapGeometries.Count());
+ var mapDataGeometryOne = features.ElementAt(0).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
+ var mapDataGeometryTwo = features.ElementAt(1).MapGeometries.ElementAt(0).PointCollections.First().ToArray();
+
+ CollectionElementsAlmostEquals(new[]
+ {
+ new Point2D(5, 2.8),
+ new Point2D(5, 1.3)
+ }, mapDataGeometryOne);
+ CollectionElementsAlmostEquals(new[]
+ {
+ new Point2D(2, -0.3),
+ new Point2D(2, -3.6),
+ new Point2D(2, -2.2),
+ new Point2D(2, -6.7)
+ }, mapDataGeometryTwo);
+ }
+
private void CollectionElementsAlmostEquals(IEnumerable expected, Point2D[] actual)
{
Assert.AreEqual(expected.Count(), actual.Length);
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismView.cs
===================================================================
diff -u -r0bcae8b23e2364c988df54e70695322b5a8c9829 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismView.cs (.../GrassCoverErosionInwardsFailureMechanismView.cs) (revision 0bcae8b23e2364c988df54e70695322b5a8c9829)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismView.cs (.../GrassCoverErosionInwardsFailureMechanismView.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -20,6 +20,7 @@
// All rights reserved.
using System.Collections.Generic;
+using System.Linq;
using System.Windows.Forms;
using Core.Common.Base;
using Core.Components.Gis.Data;
@@ -52,6 +53,7 @@
private readonly MapPointData sectionsEndPointMapData;
private readonly MapPointData hydraulicBoundaryDatabaseMapData;
private readonly MapLineData dikeProfilesMapData;
+ private readonly MapLineData foreshoreProfilesMapData;
private GrassCoverErosionInwardsFailureMechanismContext data;
@@ -69,6 +71,7 @@
referenceLineMapData = RingtoetsMapDataFactory.CreateReferenceLineMapData();
hydraulicBoundaryDatabaseMapData = RingtoetsMapDataFactory.CreateHydraulicBoundaryDatabaseMapData();
dikeProfilesMapData = RingtoetsMapDataFactory.CreateDikeProfileMapData();
+ foreshoreProfilesMapData = RingtoetsMapDataFactory.CreateForeshoreProfileMapData();
sectionsMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsMapData();
sectionsStartPointMapData = RingtoetsMapDataFactory.CreateFailureMechanismSectionsStartPointMapData();
@@ -80,6 +83,7 @@
mapControl.Data.Add(sectionsEndPointMapData);
mapControl.Data.Add(hydraulicBoundaryDatabaseMapData);
mapControl.Data.Add(dikeProfilesMapData);
+ mapControl.Data.Add(foreshoreProfilesMapData);
mapControl.Data.Name = GrassCoverErosionInwardsDataResources.GrassCoverErosionInwardsFailureMechanism_DisplayName;
}
@@ -160,6 +164,8 @@
RingtoetsMapDataFeaturesFactory.CreateHydraulicBoundaryDatabaseFeatures(hydraulicBoundaryDatabase));
UpdateFeatureBasedMapData(dikeProfilesMapData,
RingtoetsMapDataFeaturesFactory.CreateDikeProfilesFeatures(dikeProfiles));
+ UpdateFeatureBasedMapData(foreshoreProfilesMapData,
+ RingtoetsMapDataFeaturesFactory.CreateForeshoreProfilesFeatures(dikeProfiles.Select(dp => dp.ForeshoreProfile)));
mapControl.Data.NotifyObservers();
}
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs
===================================================================
diff -u -r2aeb951ddc6e2137897569a2de4c55c9fb7e2420 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 2aeb951ddc6e2137897569a2de4c55c9fb7e2420)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -214,19 +214,19 @@
return null;
}
- # region PipingFailureMechanismView ViewInfo
+ # region GrassCoverErosionInwardsFailureMechanismView ViewInfo
private bool CloseGrassCoverErosionInwardsFailureMechanismViewForData(GrassCoverErosionInwardsFailureMechanismView view, object o)
{
var assessmentSection = o as IAssessmentSection;
- var pipingFailureMechanism = o as GrassCoverErosionInwardsFailureMechanism;
+ var failureMechanism = o as GrassCoverErosionInwardsFailureMechanism;
var viewFailureMechanismContext = (GrassCoverErosionInwardsFailureMechanismContext)view.Data;
var viewFailureMechanism = viewFailureMechanismContext.WrappedData;
return assessmentSection != null
? ReferenceEquals(viewFailureMechanismContext.Parent, assessmentSection)
- : ReferenceEquals(viewFailureMechanism, pipingFailureMechanism);
+ : ReferenceEquals(viewFailureMechanism, failureMechanism);
}
# endregion
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs
===================================================================
diff -u -r1e07c6eef1c8cdc531e12e6c5429838757972142 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision 1e07c6eef1c8cdc531e12e6c5429838757972142)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismViewTest.cs (.../GrassCoverErosionInwardsFailureMechanismViewTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -54,6 +54,7 @@
private const int sectionsEndPointIndex = 3;
private const int hydraulicBoundaryDatabaseIndex = 4;
private const int dikeProfilesIndex = 5;
+ private const int foreshoreProfilesIndex = 6;
[Test]
public void DefaultConstructor_DefaultValues()
@@ -90,13 +91,13 @@
// Setup
using (var view = new GrassCoverErosionInwardsFailureMechanismView())
{
- var grassCoverErosionInwardsFailureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), new TestAssessmentSection());
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), new TestAssessmentSection());
// Call
- view.Data = grassCoverErosionInwardsFailureMechanismContext;
+ view.Data = failureMechanismContext;
// Assert
- Assert.AreSame(grassCoverErosionInwardsFailureMechanismContext, view.Data);
+ Assert.AreSame(failureMechanismContext, view.Data);
}
}
@@ -122,12 +123,12 @@
// Setup
using (var view = new GrassCoverErosionInwardsFailureMechanismView())
{
- var grassCoverErosionInwardsFailureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), new TestAssessmentSection());
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), new TestAssessmentSection());
- view.Data = grassCoverErosionInwardsFailureMechanismContext;
+ view.Data = failureMechanismContext;
// Precondition
- Assert.AreEqual(6, view.Map.Data.Collection.Count());
+ Assert.AreEqual(7, view.Map.Data.Collection.Count());
// Call
view.Data = null;
@@ -144,13 +145,13 @@
// Setup
using (var view = new GrassCoverErosionInwardsFailureMechanismView())
{
- var grassCoverErosionInwardsFailureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), new TestAssessmentSection());
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), new TestAssessmentSection());
// Call
- view.Data = grassCoverErosionInwardsFailureMechanismContext;
+ view.Data = failureMechanismContext;
// Assert
- Assert.AreSame(grassCoverErosionInwardsFailureMechanismContext, view.Data);
+ Assert.AreSame(failureMechanismContext, view.Data);
AssertEmptyMapData(view.Map.Data);
}
}
@@ -187,33 +188,34 @@
ReferenceLine = referenceLine
};
- var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism();
- grassCoverErosionInwardsFailureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
- grassCoverErosionInwardsFailureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
- grassCoverErosionInwardsFailureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
- grassCoverErosionInwardsFailureMechanism.DikeProfiles.Add(new TestDikeProfile());
- grassCoverErosionInwardsFailureMechanism.DikeProfiles.Add(new TestDikeProfile());
+ failureMechanism.DikeProfiles.Add(new TestDikeProfile());
+ failureMechanism.DikeProfiles.Add(new TestDikeProfile());
- var grassCoverErosionInwardsContext = new GrassCoverErosionInwardsFailureMechanismContext(grassCoverErosionInwardsFailureMechanism, assessmentSection);
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection);
// Call
- view.Data = grassCoverErosionInwardsContext;
+ view.Data = failureMechanismContext;
// Assert
- Assert.AreSame(grassCoverErosionInwardsContext, view.Data);
+ Assert.AreSame(failureMechanismContext, view.Data);
var mapData = map.Data;
Assert.IsInstanceOf(mapData);
var mapDataList = mapData.Collection.ToList();
- Assert.AreEqual(6, mapDataList.Count);
+ Assert.AreEqual(7, mapDataList.Count);
AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
- AssertFailureMechanismSectionsMapData(grassCoverErosionInwardsFailureMechanism.Sections, mapDataList[sectionsIndex]);
- AssertFailureMechanismSectionsStartPointMapData(grassCoverErosionInwardsFailureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
- AssertFailureMechanismSectionsEndPointMapData(grassCoverErosionInwardsFailureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, mapDataList[sectionsIndex]);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase, mapDataList[hydraulicBoundaryDatabaseIndex]);
- AssertDikeProfiles(grassCoverErosionInwardsFailureMechanism.DikeProfiles, mapDataList[dikeProfilesIndex]);
+ AssertDikeProfiles(failureMechanism.DikeProfiles, mapDataList[dikeProfilesIndex]);
+ AssertForeshoreProfiles(failureMechanism.DikeProfiles.Select(dp => dp.ForeshoreProfile), mapDataList[foreshoreProfilesIndex]);
}
}
@@ -245,9 +247,9 @@
HydraulicBoundaryDatabase = hydraulicBoundaryDatabase1
};
- var grassCoverErosionInwardsContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
- view.Data = grassCoverErosionInwardsContext;
+ view.Data = failureMechanismContext;
var hydraulicBoundaryDatabaseMapData = map.Data.Collection.ElementAt(hydraulicBoundaryDatabaseIndex);
@@ -289,9 +291,9 @@
};
assessmentSection.ReferenceLine.SetGeometry(points1);
- var grassCoverErosionInwardsContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(new GrassCoverErosionInwardsFailureMechanism(), assessmentSection);
- view.Data = grassCoverErosionInwardsContext;
+ view.Data = failureMechanismContext;
var referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex);
@@ -315,27 +317,27 @@
{
var map = (MapControl) view.Controls[0];
- var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism();
- var grassCoverErosionInwardsContext = new GrassCoverErosionInwardsFailureMechanismContext(grassCoverErosionInwardsFailureMechanism, new TestAssessmentSection());
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, new TestAssessmentSection());
- view.Data = grassCoverErosionInwardsContext;
+ view.Data = failureMechanismContext;
var sectionMapData = (MapLineData) map.Data.Collection.ElementAt(sectionsIndex);
var sectionStartsMapData = (MapPointData) map.Data.Collection.ElementAt(sectionsStartPointIndex);
var sectionsEndsMapData = (MapPointData) map.Data.Collection.ElementAt(sectionsEndPointIndex);
// Call
- grassCoverErosionInwardsFailureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
+ failureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
{
new Point2D(1, 2),
new Point2D(1, 2)
}));
- grassCoverErosionInwardsFailureMechanism.NotifyObservers();
+ failureMechanism.NotifyObservers();
// Assert
- AssertFailureMechanismSectionsMapData(grassCoverErosionInwardsFailureMechanism.Sections, sectionMapData);
- AssertFailureMechanismSectionsStartPointMapData(grassCoverErosionInwardsFailureMechanism.Sections, sectionStartsMapData);
- AssertFailureMechanismSectionsEndPointMapData(grassCoverErosionInwardsFailureMechanism.Sections, sectionsEndsMapData);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionMapData);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionStartsMapData);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsEndsMapData);
}
}
@@ -347,47 +349,77 @@
{
var map = (MapControl)view.Controls[0];
- var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism();
- var grassCoverErosionInwardsContext = new GrassCoverErosionInwardsFailureMechanismContext(grassCoverErosionInwardsFailureMechanism, new TestAssessmentSection());
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, new TestAssessmentSection());
- grassCoverErosionInwardsFailureMechanism.DikeProfiles.Add(new TestDikeProfile());
+ failureMechanism.DikeProfiles.Add(new TestDikeProfile());
- view.Data = grassCoverErosionInwardsContext;
+ view.Data = failureMechanismContext;
var dikeProfileData = map.Data.Collection.ElementAt(dikeProfilesIndex);
// Precondition
- AssertDikeProfiles(grassCoverErosionInwardsFailureMechanism.DikeProfiles, dikeProfileData);
+ AssertDikeProfiles(failureMechanism.DikeProfiles, dikeProfileData);
// Call
- grassCoverErosionInwardsFailureMechanism.DikeProfiles.Add(new TestDikeProfile());
- grassCoverErosionInwardsFailureMechanism.DikeProfiles.NotifyObservers();
+ failureMechanism.DikeProfiles.Add(new TestDikeProfile());
+ failureMechanism.DikeProfiles.NotifyObservers();
// Assert
- AssertDikeProfiles(grassCoverErosionInwardsFailureMechanism.DikeProfiles, dikeProfileData);
+ AssertDikeProfiles(failureMechanism.DikeProfiles, dikeProfileData);
}
}
[Test]
+ public void UpdateObserver_ForeshoreProfilesUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionInwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ failureMechanism.DikeProfiles.Add(new TestDikeProfile());
+
+ view.Data = failureMechanismContext;
+
+ var dikeProfileData = map.Data.Collection.ElementAt(foreshoreProfilesIndex);
+
+ // Precondition
+ AssertForeshoreProfiles(failureMechanism.DikeProfiles.Select(dp => dp.ForeshoreProfile), dikeProfileData);
+
+ // Call
+ failureMechanism.DikeProfiles.Add(new TestDikeProfile());
+ failureMechanism.DikeProfiles.NotifyObservers();
+
+ // Assert
+ AssertForeshoreProfiles(failureMechanism.DikeProfiles.Select(dp => dp.ForeshoreProfile), dikeProfileData);
+ }
+ }
+
+ [Test]
public void UpdateObserver_DataUpdated_MapLayersSameOrder()
{
// Setup
- const int updatedRefenceLineLayerIndex = referenceLineIndex + 5;
+ const int updatedRefenceLineLayerIndex = referenceLineIndex + 6;
const int updatedSectionsLayerIndex = sectionsIndex - 1;
const int updateSectionStartLayerIndex = sectionsStartPointIndex - 1;
const int updatedSectionEndLayerIndex = sectionsEndPointIndex - 1;
const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryDatabaseIndex - 1;
const int updatedDikeProfilesLayerIndex = dikeProfilesIndex - 1;
+ const int updatedForeshoreProfilesLayerIndex = foreshoreProfilesIndex - 1;
using (var view = new GrassCoverErosionInwardsFailureMechanismView())
{
var map = (MapControl) view.Controls[0];
var assessmentSection = new TestAssessmentSection();
- var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism();
- var grassCoverErosionInwardsContext = new GrassCoverErosionInwardsFailureMechanismContext(grassCoverErosionInwardsFailureMechanism, assessmentSection);
+ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection);
- view.Data = grassCoverErosionInwardsContext;
+ view.Data = failureMechanismContext;
var mapData = map.Data;
@@ -416,6 +448,9 @@
var dikeProfilesData = (MapLineData) mapDataList[updatedDikeProfilesLayerIndex];
Assert.AreEqual("Dijkprofielen", dikeProfilesData.Name);
+ var foreshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", foreshoreProfilesData.Name);
+
var points = new List
{
new Point2D(2.0, 5.0),
@@ -446,6 +481,9 @@
var actualDikeProfilesData = (MapLineData) mapDataList[updatedDikeProfilesLayerIndex];
Assert.AreEqual("Dijkprofielen", actualDikeProfilesData.Name);
+
+ var actualForeshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", actualForeshoreProfilesData.Name);
}
}
@@ -506,20 +544,36 @@
var dikeProfileArray = dikeProfiles.ToArray();
Assert.IsInstanceOf(mapData);
- Assert.AreEqual(dikeProfileArray.Length * 2, dikeProfilesData.Features.Length);
+ Assert.AreEqual(dikeProfileArray.Length, dikeProfilesData.Features.Length);
for (int i = 0; i < dikeProfileArray.Length; i++)
{
- var profileDataA = dikeProfilesData.Features.ElementAt(i * 2).MapGeometries.First();
- var foreshoreDataA = dikeProfilesData.Features.ElementAt(i * 2 + 1).MapGeometries.First();
-
+ var profileDataA = dikeProfilesData.Features.ElementAt(i).MapGeometries.First();
CollectionAssert.AreEquivalent(dikeProfileArray[0].DikeGeometry, profileDataA.PointCollections.First());
- CollectionAssert.AreEquivalent(dikeProfileArray[0].ForeshoreProfile.Geometry, foreshoreDataA.PointCollections.First());
}
Assert.AreEqual("Dijkprofielen", mapData.Name);
}
+ private static void AssertForeshoreProfiles(IEnumerable foreshoreProfiles, MapData mapData)
+ {
+ Assert.NotNull(foreshoreProfiles, "foreshoreProfiles should never be null.");
+
+ var foreshoreProfilesData = (MapLineData) mapData;
+ var foreshoreProfileArray = foreshoreProfiles.ToArray();
+
+ Assert.IsInstanceOf(mapData);
+ Assert.AreEqual(foreshoreProfileArray.Length, foreshoreProfilesData.Features.Length);
+
+ for (int i = 0; i < foreshoreProfileArray.Length; i++)
+ {
+ var profileDataA = foreshoreProfilesData.Features.ElementAt(i).MapGeometries.First();
+ CollectionAssert.AreEquivalent(foreshoreProfileArray[0].Geometry, profileDataA.PointCollections.First());
+ }
+
+ Assert.AreEqual("Voorlandprofielen", mapData.Name);
+ }
+
private static void AssertHydraulicBoundaryLocationsMapData(HydraulicBoundaryDatabase database, MapData mapData)
{
Assert.IsInstanceOf(mapData);
@@ -576,18 +630,20 @@
var mapDataList = mapData.Collection.ToList();
- Assert.AreEqual(6, mapDataList.Count);
+ Assert.AreEqual(7, mapDataList.Count);
var referenceLineMapData = (MapLineData) mapDataList[referenceLineIndex];
var sectionsMapData = (MapLineData) mapDataList[sectionsIndex];
var dikeProfilesMapData = (MapLineData) mapDataList[dikeProfilesIndex];
+ var foreshoreProfilesMapData = (MapLineData) mapDataList[foreshoreProfilesIndex];
var sectionsStartPointMapData = (MapPointData) mapDataList[sectionsStartPointIndex];
var sectionsEndPointMapData = (MapPointData) mapDataList[sectionsEndPointIndex];
var hydraulicBoundaryDatabaseMapData = (MapPointData) mapDataList[hydraulicBoundaryDatabaseIndex];
CollectionAssert.IsEmpty(referenceLineMapData.Features);
CollectionAssert.IsEmpty(sectionsMapData.Features);
CollectionAssert.IsEmpty(dikeProfilesMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
CollectionAssert.IsEmpty(sectionsStartPointMapData.Features);
CollectionAssert.IsEmpty(sectionsEndPointMapData.Features);
CollectionAssert.IsEmpty(hydraulicBoundaryDatabaseMapData.Features);
Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/Ringtoets.GrassCoverErosionOutwards.Forms.csproj
===================================================================
diff -u -r01c86929c554e5092193f6c7e0c673f58b5d2bbc -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/Ringtoets.GrassCoverErosionOutwards.Forms.csproj (.../Ringtoets.GrassCoverErosionOutwards.Forms.csproj) (revision 01c86929c554e5092193f6c7e0c673f58b5d2bbc)
+++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/Ringtoets.GrassCoverErosionOutwards.Forms.csproj (.../Ringtoets.GrassCoverErosionOutwards.Forms.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -38,6 +38,7 @@
+
@@ -71,6 +72,12 @@
+
+ UserControl
+
+
+ GrassCoverErosionInwardsFailureMechanismView.cs
+
UserControl
@@ -109,6 +116,21 @@
Core.Common.Utils
False
+
+ {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a}
+ Core.Components.DotSpatial.Forms
+ False
+
+
+ {4A06DF0D-5D75-4BAD-A95A-A3DB9B7C4AD5}
+ Core.Components.Gis.Forms
+ False
+
+
+ {318BA582-88C9-4816-A54A-A7E431461DE3}
+ Core.Components.Gis
+ False
+
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}
Ringtoets.Common.Data
@@ -156,6 +178,9 @@
Resources.Designer.cs
Designer
+
+ GrassCoverErosionInwardsFailureMechanismView.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs
===================================================================
diff -u -r5a19c1544d732696d84f24877303cdfb19122bc7 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision 5a19c1544d732696d84f24877303cdfb19122bc7)
+++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -94,6 +94,14 @@
public override IEnumerable GetViewInfos()
{
+ yield return new ViewInfo
+ {
+ GetViewName = (view, mechanism) => mechanism.WrappedData.Name,
+ Image = RingtoetsCommonFormsResources.CalculationIcon,
+ CloseForData = CloseGrassCoverErosionOutwardsFailureMechanismViewForData,
+ AdditionalDataCheck = context => context.WrappedData.IsRelevant
+ };
+
yield return new ViewInfo<
FailureMechanismSectionResultContext,
IEnumerable,
@@ -202,18 +210,18 @@
yield return new TreeNodeInfo
{
- Text = emptyPipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
- Image = emptyPipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
- ForeColor = emptyPipingOutput => Color.FromKnownColor(KnownColor.GrayText),
+ Text = emptyOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
+ Image = emptyOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
+ ForeColor = emptyOutput => Color.FromKnownColor(KnownColor.GrayText),
ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl)
.AddPropertiesItem()
.Build()
};
yield return new TreeNodeInfo
{
- Text = emptyPipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
- Image = emptyPipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
+ Text = emptyOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
+ Image = emptyOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl)
.AddPropertiesItem()
.Build()
@@ -292,6 +300,23 @@
#region ViewInfos
+ # region GrassCoverErosionOutwardsFailureMechanismView ViewInfo
+
+ private bool CloseGrassCoverErosionOutwardsFailureMechanismViewForData(GrassCoverErosionOutwardsFailureMechanismView view, object o)
+ {
+ var assessmentSection = o as IAssessmentSection;
+ var failureMechanism = o as GrassCoverErosionOutwardsFailureMechanism;
+
+ var viewFailureMechanismContext = (GrassCoverErosionOutwardsFailureMechanismContext)view.Data;
+ var viewFailureMechanism = viewFailureMechanismContext.WrappedData;
+
+ return assessmentSection != null
+ ? ReferenceEquals(viewFailureMechanismContext.Parent, assessmentSection)
+ : ReferenceEquals(viewFailureMechanism, failureMechanism);
+ }
+
+ # endregion
+
#region GrassCoverErosionOutwardsFailureMechanismResultView ViewInfo
private static bool CloseFailureMechanismResultViewForData(GrassCoverErosionOutwardsFailureMechanismResultView view, object o)
@@ -405,8 +430,10 @@
{
var builder = new RingtoetsContextMenuBuilder(Gui.Get(grassCoverErosionOutwardsFailureMechanismContext, treeViewControl));
- return builder.AddToggleRelevancyOfFailureMechanismItem(grassCoverErosionOutwardsFailureMechanismContext, RemoveAllViewsForItem)
+ return builder.AddOpenItem()
.AddSeparator()
+ .AddToggleRelevancyOfFailureMechanismItem(grassCoverErosionOutwardsFailureMechanismContext, RemoveAllViewsForItem)
+ .AddSeparator()
.AddExpandAllItem()
.AddCollapseAllItem()
.AddSeparator()
Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/Ringtoets.GrassCoverErosionOutwards.Plugin.csproj
===================================================================
diff -u -rbc4c4000ca4a850b49a88156ca2b919ea690494b -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/Ringtoets.GrassCoverErosionOutwards.Plugin.csproj (.../Ringtoets.GrassCoverErosionOutwards.Plugin.csproj) (revision bc4c4000ca4a850b49a88156ca2b919ea690494b)
+++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/Ringtoets.GrassCoverErosionOutwards.Plugin.csproj (.../Ringtoets.GrassCoverErosionOutwards.Plugin.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -80,6 +80,11 @@
Core.Common.Gui
False
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+ False
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Ringtoets.GrassCoverErosionOutwards.Forms.Test.csproj
===================================================================
diff -u -r98f01944e8ac182e2a1e9b1ed4deb48a07952529 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Ringtoets.GrassCoverErosionOutwards.Forms.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.Forms.Test.csproj) (revision 98f01944e8ac182e2a1e9b1ed4deb48a07952529)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Ringtoets.GrassCoverErosionOutwards.Forms.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.Forms.Test.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -99,6 +99,7 @@
+
@@ -139,6 +140,18 @@
{D749EE4C-CE50-4C17-BF01-9A953028C126}
Core.Common.TestUtil
+
+ {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a}
+ Core.Components.DotSpatial.Forms
+
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+
+
+ {318ba582-88c9-4816-a54a-a7e431461de3}
+ Core.Components.Gis
+
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}
Ringtoets.Common.Data
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/TreeNodeInfos/GrassCoverErosionOutwardsFailureMechanismContextTreeNodeInfoTest.cs
===================================================================
diff -u -rb5accd775c390fa85f815ef13c3c3e54a6d10ada -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/TreeNodeInfos/GrassCoverErosionOutwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionOutwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision b5accd775c390fa85f815ef13c3c3e54a6d10ada)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/TreeNodeInfos/GrassCoverErosionOutwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionOutwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -44,7 +44,7 @@
[TestFixture]
public class GrassCoverErosionOutwardsFailureMechanismContextTreeNodeInfoTest
{
- private const int contextMenuRelevancyIndexWhenRelevant = 0;
+ private const int contextMenuRelevancyIndexWhenRelevant = 2;
private const int contextMenuRelevancyIndexWhenNotRelevant = 0;
private MockRepository mocks;
private GrassCoverErosionOutwardsPlugin plugin;
@@ -256,6 +256,8 @@
assessmentSection);
var menuBuilder = mocks.StrictMock();
+ menuBuilder.Expect(mb => mb.AddOpenItem()).Return(menuBuilder);
+ menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder);
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsFailureMechanismViewTest.cs
===================================================================
diff -u
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsFailureMechanismViewTest.cs (revision 0)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsFailureMechanismViewTest.cs (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -0,0 +1,628 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// 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;
+using Core.Common.Base;
+using Core.Common.Base.Geometry;
+using Core.Components.DotSpatial.Forms;
+using Core.Components.Gis.Data;
+using Core.Components.Gis.Forms;
+using NUnit.Framework;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Data.Contribution;
+using Ringtoets.Common.Data.DikeProfiles;
+using Ringtoets.Common.Data.FailureMechanism;
+using Ringtoets.Common.Data.TestUtil;
+using Ringtoets.HydraRing.Data;
+using Ringtoets.GrassCoverErosionOutwards.Data;
+using Ringtoets.GrassCoverErosionOutwards.Forms.PresentationObjects;
+using Ringtoets.GrassCoverErosionOutwards.Forms.Views;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources;
+using GrassCoverErosionOutwardsDataResources = Ringtoets.GrassCoverErosionOutwards.Data.Properties.Resources;
+using GrassCoverErosionOutwardsFormsResources = Ringtoets.GrassCoverErosionOutwards.Forms.Properties.Resources;
+
+namespace Ringtoets.GrassCoverErosionOutwards.Forms.Test.Views
+{
+ [TestFixture]
+ public class GrassCoverErosionOutwardsFailureMechanismViewTest
+ {
+ private const int referenceLineIndex = 0;
+ private const int sectionsIndex = 1;
+ private const int sectionsStartPointIndex = 2;
+ private const int sectionsEndPointIndex = 3;
+ private const int hydraulicBoundaryDatabaseIndex = 4;
+ private const int foreshoreProfilesIndex = 5;
+
+ [Test]
+ public void DefaultConstructor_DefaultValues()
+ {
+ // Call
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ // Assert
+ Assert.IsInstanceOf(view);
+ Assert.IsInstanceOf(view);
+ Assert.IsNotNull(view.Map);
+ Assert.IsNull(view.Data);
+ }
+ }
+
+ [Test]
+ public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData()
+ {
+ // Call
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ // Assert
+ Assert.AreEqual(1, view.Controls.Count);
+ Assert.AreSame(view.Map, view.Controls[0]);
+ Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock);
+ Assert.AreEqual(GrassCoverErosionOutwardsDataResources.GrassCoverErosionOutwardsFailureMechanism_DisplayName, view.Map.Data.Name);
+ AssertEmptyMapData(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_GrassCoverErosionOutwardsFailureMechanismContext_DataSet()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), new TestAssessmentSection());
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+ }
+ }
+
+ [Test]
+ public void Data_OtherThanGrassCoverErosionOutwardsFailureMechanismContext_DataNull()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var data = new object();
+
+ // Call
+ view.Data = data;
+
+ // Assert
+ Assert.IsNull(view.Data);
+ }
+ }
+
+ [Test]
+ public void Data_SetToNull_MapDataCleared()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), new TestAssessmentSection());
+
+ view.Data = failureMechanismContext;
+
+ // Precondition
+ Assert.AreEqual(6, view.Map.Data.Collection.Count());
+
+ // Call
+ view.Data = null;
+
+ // Assert
+ Assert.IsNull(view.Data);
+ Assert.IsNull(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_EmptyGrassCoverErosionOutwardsFailureMechanismContext_NoMapDataSet()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), new TestAssessmentSection());
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+ AssertEmptyMapData(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_GrassCoverErosionOutwardsFailureMechanismContext_DataUpdatedToCollectionOfFilledMapData()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var geometryPoints = new[]
+ {
+ new Point2D(0.0, 0.0),
+ new Point2D(2.0, 0.0),
+ new Point2D(4.0, 4.0),
+ new Point2D(6.0, 4.0)
+ };
+
+ var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
+ hydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(1, "test", 1.0, 2.0));
+
+ var referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(new[]
+ {
+ new Point2D(1.0, 2.0),
+ new Point2D(2.0, 1.0)
+ });
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ HydraulicBoundaryDatabase = hydraulicBoundaryDatabase,
+ ReferenceLine = referenceLine
+ };
+
+ var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
+
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(failureMechanism, assessmentSection);
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+
+ var mapData = map.Data;
+ Assert.IsInstanceOf(mapData);
+
+ var mapDataList = mapData.Collection.ToList();
+ Assert.AreEqual(6, mapDataList.Count);
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, mapDataList[sectionsIndex]);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
+ AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase, mapDataList[hydraulicBoundaryDatabaseIndex]);
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, mapDataList[foreshoreProfilesIndex]);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_HydraulicBoundaryDatabaseUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var hydraulicBoundaryDatabase1 = new HydraulicBoundaryDatabase
+ {
+ Locations =
+ {
+ new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0)
+ }
+ };
+ var hydraulicBoundaryDatabase2 = new HydraulicBoundaryDatabase
+ {
+ Locations =
+ {
+ new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)
+ }
+ };
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ HydraulicBoundaryDatabase = hydraulicBoundaryDatabase1
+ };
+
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var hydraulicBoundaryDatabaseMapData = map.Data.Collection.ElementAt(hydraulicBoundaryDatabaseIndex);
+
+ // Precondition
+ AssertHydraulicBoundaryLocationsMapData(hydraulicBoundaryDatabase1, hydraulicBoundaryDatabaseMapData);
+
+ // Call
+ assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase2;
+ assessmentSection.NotifyObservers();
+
+ // Assert
+ AssertHydraulicBoundaryLocationsMapData(hydraulicBoundaryDatabase2, hydraulicBoundaryDatabaseMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_ReferenceLineUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var points1 = new List
+ {
+ new Point2D(1.0, 2.0),
+ new Point2D(2.0, 1.0)
+ };
+
+ var points2 = new List
+ {
+ new Point2D(2.0, 5.0),
+ new Point2D(4.0, 3.0)
+ };
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ ReferenceLine = new ReferenceLine()
+ };
+ assessmentSection.ReferenceLine.SetGeometry(points1);
+
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex);
+
+ // Precondition
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);
+
+ // Call
+ assessmentSection.ReferenceLine.SetGeometry(points2);
+ assessmentSection.NotifyObservers();
+
+ // Assert
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_FailureMechanismSectionsUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ view.Data = failureMechanismContext;
+
+ var sectionMapData = (MapLineData)map.Data.Collection.ElementAt(sectionsIndex);
+ var sectionStartsMapData = (MapPointData)map.Data.Collection.ElementAt(sectionsStartPointIndex);
+ var sectionsEndsMapData = (MapPointData)map.Data.Collection.ElementAt(sectionsEndPointIndex);
+
+ // Call
+ failureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
+ {
+ new Point2D(1, 2),
+ new Point2D(1, 2)
+ }));
+ failureMechanism.NotifyObservers();
+
+ // Assert
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionMapData);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionStartsMapData);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsEndsMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_ForeshoreProfilesUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+
+ view.Data = failureMechanismContext;
+
+ var foreshoreProfileData = map.Data.Collection.ElementAt(foreshoreProfilesIndex);
+
+ // Precondition
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, foreshoreProfileData);
+
+ // Call
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+ failureMechanism.ForeshoreProfiles.NotifyObservers();
+
+ // Assert
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, foreshoreProfileData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_DataUpdated_MapLayersSameOrder()
+ {
+ // Setup
+ const int updatedRefenceLineLayerIndex = referenceLineIndex + 5;
+ const int updatedSectionsLayerIndex = sectionsIndex - 1;
+ const int updateSectionStartLayerIndex = sectionsStartPointIndex - 1;
+ const int updatedSectionEndLayerIndex = sectionsEndPointIndex - 1;
+ const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryDatabaseIndex - 1;
+ const int updatedForeshoreProfilesLayerIndex = foreshoreProfilesIndex - 1;
+
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var assessmentSection = new TestAssessmentSection();
+ var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var failureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(failureMechanism, assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var mapData = map.Data;
+
+ var dataToMove = (MapLineData)map.Data.Collection.ElementAt(referenceLineIndex);
+ mapData.Remove(dataToMove);
+ mapData.Add(dataToMove);
+
+ var mapDataList = mapData.Collection.ToList();
+
+ // Precondition
+ var referenceLineData = (MapLineData)mapDataList[updatedRefenceLineLayerIndex];
+ Assert.AreEqual("Referentielijn", referenceLineData.Name);
+
+ var sectionsData = (MapLineData)mapDataList[updatedSectionsLayerIndex];
+ Assert.AreEqual("Vakindeling", sectionsData.Name);
+
+ var sectionStartsData = (MapPointData)mapDataList[updateSectionStartLayerIndex];
+ Assert.AreEqual("Vakindeling (startpunten)", sectionStartsData.Name);
+
+ var sectionEndsData = (MapPointData)mapDataList[updatedSectionEndLayerIndex];
+ Assert.AreEqual("Vakindeling (eindpunten)", sectionEndsData.Name);
+
+ var hydraulicLocationsData = (MapPointData)mapDataList[updatedHydraulicLocationsLayerIndex];
+ Assert.AreEqual("Hydraulische randvoorwaarden", hydraulicLocationsData.Name);
+
+ var foreshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", foreshoreProfilesData.Name);
+
+ var points = new List
+ {
+ new Point2D(2.0, 5.0),
+ new Point2D(4.0, 3.0)
+ };
+ ReferenceLine referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(points);
+ assessmentSection.ReferenceLine = referenceLine;
+
+ // Call
+ assessmentSection.NotifyObservers();
+
+ // Call
+ var actualReferenceLineData = (MapLineData)mapDataList[updatedRefenceLineLayerIndex];
+ Assert.AreEqual("Referentielijn", actualReferenceLineData.Name);
+
+ var actualSectionsData = (MapLineData)mapDataList[updatedSectionsLayerIndex];
+ Assert.AreEqual("Vakindeling", actualSectionsData.Name);
+
+ var actualSectionStartsData = (MapPointData)mapDataList[updateSectionStartLayerIndex];
+ Assert.AreEqual("Vakindeling (startpunten)", actualSectionStartsData.Name);
+
+ var actualSectionEndsData = (MapPointData)mapDataList[updatedSectionEndLayerIndex];
+ Assert.AreEqual("Vakindeling (eindpunten)", actualSectionEndsData.Name);
+
+ var actualHydraulicLocationsData = (MapPointData)mapDataList[updatedHydraulicLocationsLayerIndex];
+ Assert.AreEqual("Hydraulische randvoorwaarden", actualHydraulicLocationsData.Name);
+
+ var actualForeshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", actualForeshoreProfilesData.Name);
+ }
+ }
+
+ [Test]
+ public void NotifyObservers_DataUpdatedNotifyObserversOnOldData_NoUpdateInViewData()
+ {
+ // Setup
+ IAssessmentSection oldAssessmentSection = new TestAssessmentSection();
+ IAssessmentSection newAssessmentSection = new TestAssessmentSection();
+
+ newAssessmentSection.ReferenceLine = new ReferenceLine();
+ newAssessmentSection.ReferenceLine.SetGeometry(new[]
+ {
+ new Point2D(2, 4),
+ new Point2D(3, 4)
+ });
+
+ var oldGrassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), oldAssessmentSection);
+ var newGrassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(new GrassCoverErosionOutwardsFailureMechanism(), newAssessmentSection);
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ view.Data = oldGrassCoverErosionOutwardsFailureMechanismContext;
+ view.Data = newGrassCoverErosionOutwardsFailureMechanismContext;
+ MapData dataBeforeUpdate = map.Data;
+
+ newAssessmentSection.ReferenceLine.SetGeometry(Enumerable.Empty());
+
+ // Call
+ oldAssessmentSection.NotifyObservers();
+
+ // Assert
+ Assert.AreEqual(dataBeforeUpdate, map.Data);
+ }
+ }
+
+ private static void AssertReferenceLineMapData(ReferenceLine referenceLine, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var referenceLineData = (MapLineData)mapData;
+ if (referenceLine == null)
+ {
+ CollectionAssert.IsEmpty(referenceLineData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ else
+ {
+ CollectionAssert.AreEqual(referenceLine.Points, referenceLineData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ Assert.AreEqual("Referentielijn", mapData.Name);
+ }
+
+ private static void AssertForeshoreProfiles(IEnumerable foreshoreProfiles, MapData mapData)
+ {
+ Assert.NotNull(foreshoreProfiles, "foreshoreProfiles should never be null.");
+
+ var foreshoreProfilesData = (MapLineData)mapData;
+ var foreshoreProfileArray = foreshoreProfiles.ToArray();
+
+ Assert.IsInstanceOf(mapData);
+ Assert.AreEqual(foreshoreProfileArray.Length, foreshoreProfilesData.Features.Length);
+
+ for (int i = 0; i < foreshoreProfileArray.Length; i++)
+ {
+ var profileDataA = foreshoreProfilesData.Features.ElementAt(i).MapGeometries.First();
+ CollectionAssert.AreEquivalent(foreshoreProfileArray[0].Geometry, profileDataA.PointCollections.First());
+ }
+
+ Assert.AreEqual("Voorlandprofielen", mapData.Name);
+ }
+
+ private static void AssertHydraulicBoundaryLocationsMapData(HydraulicBoundaryDatabase database, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var hydraulicLocationsMapData = (MapPointData)mapData;
+ if (database == null)
+ {
+ CollectionAssert.IsEmpty(hydraulicLocationsMapData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ else
+ {
+ CollectionAssert.AreEqual(database.Locations.Select(hrp => hrp.Location), hydraulicLocationsMapData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ Assert.AreEqual("Hydraulische randvoorwaarden", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsMapLinesData = (MapLineData)mapData;
+ var sectionMapLinesFeatures = sectionsMapLinesData.Features.ToArray();
+ Assert.AreEqual(1, sectionMapLinesFeatures.Length);
+
+ var geometries = sectionMapLinesFeatures.First().MapGeometries.ToArray();
+ var sectionsArray = sections.ToArray();
+ Assert.AreEqual(sectionsArray.Length, geometries.Length);
+
+ for (int index = 0; index < sectionsArray.Length; index++)
+ {
+ var failureMechanismSection = sectionsArray[index];
+ CollectionAssert.AreEquivalent(failureMechanismSection.Points, geometries[index].PointCollections.First());
+ }
+ Assert.AreEqual("Vakindeling", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsStartPointMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsStartPointData = (MapPointData)mapData;
+ CollectionAssert.AreEqual(sections.Select(s => s.GetStart()), sectionsStartPointData.Features.First().MapGeometries.First().PointCollections.First());
+ Assert.AreEqual("Vakindeling (startpunten)", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsEndPointMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsStartPointData = (MapPointData)mapData;
+ CollectionAssert.AreEqual(sections.Select(s => s.GetLast()), sectionsStartPointData.Features.First().MapGeometries.First().PointCollections.First());
+ Assert.AreEqual("Vakindeling (eindpunten)", mapData.Name);
+ }
+
+ private static void AssertEmptyMapData(MapDataCollection mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+
+ var mapDataList = mapData.Collection.ToList();
+
+ Assert.AreEqual(6, mapDataList.Count);
+
+ var referenceLineMapData = (MapLineData)mapDataList[referenceLineIndex];
+ var sectionsMapData = (MapLineData)mapDataList[sectionsIndex];
+ var foreshoreProfilesMapData = (MapLineData)mapDataList[foreshoreProfilesIndex];
+ var sectionsStartPointMapData = (MapPointData)mapDataList[sectionsStartPointIndex];
+ var sectionsEndPointMapData = (MapPointData)mapDataList[sectionsEndPointIndex];
+ var hydraulicBoundaryDatabaseMapData = (MapPointData)mapDataList[hydraulicBoundaryDatabaseIndex];
+
+ CollectionAssert.IsEmpty(referenceLineMapData.Features);
+ CollectionAssert.IsEmpty(sectionsMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
+ CollectionAssert.IsEmpty(sectionsStartPointMapData.Features);
+ CollectionAssert.IsEmpty(sectionsEndPointMapData.Features);
+ CollectionAssert.IsEmpty(hydraulicBoundaryDatabaseMapData.Features);
+
+ Assert.AreEqual(RingtoetsCommonDataResources.ReferenceLine_DisplayName, referenceLineMapData.Name);
+ Assert.AreEqual(RingtoetsCommonFormsResources.FailureMechanism_Sections_DisplayName, sectionsMapData.Name);
+ Assert.AreEqual(GetSectionPointDisplayName(RingtoetsCommonFormsResources.FailureMechanismSections_StartPoints_DisplayName), sectionsStartPointMapData.Name);
+ Assert.AreEqual(GetSectionPointDisplayName(RingtoetsCommonFormsResources.FailureMechanismSections_EndPoints_DisplayName), sectionsEndPointMapData.Name);
+ Assert.AreEqual(RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName, hydraulicBoundaryDatabaseMapData.Name);
+ }
+
+ private static string GetSectionPointDisplayName(string name)
+ {
+ return string.Format("{0} ({1})",
+ RingtoetsCommonFormsResources.FailureMechanism_Sections_DisplayName,
+ name);
+ }
+
+ private class TestAssessmentSection : Observable, IAssessmentSection
+ {
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public string Comments { get; set; }
+ public AssessmentSectionComposition Composition { get; private set; }
+ public ReferenceLine ReferenceLine { get; set; }
+ public FailureMechanismContribution FailureMechanismContribution { get; private set; }
+ public HydraulicBoundaryDatabase HydraulicBoundaryDatabase { get; set; }
+
+ public IEnumerable GetFailureMechanisms()
+ {
+ yield break;
+ }
+
+ public void ChangeComposition(AssessmentSectionComposition newComposition)
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/GrassCoverErosionOutwardsPluginTest.cs
===================================================================
diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/GrassCoverErosionOutwardsPluginTest.cs (.../GrassCoverErosionOutwardsPluginTest.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/GrassCoverErosionOutwardsPluginTest.cs (.../GrassCoverErosionOutwardsPluginTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -60,10 +60,15 @@
ViewInfo[] viewInfos = plugin.GetViewInfos().ToArray();
// Assert
- Assert.AreEqual(3, viewInfos.Length);
+ Assert.AreEqual(4, viewInfos.Length);
PluginTestHelper.AssertViewInfoDefined(
viewInfos,
+ typeof(GrassCoverErosionOutwardsFailureMechanismContext),
+ typeof(GrassCoverErosionOutwardsFailureMechanismView));
+
+ PluginTestHelper.AssertViewInfoDefined(
+ viewInfos,
typeof(FailureMechanismSectionResultContext),
typeof(IEnumerable),
typeof(GrassCoverErosionOutwardsFailureMechanismResultView));
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test.csproj
===================================================================
diff -u -r2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.Plugin.Test.csproj) (revision 2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.Plugin.Test.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -58,6 +58,7 @@
+
@@ -92,6 +93,10 @@
{D749EE4C-CE50-4C17-BF01-9A953028C126}
Core.Common.TestUtil
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}
Ringtoets.Common.Data
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/ViewInfos/GrassCoverErosionOutwardsFailureMechanismViewInfoTest.cs
===================================================================
diff -u
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/ViewInfos/GrassCoverErosionOutwardsFailureMechanismViewInfoTest.cs (revision 0)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Plugin.Test/ViewInfos/GrassCoverErosionOutwardsFailureMechanismViewInfoTest.cs (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -0,0 +1,210 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Linq;
+using Core.Common.Gui.Plugin;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.GrassCoverErosionOutwards.Data;
+using Ringtoets.GrassCoverErosionOutwards.Forms.PresentationObjects;
+using Ringtoets.GrassCoverErosionOutwards.Forms.Views;
+using GrassCoverErosionOutwardsDataResources = Ringtoets.GrassCoverErosionOutwards.Data.Properties.Resources;
+using GrassCoverErosionOutwardsFormsResources = Ringtoets.GrassCoverErosionOutwards.Forms.Properties.Resources;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+
+namespace Ringtoets.GrassCoverErosionOutwards.Plugin.Test.ViewInfos
+{
+ [TestFixture]
+ public class GrassCoverErosionOutwardsFailureMechanismViewInfoTest
+ {
+ private MockRepository mocks;
+ private GrassCoverErosionOutwardsPlugin plugin;
+ private ViewInfo info;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mocks = new MockRepository();
+ plugin = new GrassCoverErosionOutwardsPlugin();
+ info = plugin.GetViewInfos().First(tni => tni.ViewType == typeof(GrassCoverErosionOutwardsFailureMechanismView));
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ plugin.Dispose();
+ }
+
+ [Test]
+ public void Initialized_Always_ExpectedPropertiesSet()
+ {
+ // Assert
+ Assert.AreEqual(typeof(GrassCoverErosionOutwardsFailureMechanismContext), info.DataType);
+ Assert.AreEqual(typeof(GrassCoverErosionOutwardsFailureMechanismContext), info.ViewDataType);
+ TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.CalculationIcon, info.Image);
+ }
+
+ [Test]
+ public void GetViewName_WithGrassCoverErosionOutwardsFailureMechanism_ReturnsNameOfFailureMechanism()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var grassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(grassCoverErosionOutwardsFailureMechanism, assessmentSectionMock);
+
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView())
+ {
+ // Call
+ string viewName = info.GetViewName(view, grassCoverErosionOutwardsFailureMechanismContext);
+
+ // Assert
+ Assert.AreEqual(grassCoverErosionOutwardsFailureMechanism.Name, viewName);
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ var otherAssessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var grassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(grassCoverErosionOutwardsFailureMechanism, assessmentSectionMock);
+
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView
+ {
+ Data = grassCoverErosionOutwardsFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, otherAssessmentSectionMock);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var grassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(grassCoverErosionOutwardsFailureMechanism, assessmentSectionMock);
+
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView
+ {
+ Data = grassCoverErosionOutwardsFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSectionMock);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var otherGrassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+
+ var grassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(grassCoverErosionOutwardsFailureMechanism, assessmentSectionMock);
+
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView
+ {
+ Data = grassCoverErosionOutwardsFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, otherGrassCoverErosionOutwardsFailureMechanism);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism();
+ var grassCoverErosionOutwardsFailureMechanismContext = new GrassCoverErosionOutwardsFailureMechanismContext(grassCoverErosionOutwardsFailureMechanism, assessmentSectionMock);
+
+ using (var view = new GrassCoverErosionOutwardsFailureMechanismView
+ {
+ Data = grassCoverErosionOutwardsFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, grassCoverErosionOutwardsFailureMechanism);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public void AdditionalDataCheck_Always_ReturnTrueOnlyIfFailureMechanismRelevant(bool isRelevant)
+ {
+ // Setup
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism
+ {
+ IsRelevant = isRelevant
+ };
+
+ var context = new GrassCoverErosionOutwardsFailureMechanismContext(failureMechanism, assessmentSection);
+
+ // Call
+ bool result = info.AdditionalDataCheck(context);
+
+ // Assert
+ Assert.AreEqual(isRelevant, result);
+ mocks.VerifyAll();
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs
===================================================================
diff -u -r7641c0e215cd2e90a9b1828778906cfee05ff592 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision 7641c0e215cd2e90a9b1828778906cfee05ff592)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismViewTest.cs (.../PipingFailureMechanismViewTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -91,13 +91,13 @@
// Setup
using (var view = new PipingFailureMechanismView())
{
- var pipingFailureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), new TestAssessmentSection());
+ var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), new TestAssessmentSection());
// Call
- view.Data = pipingFailureMechanismContext;
+ view.Data = failureMechanismContext;
// Assert
- Assert.AreSame(pipingFailureMechanismContext, view.Data);
+ Assert.AreSame(failureMechanismContext, view.Data);
}
}
@@ -123,9 +123,9 @@
// Setup
using (var view = new PipingFailureMechanismView())
{
- var pipingFailureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), new TestAssessmentSection());
+ var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), new TestAssessmentSection());
- view.Data = pipingFailureMechanismContext;
+ view.Data = failureMechanismContext;
// Precondition
Assert.AreEqual(7, view.Map.Data.Collection.Count());
@@ -145,13 +145,13 @@
// Setup
using (var view = new PipingFailureMechanismView())
{
- var pipingFailureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), new TestAssessmentSection());
+ var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), new TestAssessmentSection());
// Call
- view.Data = pipingFailureMechanismContext;
+ view.Data = failureMechanismContext;
// Assert
- Assert.AreSame(pipingFailureMechanismContext, view.Data);
+ Assert.AreSame(failureMechanismContext, view.Data);
AssertEmptyMapData(view.Map.Data);
}
}
@@ -195,33 +195,33 @@
new Point2D(1.1, 2.2)
});
- var pipingFailureMechanism = new PipingFailureMechanism();
- pipingFailureMechanism.SurfaceLines.Add(new RingtoetsPipingSurfaceLine());
- pipingFailureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
- pipingFailureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
- pipingFailureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
- pipingFailureMechanism.StochasticSoilModels.Add(stochasticSoilModel);
+ var failureMechanism = new PipingFailureMechanism();
+ failureMechanism.SurfaceLines.Add(new RingtoetsPipingSurfaceLine());
+ failureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
+ failureMechanism.StochasticSoilModels.Add(stochasticSoilModel);
- var pipingContext = new PipingFailureMechanismContext(pipingFailureMechanism, assessmentSection);
+ var failureMechanismContext = new PipingFailureMechanismContext(failureMechanism, assessmentSection);
// Call
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
// Assert
- Assert.AreSame(pipingContext, view.Data);
+ Assert.AreSame(failureMechanismContext, view.Data);
var mapData = map.Data;
Assert.IsInstanceOf(mapData);
var mapDataList = mapData.Collection.ToList();
Assert.AreEqual(7, mapDataList.Count);
AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
- AssertSurfacelinesMapData(pipingFailureMechanism.SurfaceLines, mapDataList[surfaceLinesIndex]);
- AssertFailureMechanismSectionsMapData(pipingFailureMechanism.Sections, mapDataList[sectionsIndex]);
- AssertFailureMechanismSectionsStartPointMapData(pipingFailureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
- AssertFailureMechanismSectionsEndPointMapData(pipingFailureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
+ AssertSurfacelinesMapData(failureMechanism.SurfaceLines, mapDataList[surfaceLinesIndex]);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, mapDataList[sectionsIndex]);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase, mapDataList[hydraulicBoundaryDatabaseIndex]);
- AssertStochasticSoilModelsMapData(pipingFailureMechanism.StochasticSoilModels, mapDataList[stochasticSoilModelsIndex]);
+ AssertStochasticSoilModelsMapData(failureMechanism.StochasticSoilModels, mapDataList[stochasticSoilModelsIndex]);
}
}
@@ -253,9 +253,9 @@
HydraulicBoundaryDatabase = hydraulicBoundaryDatabase1
};
- var pipingContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection);
+ var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection);
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
var hydraulicBoundaryDatabaseMapData = map.Data.Collection.ElementAt(hydraulicBoundaryDatabaseIndex);
@@ -297,9 +297,9 @@
};
assessmentSection.ReferenceLine.SetGeometry(points1);
- var pipingContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection);
+ var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection);
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
var referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex);
@@ -322,8 +322,8 @@
using (var view = new PipingFailureMechanismView())
{
var map = (MapControl) view.Controls[0];
- var pipingFailureMechanism = new PipingFailureMechanism();
- var pipingContext = new PipingFailureMechanismContext(pipingFailureMechanism, new TestAssessmentSection());
+ var failureMechanism = new PipingFailureMechanism();
+ var failureMechanismContext = new PipingFailureMechanismContext(failureMechanism, new TestAssessmentSection());
var surfaceLine = new RingtoetsPipingSurfaceLine();
var geometry1 = new Collection
@@ -334,16 +334,16 @@
surfaceLine.SetGeometry(geometry1);
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
var surfaceLineMapData = (MapLineData) map.Data.Collection.ElementAt(surfaceLinesIndex);
// Call
- pipingFailureMechanism.SurfaceLines.Add(surfaceLine);
- pipingFailureMechanism.SurfaceLines.NotifyObservers();
+ failureMechanism.SurfaceLines.Add(surfaceLine);
+ failureMechanism.SurfaceLines.NotifyObservers();
// Assert
- AssertSurfacelinesMapData(pipingFailureMechanism.SurfaceLines, surfaceLineMapData);
+ AssertSurfacelinesMapData(failureMechanism.SurfaceLines, surfaceLineMapData);
}
}
@@ -355,27 +355,27 @@
{
var map = (MapControl) view.Controls[0];
- var pipingFailureMechanism = new PipingFailureMechanism();
- var pipingContext = new PipingFailureMechanismContext(pipingFailureMechanism, new TestAssessmentSection());
+ var failureMechanism = new PipingFailureMechanism();
+ var failureMechanismContext = new PipingFailureMechanismContext(failureMechanism, new TestAssessmentSection());
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
var sectionMapData = (MapLineData) map.Data.Collection.ElementAt(sectionsIndex);
var sectionStartsMapData = (MapPointData) map.Data.Collection.ElementAt(sectionsStartPointIndex);
var sectionsEndsMapData = (MapPointData) map.Data.Collection.ElementAt(sectionsEndPointIndex);
// Call
- pipingFailureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
+ failureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
{
new Point2D(1, 2),
new Point2D(1, 2)
}));
- pipingFailureMechanism.NotifyObservers();
+ failureMechanism.NotifyObservers();
// Assert
- AssertFailureMechanismSectionsMapData(pipingFailureMechanism.Sections, sectionMapData);
- AssertFailureMechanismSectionsStartPointMapData(pipingFailureMechanism.Sections, sectionStartsMapData);
- AssertFailureMechanismSectionsEndPointMapData(pipingFailureMechanism.Sections, sectionsEndsMapData);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionMapData);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionStartsMapData);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsEndsMapData);
}
}
@@ -387,8 +387,8 @@
{
var map = (MapControl) view.Controls[0];
- var pipingFailureMechanism = new PipingFailureMechanism();
- var pipingContext = new PipingFailureMechanismContext(pipingFailureMechanism, new TestAssessmentSection());
+ var failureMechanism = new PipingFailureMechanism();
+ var failureMechanismContext = new PipingFailureMechanismContext(failureMechanism, new TestAssessmentSection());
var stochasticSoilModel = new StochasticSoilModel(0, "", "");
stochasticSoilModel.Geometry.AddRange(new[]
@@ -397,16 +397,16 @@
new Point2D(1, 2)
});
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
var stochasticSoilModelMapData = (MapLineData) map.Data.Collection.ElementAt(stochasticSoilModelsIndex);
// Call
- pipingFailureMechanism.StochasticSoilModels.Add(stochasticSoilModel);
- pipingFailureMechanism.StochasticSoilModels.NotifyObservers();
+ failureMechanism.StochasticSoilModels.Add(stochasticSoilModel);
+ failureMechanism.StochasticSoilModels.NotifyObservers();
// Assert
- AssertStochasticSoilModelsMapData(pipingFailureMechanism.StochasticSoilModels, stochasticSoilModelMapData);
+ AssertStochasticSoilModelsMapData(failureMechanism.StochasticSoilModels, stochasticSoilModelMapData);
}
}
@@ -427,10 +427,10 @@
var map = (MapControl) view.Controls[0];
var assessmentSection = new TestAssessmentSection();
- var pipingFailureMechanism = new PipingFailureMechanism();
- var pipingContext = new PipingFailureMechanismContext(pipingFailureMechanism, assessmentSection);
+ var failureMechanism = new PipingFailureMechanism();
+ var failureMechanismContext = new PipingFailureMechanismContext(failureMechanism, assessmentSection);
- view.Data = pipingContext;
+ view.Data = failureMechanismContext;
var mapData = map.Data;
Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Ringtoets.StabilityStoneCover.Forms.csproj
===================================================================
diff -u -rbc4c4000ca4a850b49a88156ca2b919ea690494b -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Ringtoets.StabilityStoneCover.Forms.csproj (.../Ringtoets.StabilityStoneCover.Forms.csproj) (revision bc4c4000ca4a850b49a88156ca2b919ea690494b)
+++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Ringtoets.StabilityStoneCover.Forms.csproj (.../Ringtoets.StabilityStoneCover.Forms.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -34,6 +34,7 @@
+
@@ -56,6 +57,12 @@
+
+ UserControl
+
+
+ StabilityStoneCoverFailureMechanismView.cs
+
UserControl
@@ -87,6 +94,21 @@
Core.Common.Utils
False
+
+ {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a}
+ Core.Components.DotSpatial.Forms
+ False
+
+
+ {4A06DF0D-5D75-4BAD-A95A-A3DB9B7C4AD5}
+ Core.Components.Gis.Forms
+ False
+
+
+ {318BA582-88C9-4816-A54A-A7E431461DE3}
+ Core.Components.Gis
+ False
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
@@ -124,6 +146,9 @@
Resources.Designer.cs
Designer
+
+ StabilityStoneCoverFailureMechanismView.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/Ringtoets.StabilityStoneCover.Plugin.csproj
===================================================================
diff -u -rbc4c4000ca4a850b49a88156ca2b919ea690494b -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/Ringtoets.StabilityStoneCover.Plugin.csproj (.../Ringtoets.StabilityStoneCover.Plugin.csproj) (revision bc4c4000ca4a850b49a88156ca2b919ea690494b)
+++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/Ringtoets.StabilityStoneCover.Plugin.csproj (.../Ringtoets.StabilityStoneCover.Plugin.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -70,6 +70,11 @@
Core.Common.Gui
False
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+ False
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/StabilityStoneCoverPlugin.cs
===================================================================
diff -u -rb5accd775c390fa85f815ef13c3c3e54a6d10ada -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/StabilityStoneCoverPlugin.cs (.../StabilityStoneCoverPlugin.cs) (revision b5accd775c390fa85f815ef13c3c3e54a6d10ada)
+++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/StabilityStoneCoverPlugin.cs (.../StabilityStoneCoverPlugin.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -69,6 +69,14 @@
public override IEnumerable GetViewInfos()
{
+ yield return new ViewInfo
+ {
+ GetViewName = (view, mechanism) => mechanism.WrappedData.Name,
+ Image = RingtoetsCommonFormsResources.CalculationIcon,
+ CloseForData = CloseStabilityStoneCoverFailureMechanismViewForData,
+ AdditionalDataCheck = context => context.WrappedData.IsRelevant
+ };
+
yield return new ViewInfo,
IEnumerable,
StabilityStoneCoverResultView>
@@ -101,18 +109,18 @@
yield return new TreeNodeInfo
{
- Text = emptyPipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
- Image = emptyPipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
- ForeColor = emptyPipingOutput => Color.FromKnownColor(KnownColor.GrayText),
+ Text = emptyOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
+ Image = emptyOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
+ ForeColor = emptyOutput => Color.FromKnownColor(KnownColor.GrayText),
ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl)
.AddPropertiesItem()
.Build()
};
yield return new TreeNodeInfo
{
- Text = emptyPipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
- Image = emptyPipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
+ Text = emptyOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
+ Image = emptyOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl)
.AddPropertiesItem()
.Build()
@@ -159,6 +167,23 @@
#region ViewInfos
+ # region StabilityStoneCoverFailureMechanismView ViewInfo
+
+ private bool CloseStabilityStoneCoverFailureMechanismViewForData(StabilityStoneCoverFailureMechanismView view, object o)
+ {
+ var assessmentSection = o as IAssessmentSection;
+ var failureMechanism = o as StabilityStoneCoverFailureMechanism;
+
+ var viewFailureMechanismContext = (StabilityStoneCoverFailureMechanismContext)view.Data;
+ var viewFailureMechanism = viewFailureMechanismContext.WrappedData;
+
+ return assessmentSection != null
+ ? ReferenceEquals(viewFailureMechanismContext.Parent, assessmentSection)
+ : ReferenceEquals(viewFailureMechanism, failureMechanism);
+ }
+
+ # endregion
+
#region FailureMechanismSectionResultContext
private static bool CloseFailureMechanismResultViewForData(StabilityStoneCoverResultView view, object dataToCloseFor)
@@ -231,8 +256,10 @@
{
var builder = new RingtoetsContextMenuBuilder(Gui.Get(failureMechanismContext, treeViewControl));
- return builder.AddToggleRelevancyOfFailureMechanismItem(failureMechanismContext, RemoveAllViewsForItem)
+ return builder.AddOpenItem()
.AddSeparator()
+ .AddToggleRelevancyOfFailureMechanismItem(failureMechanismContext, RemoveAllViewsForItem)
+ .AddSeparator()
.AddExpandAllItem()
.AddCollapseAllItem()
.AddSeparator()
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Ringtoets.StabilityStoneCover.Forms.Test.csproj
===================================================================
diff -u -r98f01944e8ac182e2a1e9b1ed4deb48a07952529 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Ringtoets.StabilityStoneCover.Forms.Test.csproj (.../Ringtoets.StabilityStoneCover.Forms.Test.csproj) (revision 98f01944e8ac182e2a1e9b1ed4deb48a07952529)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Ringtoets.StabilityStoneCover.Forms.Test.csproj (.../Ringtoets.StabilityStoneCover.Forms.Test.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -87,6 +87,7 @@
+
@@ -131,6 +132,18 @@
Core.Common.TestUtil
True
+
+ {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a}
+ Core.Components.DotSpatial.Forms
+
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+
+
+ {318ba582-88c9-4816-a54a-a7e431461de3}
+ Core.Components.Gis
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/TreeNodeInfos/StabilityStoneCoverFailureMechanismContextTreeNodeInfoTest.cs
===================================================================
diff -u -rb5accd775c390fa85f815ef13c3c3e54a6d10ada -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/TreeNodeInfos/StabilityStoneCoverFailureMechanismContextTreeNodeInfoTest.cs (.../StabilityStoneCoverFailureMechanismContextTreeNodeInfoTest.cs) (revision b5accd775c390fa85f815ef13c3c3e54a6d10ada)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/TreeNodeInfos/StabilityStoneCoverFailureMechanismContextTreeNodeInfoTest.cs (.../StabilityStoneCoverFailureMechanismContextTreeNodeInfoTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -44,7 +44,7 @@
[TestFixture]
public class StabilityStoneCoverFailureMechanismContextTreeNodeInfoTest
{
- private const int contextMenuRelevancyIndexWhenRelevant = 0;
+ private const int contextMenuRelevancyIndexWhenRelevant = 2;
private const int contextMenuRelevancyIndexWhenNotRelevant = 0;
private MockRepository mocks;
private StabilityStoneCoverPlugin plugin;
@@ -254,6 +254,8 @@
assessmentSection);
var menuBuilder = mocks.StrictMock();
+ menuBuilder.Expect(mb => mb.AddOpenItem()).Return(menuBuilder);
+ menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder);
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs
===================================================================
diff -u
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs (revision 0)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/Views/StabilityStoneCoverFailureMechanismViewTest.cs (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -0,0 +1,628 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// 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;
+using Core.Common.Base;
+using Core.Common.Base.Geometry;
+using Core.Components.DotSpatial.Forms;
+using Core.Components.Gis.Data;
+using Core.Components.Gis.Forms;
+using NUnit.Framework;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Data.Contribution;
+using Ringtoets.Common.Data.DikeProfiles;
+using Ringtoets.Common.Data.FailureMechanism;
+using Ringtoets.Common.Data.TestUtil;
+using Ringtoets.HydraRing.Data;
+using Ringtoets.StabilityStoneCover.Data;
+using Ringtoets.StabilityStoneCover.Forms.PresentationObjects;
+using Ringtoets.StabilityStoneCover.Forms.Views;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources;
+using StabilityStoneCoverDataResources = Ringtoets.StabilityStoneCover.Data.Properties.Resources;
+using StabilityStoneCoverFormsResources = Ringtoets.StabilityStoneCover.Forms.Properties.Resources;
+
+namespace Ringtoets.StabilityStoneCover.Forms.Test.Views
+{
+ [TestFixture]
+ public class StabilityStoneCoverFailureMechanismViewTest
+ {
+ private const int referenceLineIndex = 0;
+ private const int sectionsIndex = 1;
+ private const int sectionsStartPointIndex = 2;
+ private const int sectionsEndPointIndex = 3;
+ private const int hydraulicBoundaryDatabaseIndex = 4;
+ private const int foreshoreProfilesIndex = 5;
+
+ [Test]
+ public void DefaultConstructor_DefaultValues()
+ {
+ // Call
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ // Assert
+ Assert.IsInstanceOf(view);
+ Assert.IsInstanceOf(view);
+ Assert.IsNotNull(view.Map);
+ Assert.IsNull(view.Data);
+ }
+ }
+
+ [Test]
+ public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData()
+ {
+ // Call
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ // Assert
+ Assert.AreEqual(1, view.Controls.Count);
+ Assert.AreSame(view.Map, view.Controls[0]);
+ Assert.AreEqual(DockStyle.Fill, ((Control)view.Map).Dock);
+ Assert.AreEqual(StabilityStoneCoverDataResources.StabilityStoneCoverFailureMechanism_DisplayName, view.Map.Data.Name);
+ AssertEmptyMapData(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_StabilityStoneCoverFailureMechanismContext_DataSet()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), new TestAssessmentSection());
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+ }
+ }
+
+ [Test]
+ public void Data_OtherThanStabilityStoneCoverFailureMechanismContext_DataNull()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var data = new object();
+
+ // Call
+ view.Data = data;
+
+ // Assert
+ Assert.IsNull(view.Data);
+ }
+ }
+
+ [Test]
+ public void Data_SetToNull_MapDataCleared()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), new TestAssessmentSection());
+
+ view.Data = failureMechanismContext;
+
+ // Precondition
+ Assert.AreEqual(6, view.Map.Data.Collection.Count());
+
+ // Call
+ view.Data = null;
+
+ // Assert
+ Assert.IsNull(view.Data);
+ Assert.IsNull(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_EmptyStabilityStoneCoverFailureMechanismContext_NoMapDataSet()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), new TestAssessmentSection());
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+ AssertEmptyMapData(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_StabilityStoneCoverFailureMechanismContext_DataUpdatedToCollectionOfFilledMapData()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var geometryPoints = new[]
+ {
+ new Point2D(0.0, 0.0),
+ new Point2D(2.0, 0.0),
+ new Point2D(4.0, 4.0),
+ new Point2D(6.0, 4.0)
+ };
+
+ var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
+ hydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(1, "test", 1.0, 2.0));
+
+ var referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(new[]
+ {
+ new Point2D(1.0, 2.0),
+ new Point2D(2.0, 1.0)
+ });
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ HydraulicBoundaryDatabase = hydraulicBoundaryDatabase,
+ ReferenceLine = referenceLine
+ };
+
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
+
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(failureMechanism, assessmentSection);
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+
+ var mapData = map.Data;
+ Assert.IsInstanceOf(mapData);
+
+ var mapDataList = mapData.Collection.ToList();
+ Assert.AreEqual(6, mapDataList.Count);
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, mapDataList[sectionsIndex]);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
+ AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase, mapDataList[hydraulicBoundaryDatabaseIndex]);
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, mapDataList[foreshoreProfilesIndex]);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_HydraulicBoundaryDatabaseUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var hydraulicBoundaryDatabase1 = new HydraulicBoundaryDatabase
+ {
+ Locations =
+ {
+ new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0)
+ }
+ };
+ var hydraulicBoundaryDatabase2 = new HydraulicBoundaryDatabase
+ {
+ Locations =
+ {
+ new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)
+ }
+ };
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ HydraulicBoundaryDatabase = hydraulicBoundaryDatabase1
+ };
+
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var hydraulicBoundaryDatabaseMapData = map.Data.Collection.ElementAt(hydraulicBoundaryDatabaseIndex);
+
+ // Precondition
+ AssertHydraulicBoundaryLocationsMapData(hydraulicBoundaryDatabase1, hydraulicBoundaryDatabaseMapData);
+
+ // Call
+ assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase2;
+ assessmentSection.NotifyObservers();
+
+ // Assert
+ AssertHydraulicBoundaryLocationsMapData(hydraulicBoundaryDatabase2, hydraulicBoundaryDatabaseMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_ReferenceLineUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var points1 = new List
+ {
+ new Point2D(1.0, 2.0),
+ new Point2D(2.0, 1.0)
+ };
+
+ var points2 = new List
+ {
+ new Point2D(2.0, 5.0),
+ new Point2D(4.0, 3.0)
+ };
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ ReferenceLine = new ReferenceLine()
+ };
+ assessmentSection.ReferenceLine.SetGeometry(points1);
+
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex);
+
+ // Precondition
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);
+
+ // Call
+ assessmentSection.ReferenceLine.SetGeometry(points2);
+ assessmentSection.NotifyObservers();
+
+ // Assert
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_FailureMechanismSectionsUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ view.Data = failureMechanismContext;
+
+ var sectionMapData = (MapLineData)map.Data.Collection.ElementAt(sectionsIndex);
+ var sectionStartsMapData = (MapPointData)map.Data.Collection.ElementAt(sectionsStartPointIndex);
+ var sectionsEndsMapData = (MapPointData)map.Data.Collection.ElementAt(sectionsEndPointIndex);
+
+ // Call
+ failureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
+ {
+ new Point2D(1, 2),
+ new Point2D(1, 2)
+ }));
+ failureMechanism.NotifyObservers();
+
+ // Assert
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionMapData);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionStartsMapData);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsEndsMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_ForeshoreProfilesUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+
+ view.Data = failureMechanismContext;
+
+ var foreshoreProfileData = map.Data.Collection.ElementAt(foreshoreProfilesIndex);
+
+ // Precondition
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, foreshoreProfileData);
+
+ // Call
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+ failureMechanism.ForeshoreProfiles.NotifyObservers();
+
+ // Assert
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, foreshoreProfileData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_DataUpdated_MapLayersSameOrder()
+ {
+ // Setup
+ const int updatedRefenceLineLayerIndex = referenceLineIndex + 5;
+ const int updatedSectionsLayerIndex = sectionsIndex - 1;
+ const int updateSectionStartLayerIndex = sectionsStartPointIndex - 1;
+ const int updatedSectionEndLayerIndex = sectionsEndPointIndex - 1;
+ const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryDatabaseIndex - 1;
+ const int updatedForeshoreProfilesLayerIndex = foreshoreProfilesIndex - 1;
+
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var assessmentSection = new TestAssessmentSection();
+ var failureMechanism = new StabilityStoneCoverFailureMechanism();
+ var failureMechanismContext = new StabilityStoneCoverFailureMechanismContext(failureMechanism, assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var mapData = map.Data;
+
+ var dataToMove = (MapLineData)map.Data.Collection.ElementAt(referenceLineIndex);
+ mapData.Remove(dataToMove);
+ mapData.Add(dataToMove);
+
+ var mapDataList = mapData.Collection.ToList();
+
+ // Precondition
+ var referenceLineData = (MapLineData)mapDataList[updatedRefenceLineLayerIndex];
+ Assert.AreEqual("Referentielijn", referenceLineData.Name);
+
+ var sectionsData = (MapLineData)mapDataList[updatedSectionsLayerIndex];
+ Assert.AreEqual("Vakindeling", sectionsData.Name);
+
+ var sectionStartsData = (MapPointData)mapDataList[updateSectionStartLayerIndex];
+ Assert.AreEqual("Vakindeling (startpunten)", sectionStartsData.Name);
+
+ var sectionEndsData = (MapPointData)mapDataList[updatedSectionEndLayerIndex];
+ Assert.AreEqual("Vakindeling (eindpunten)", sectionEndsData.Name);
+
+ var hydraulicLocationsData = (MapPointData)mapDataList[updatedHydraulicLocationsLayerIndex];
+ Assert.AreEqual("Hydraulische randvoorwaarden", hydraulicLocationsData.Name);
+
+ var foreshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", foreshoreProfilesData.Name);
+
+ var points = new List
+ {
+ new Point2D(2.0, 5.0),
+ new Point2D(4.0, 3.0)
+ };
+ ReferenceLine referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(points);
+ assessmentSection.ReferenceLine = referenceLine;
+
+ // Call
+ assessmentSection.NotifyObservers();
+
+ // Call
+ var actualReferenceLineData = (MapLineData)mapDataList[updatedRefenceLineLayerIndex];
+ Assert.AreEqual("Referentielijn", actualReferenceLineData.Name);
+
+ var actualSectionsData = (MapLineData)mapDataList[updatedSectionsLayerIndex];
+ Assert.AreEqual("Vakindeling", actualSectionsData.Name);
+
+ var actualSectionStartsData = (MapPointData)mapDataList[updateSectionStartLayerIndex];
+ Assert.AreEqual("Vakindeling (startpunten)", actualSectionStartsData.Name);
+
+ var actualSectionEndsData = (MapPointData)mapDataList[updatedSectionEndLayerIndex];
+ Assert.AreEqual("Vakindeling (eindpunten)", actualSectionEndsData.Name);
+
+ var actualHydraulicLocationsData = (MapPointData)mapDataList[updatedHydraulicLocationsLayerIndex];
+ Assert.AreEqual("Hydraulische randvoorwaarden", actualHydraulicLocationsData.Name);
+
+ var actualForeshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", actualForeshoreProfilesData.Name);
+ }
+ }
+
+ [Test]
+ public void NotifyObservers_DataUpdatedNotifyObserversOnOldData_NoUpdateInViewData()
+ {
+ // Setup
+ IAssessmentSection oldAssessmentSection = new TestAssessmentSection();
+ IAssessmentSection newAssessmentSection = new TestAssessmentSection();
+
+ newAssessmentSection.ReferenceLine = new ReferenceLine();
+ newAssessmentSection.ReferenceLine.SetGeometry(new[]
+ {
+ new Point2D(2, 4),
+ new Point2D(3, 4)
+ });
+
+ var oldStabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), oldAssessmentSection);
+ var newStabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(new StabilityStoneCoverFailureMechanism(), newAssessmentSection);
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ view.Data = oldStabilityStoneCoverFailureMechanismContext;
+ view.Data = newStabilityStoneCoverFailureMechanismContext;
+ MapData dataBeforeUpdate = map.Data;
+
+ newAssessmentSection.ReferenceLine.SetGeometry(Enumerable.Empty());
+
+ // Call
+ oldAssessmentSection.NotifyObservers();
+
+ // Assert
+ Assert.AreEqual(dataBeforeUpdate, map.Data);
+ }
+ }
+
+ private static void AssertReferenceLineMapData(ReferenceLine referenceLine, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var referenceLineData = (MapLineData)mapData;
+ if (referenceLine == null)
+ {
+ CollectionAssert.IsEmpty(referenceLineData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ else
+ {
+ CollectionAssert.AreEqual(referenceLine.Points, referenceLineData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ Assert.AreEqual("Referentielijn", mapData.Name);
+ }
+
+ private static void AssertForeshoreProfiles(IEnumerable foreshoreProfiles, MapData mapData)
+ {
+ Assert.NotNull(foreshoreProfiles, "foreshoreProfiles should never be null.");
+
+ var foreshoreProfilesData = (MapLineData)mapData;
+ var foreshoreProfileArray = foreshoreProfiles.ToArray();
+
+ Assert.IsInstanceOf(mapData);
+ Assert.AreEqual(foreshoreProfileArray.Length, foreshoreProfilesData.Features.Length);
+
+ for (int i = 0; i < foreshoreProfileArray.Length; i++)
+ {
+ var profileDataA = foreshoreProfilesData.Features.ElementAt(i).MapGeometries.First();
+ CollectionAssert.AreEquivalent(foreshoreProfileArray[0].Geometry, profileDataA.PointCollections.First());
+ }
+
+ Assert.AreEqual("Voorlandprofielen", mapData.Name);
+ }
+
+ private static void AssertHydraulicBoundaryLocationsMapData(HydraulicBoundaryDatabase database, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var hydraulicLocationsMapData = (MapPointData)mapData;
+ if (database == null)
+ {
+ CollectionAssert.IsEmpty(hydraulicLocationsMapData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ else
+ {
+ CollectionAssert.AreEqual(database.Locations.Select(hrp => hrp.Location), hydraulicLocationsMapData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ Assert.AreEqual("Hydraulische randvoorwaarden", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsMapLinesData = (MapLineData)mapData;
+ var sectionMapLinesFeatures = sectionsMapLinesData.Features.ToArray();
+ Assert.AreEqual(1, sectionMapLinesFeatures.Length);
+
+ var geometries = sectionMapLinesFeatures.First().MapGeometries.ToArray();
+ var sectionsArray = sections.ToArray();
+ Assert.AreEqual(sectionsArray.Length, geometries.Length);
+
+ for (int index = 0; index < sectionsArray.Length; index++)
+ {
+ var failureMechanismSection = sectionsArray[index];
+ CollectionAssert.AreEquivalent(failureMechanismSection.Points, geometries[index].PointCollections.First());
+ }
+ Assert.AreEqual("Vakindeling", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsStartPointMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsStartPointData = (MapPointData)mapData;
+ CollectionAssert.AreEqual(sections.Select(s => s.GetStart()), sectionsStartPointData.Features.First().MapGeometries.First().PointCollections.First());
+ Assert.AreEqual("Vakindeling (startpunten)", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsEndPointMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsStartPointData = (MapPointData)mapData;
+ CollectionAssert.AreEqual(sections.Select(s => s.GetLast()), sectionsStartPointData.Features.First().MapGeometries.First().PointCollections.First());
+ Assert.AreEqual("Vakindeling (eindpunten)", mapData.Name);
+ }
+
+ private static void AssertEmptyMapData(MapDataCollection mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+
+ var mapDataList = mapData.Collection.ToList();
+
+ Assert.AreEqual(6, mapDataList.Count);
+
+ var referenceLineMapData = (MapLineData)mapDataList[referenceLineIndex];
+ var sectionsMapData = (MapLineData)mapDataList[sectionsIndex];
+ var foreshoreProfilesMapData = (MapLineData)mapDataList[foreshoreProfilesIndex];
+ var sectionsStartPointMapData = (MapPointData)mapDataList[sectionsStartPointIndex];
+ var sectionsEndPointMapData = (MapPointData)mapDataList[sectionsEndPointIndex];
+ var hydraulicBoundaryDatabaseMapData = (MapPointData)mapDataList[hydraulicBoundaryDatabaseIndex];
+
+ CollectionAssert.IsEmpty(referenceLineMapData.Features);
+ CollectionAssert.IsEmpty(sectionsMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
+ CollectionAssert.IsEmpty(sectionsStartPointMapData.Features);
+ CollectionAssert.IsEmpty(sectionsEndPointMapData.Features);
+ CollectionAssert.IsEmpty(hydraulicBoundaryDatabaseMapData.Features);
+
+ Assert.AreEqual(RingtoetsCommonDataResources.ReferenceLine_DisplayName, referenceLineMapData.Name);
+ Assert.AreEqual(RingtoetsCommonFormsResources.FailureMechanism_Sections_DisplayName, sectionsMapData.Name);
+ Assert.AreEqual(GetSectionPointDisplayName(RingtoetsCommonFormsResources.FailureMechanismSections_StartPoints_DisplayName), sectionsStartPointMapData.Name);
+ Assert.AreEqual(GetSectionPointDisplayName(RingtoetsCommonFormsResources.FailureMechanismSections_EndPoints_DisplayName), sectionsEndPointMapData.Name);
+ Assert.AreEqual(RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName, hydraulicBoundaryDatabaseMapData.Name);
+ }
+
+ private static string GetSectionPointDisplayName(string name)
+ {
+ return string.Format("{0} ({1})",
+ RingtoetsCommonFormsResources.FailureMechanism_Sections_DisplayName,
+ name);
+ }
+
+ private class TestAssessmentSection : Observable, IAssessmentSection
+ {
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public string Comments { get; set; }
+ public AssessmentSectionComposition Composition { get; private set; }
+ public ReferenceLine ReferenceLine { get; set; }
+ public FailureMechanismContribution FailureMechanismContribution { get; private set; }
+ public HydraulicBoundaryDatabase HydraulicBoundaryDatabase { get; set; }
+
+ public IEnumerable GetFailureMechanisms()
+ {
+ yield break;
+ }
+
+ public void ChangeComposition(AssessmentSectionComposition newComposition)
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/Ringtoets.StabilityStoneCover.Plugin.Test.csproj
===================================================================
diff -u -r2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/Ringtoets.StabilityStoneCover.Plugin.Test.csproj (.../Ringtoets.StabilityStoneCover.Plugin.Test.csproj) (revision 2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/Ringtoets.StabilityStoneCover.Plugin.Test.csproj (.../Ringtoets.StabilityStoneCover.Plugin.Test.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -58,6 +58,7 @@
+
@@ -91,6 +92,10 @@
{d749ee4c-ce50-4c17-bf01-9a953028c126}
Core.Common.TestUtil
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/StabilityStoneCoverPluginTest.cs
===================================================================
diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/StabilityStoneCoverPluginTest.cs (.../StabilityStoneCoverPluginTest.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/StabilityStoneCoverPluginTest.cs (.../StabilityStoneCoverPluginTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -81,12 +81,18 @@
ViewInfo[] viewInfos = plugin.GetViewInfos().ToArray();
// Assert
- Assert.AreEqual(1, viewInfos.Length);
+ Assert.AreEqual(2, viewInfos.Length);
- var stabilityStoneCoverResultViewInfo = viewInfos.Single(vi => vi.DataType == typeof(FailureMechanismSectionResultContext));
- Assert.AreEqual(typeof(IEnumerable), stabilityStoneCoverResultViewInfo.ViewDataType);
- Assert.AreEqual(typeof(StabilityStoneCoverResultView), stabilityStoneCoverResultViewInfo.ViewType);
- TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, stabilityStoneCoverResultViewInfo.Image);
+ PluginTestHelper.AssertViewInfoDefined(
+ viewInfos,
+ typeof(StabilityStoneCoverFailureMechanismContext),
+ typeof(StabilityStoneCoverFailureMechanismView));
+
+ PluginTestHelper.AssertViewInfoDefined(
+ viewInfos,
+ typeof(FailureMechanismSectionResultContext),
+ typeof(IEnumerable),
+ typeof(StabilityStoneCoverResultView));
}
}
Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/ViewInfos/StabilityStoneCoverFailureMechanismViewInfoTest.cs
===================================================================
diff -u
--- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/ViewInfos/StabilityStoneCoverFailureMechanismViewInfoTest.cs (revision 0)
+++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Plugin.Test/ViewInfos/StabilityStoneCoverFailureMechanismViewInfoTest.cs (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -0,0 +1,210 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Linq;
+using Core.Common.Gui.Plugin;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.StabilityStoneCover.Data;
+using Ringtoets.StabilityStoneCover.Forms.PresentationObjects;
+using Ringtoets.StabilityStoneCover.Forms.Views;
+using StabilityStoneCoverDataResources = Ringtoets.StabilityStoneCover.Data.Properties.Resources;
+using StabilityStoneCoverFormsResources = Ringtoets.StabilityStoneCover.Forms.Properties.Resources;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+
+namespace Ringtoets.StabilityStoneCover.Plugin.Test.ViewInfos
+{
+ [TestFixture]
+ public class StabilityStoneCoverFailureMechanismViewInfoTest
+ {
+ private MockRepository mocks;
+ private StabilityStoneCoverPlugin plugin;
+ private ViewInfo info;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mocks = new MockRepository();
+ plugin = new StabilityStoneCoverPlugin();
+ info = plugin.GetViewInfos().First(tni => tni.ViewType == typeof(StabilityStoneCoverFailureMechanismView));
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ plugin.Dispose();
+ }
+
+ [Test]
+ public void Initialized_Always_ExpectedPropertiesSet()
+ {
+ // Assert
+ Assert.AreEqual(typeof(StabilityStoneCoverFailureMechanismContext), info.DataType);
+ Assert.AreEqual(typeof(StabilityStoneCoverFailureMechanismContext), info.ViewDataType);
+ TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.CalculationIcon, info.Image);
+ }
+
+ [Test]
+ public void GetViewName_WithStabilityStoneCoverFailureMechanism_ReturnsNameOfFailureMechanism()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var stabilityStoneCoverFailureMechanism = new StabilityStoneCoverFailureMechanism();
+ var stabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(stabilityStoneCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new StabilityStoneCoverFailureMechanismView())
+ {
+ // Call
+ string viewName = info.GetViewName(view, stabilityStoneCoverFailureMechanismContext);
+
+ // Assert
+ Assert.AreEqual(stabilityStoneCoverFailureMechanism.Name, viewName);
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ var otherAssessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var stabilityStoneCoverFailureMechanism = new StabilityStoneCoverFailureMechanism();
+ var stabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(stabilityStoneCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new StabilityStoneCoverFailureMechanismView
+ {
+ Data = stabilityStoneCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, otherAssessmentSectionMock);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var stabilityStoneCoverFailureMechanism = new StabilityStoneCoverFailureMechanism();
+ var stabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(stabilityStoneCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new StabilityStoneCoverFailureMechanismView
+ {
+ Data = stabilityStoneCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSectionMock);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var stabilityStoneCoverFailureMechanism = new StabilityStoneCoverFailureMechanism();
+ var otherStabilityStoneCoverFailureMechanism = new StabilityStoneCoverFailureMechanism();
+
+ var stabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(stabilityStoneCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new StabilityStoneCoverFailureMechanismView
+ {
+ Data = stabilityStoneCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, otherStabilityStoneCoverFailureMechanism);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var stabilityStoneCoverFailureMechanism = new StabilityStoneCoverFailureMechanism();
+ var stabilityStoneCoverFailureMechanismContext = new StabilityStoneCoverFailureMechanismContext(stabilityStoneCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new StabilityStoneCoverFailureMechanismView
+ {
+ Data = stabilityStoneCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, stabilityStoneCoverFailureMechanism);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public void AdditionalDataCheck_Always_ReturnTrueOnlyIfFailureMechanismRelevant(bool isRelevant)
+ {
+ // Setup
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var failureMechanism = new StabilityStoneCoverFailureMechanism
+ {
+ IsRelevant = isRelevant
+ };
+
+ var context = new StabilityStoneCoverFailureMechanismContext(failureMechanism, assessmentSection);
+
+ // Call
+ bool result = info.AdditionalDataCheck(context);
+
+ // Assert
+ Assert.AreEqual(isRelevant, result);
+ mocks.VerifyAll();
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Ringtoets.WaveImpactAsphaltCover.Forms.csproj
===================================================================
diff -u -rbc4c4000ca4a850b49a88156ca2b919ea690494b -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Ringtoets.WaveImpactAsphaltCover.Forms.csproj (.../Ringtoets.WaveImpactAsphaltCover.Forms.csproj) (revision bc4c4000ca4a850b49a88156ca2b919ea690494b)
+++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Ringtoets.WaveImpactAsphaltCover.Forms.csproj (.../Ringtoets.WaveImpactAsphaltCover.Forms.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -34,6 +34,7 @@
+
@@ -54,6 +55,12 @@
Resources.resx
+
+ UserControl
+
+
+ WaveImpactAsphaltCoverFailureMechanismView.cs
+
UserControl
@@ -87,6 +94,21 @@
Core.Common.Utils
False
+
+ {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a}
+ Core.Components.DotSpatial.Forms
+ False
+
+
+ {4A06DF0D-5D75-4BAD-A95A-A3DB9B7C4AD5}
+ Core.Components.Gis.Forms
+ False
+
+
+ {318BA582-88C9-4816-A54A-A7E431461DE3}
+ Core.Components.Gis
+ False
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
@@ -124,6 +146,9 @@
Resources.Designer.cs
Designer
+
+ WaveImpactAsphaltCoverFailureMechanismView.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/Ringtoets.WaveImpactAsphaltCover.Plugin.csproj
===================================================================
diff -u -rbc4c4000ca4a850b49a88156ca2b919ea690494b -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/Ringtoets.WaveImpactAsphaltCover.Plugin.csproj (.../Ringtoets.WaveImpactAsphaltCover.Plugin.csproj) (revision bc4c4000ca4a850b49a88156ca2b919ea690494b)
+++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/Ringtoets.WaveImpactAsphaltCover.Plugin.csproj (.../Ringtoets.WaveImpactAsphaltCover.Plugin.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -70,6 +70,11 @@
Core.Common.Gui
False
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+ False
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs
===================================================================
diff -u -rb5accd775c390fa85f815ef13c3c3e54a6d10ada -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision b5accd775c390fa85f815ef13c3c3e54a6d10ada)
+++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -68,6 +68,14 @@
public override IEnumerable GetViewInfos()
{
+ yield return new ViewInfo
+ {
+ GetViewName = (view, mechanism) => mechanism.WrappedData.Name,
+ Image = RingtoetsCommonFormsResources.CalculationIcon,
+ CloseForData = CloseWaveImpactAsphaltCoverFailureMechanismViewForData,
+ AdditionalDataCheck = context => context.WrappedData.IsRelevant
+ };
+
yield return new ViewInfo,
IEnumerable,
WaveImpactAsphaltCoverFailureMechanismResultView>
@@ -109,18 +117,18 @@
yield return new TreeNodeInfo
{
- Text = emptyPipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
- Image = emptyPipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
- ForeColor = emptyPipingOutput => Color.FromKnownColor(KnownColor.GrayText),
+ Text = emptyOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
+ Image = emptyOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
+ ForeColor = emptyOutput => Color.FromKnownColor(KnownColor.GrayText),
ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl)
.AddPropertiesItem()
.Build()
};
yield return new TreeNodeInfo
{
- Text = emptyPipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
- Image = emptyPipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
+ Text = emptyOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
+ Image = emptyOutput => RingtoetsCommonFormsResources.GeneralOutputIcon,
ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl)
.AddPropertiesItem()
.Build()
@@ -162,6 +170,23 @@
#region ViewInfos
+ # region WaveImpactAsphaltCoverFailureMechanismView ViewInfo
+
+ private bool CloseWaveImpactAsphaltCoverFailureMechanismViewForData(WaveImpactAsphaltCoverFailureMechanismView view, object o)
+ {
+ var assessmentSection = o as IAssessmentSection;
+ var failureMechanism = o as WaveImpactAsphaltCoverFailureMechanism;
+
+ var viewFailureMechanismContext = (WaveImpactAsphaltCoverFailureMechanismContext)view.Data;
+ var viewFailureMechanism = viewFailureMechanismContext.WrappedData;
+
+ return assessmentSection != null
+ ? ReferenceEquals(viewFailureMechanismContext.Parent, assessmentSection)
+ : ReferenceEquals(viewFailureMechanism, failureMechanism);
+ }
+
+ # endregion
+
#region FailureMechanismSectionResultContext
private static bool CloseFailureMechanismResultViewForData(WaveImpactAsphaltCoverFailureMechanismResultView view, object dataToCloseFor)
@@ -234,8 +259,10 @@
{
var builder = new RingtoetsContextMenuBuilder(Gui.Get(failureMechanismContext, treeViewControl));
- return builder.AddToggleRelevancyOfFailureMechanismItem(failureMechanismContext, RemoveAllViewsForItem)
+ return builder.AddOpenItem()
.AddSeparator()
+ .AddToggleRelevancyOfFailureMechanismItem(failureMechanismContext, RemoveAllViewsForItem)
+ .AddSeparator()
.AddExpandAllItem()
.AddCollapseAllItem()
.AddSeparator()
Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Ringtoets.WaveImpactAsphaltCover.Forms.Test.csproj
===================================================================
diff -u -r98f01944e8ac182e2a1e9b1ed4deb48a07952529 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Ringtoets.WaveImpactAsphaltCover.Forms.Test.csproj (.../Ringtoets.WaveImpactAsphaltCover.Forms.Test.csproj) (revision 98f01944e8ac182e2a1e9b1ed4deb48a07952529)
+++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Ringtoets.WaveImpactAsphaltCover.Forms.Test.csproj (.../Ringtoets.WaveImpactAsphaltCover.Forms.Test.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -74,6 +74,7 @@
+
@@ -114,6 +115,18 @@
{D749EE4C-CE50-4C17-BF01-9A953028C126}
Core.Common.TestUtil
+
+ {5A91174A-FB95-4C9D-9CA5-81C0B8D4361A}
+ Core.Components.DotSpatial.Forms
+
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+
+
+ {318ba582-88c9-4816-a54a-a7e431461de3}
+ Core.Components.Gis
+
{D4200F43-3F72-4F42-AF0A-8CED416A38EC}
Ringtoets.Common.Data
Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Views/WaveImpactAsphaltCoverFailureMechanismViewTest.cs
===================================================================
diff -u
--- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Views/WaveImpactAsphaltCoverFailureMechanismViewTest.cs (revision 0)
+++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/Views/WaveImpactAsphaltCoverFailureMechanismViewTest.cs (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -0,0 +1,628 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// 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;
+using Core.Common.Base;
+using Core.Common.Base.Geometry;
+using Core.Components.DotSpatial.Forms;
+using Core.Components.Gis.Data;
+using Core.Components.Gis.Forms;
+using NUnit.Framework;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Data.Contribution;
+using Ringtoets.Common.Data.DikeProfiles;
+using Ringtoets.Common.Data.FailureMechanism;
+using Ringtoets.Common.Data.TestUtil;
+using Ringtoets.HydraRing.Data;
+using Ringtoets.WaveImpactAsphaltCover.Data;
+using Ringtoets.WaveImpactAsphaltCover.Forms.PresentationObjects;
+using Ringtoets.WaveImpactAsphaltCover.Forms.Views;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources;
+using WaveImpactAsphaltCoverDataResources = Ringtoets.WaveImpactAsphaltCover.Data.Properties.Resources;
+using WaveImpactAsphaltCoverFormsResources = Ringtoets.WaveImpactAsphaltCover.Forms.Properties.Resources;
+
+namespace Ringtoets.WaveImpactAsphaltCover.Forms.Test.Views
+{
+ [TestFixture]
+ public class WaveImpactAsphaltCoverFailureMechanismViewTest
+ {
+ private const int referenceLineIndex = 0;
+ private const int sectionsIndex = 1;
+ private const int sectionsStartPointIndex = 2;
+ private const int sectionsEndPointIndex = 3;
+ private const int hydraulicBoundaryDatabaseIndex = 4;
+ private const int foreshoreProfilesIndex = 5;
+
+ [Test]
+ public void DefaultConstructor_DefaultValues()
+ {
+ // Call
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ // Assert
+ Assert.IsInstanceOf(view);
+ Assert.IsInstanceOf(view);
+ Assert.IsNotNull(view.Map);
+ Assert.IsNull(view.Data);
+ }
+ }
+
+ [Test]
+ public void DefaultConstructor_Always_AddMapControlWithCollectionOfEmptyMapData()
+ {
+ // Call
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ // Assert
+ Assert.AreEqual(1, view.Controls.Count);
+ Assert.AreSame(view.Map, view.Controls[0]);
+ Assert.AreEqual(DockStyle.Fill, ((Control) view.Map).Dock);
+ Assert.AreEqual(WaveImpactAsphaltCoverDataResources.WaveImpactAsphaltCoverFailureMechanism_DisplayName, view.Map.Data.Name);
+ AssertEmptyMapData(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_WaveImpactAsphaltCoverFailureMechanismContext_DataSet()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), new TestAssessmentSection());
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+ }
+ }
+
+ [Test]
+ public void Data_OtherThanWaveImpactAsphaltCoverFailureMechanismContext_DataNull()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var data = new object();
+
+ // Call
+ view.Data = data;
+
+ // Assert
+ Assert.IsNull(view.Data);
+ }
+ }
+
+ [Test]
+ public void Data_SetToNull_MapDataCleared()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), new TestAssessmentSection());
+
+ view.Data = failureMechanismContext;
+
+ // Precondition
+ Assert.AreEqual(6, view.Map.Data.Collection.Count());
+
+ // Call
+ view.Data = null;
+
+ // Assert
+ Assert.IsNull(view.Data);
+ Assert.IsNull(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_EmptyWaveImpactAsphaltCoverFailureMechanismContext_NoMapDataSet()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), new TestAssessmentSection());
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+ AssertEmptyMapData(view.Map.Data);
+ }
+ }
+
+ [Test]
+ public void Data_WaveImpactAsphaltCoverFailureMechanismContext_DataUpdatedToCollectionOfFilledMapData()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl) view.Controls[0];
+
+ var geometryPoints = new[]
+ {
+ new Point2D(0.0, 0.0),
+ new Point2D(2.0, 0.0),
+ new Point2D(4.0, 4.0),
+ new Point2D(6.0, 4.0)
+ };
+
+ var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
+ hydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(1, "test", 1.0, 2.0));
+
+ var referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(new[]
+ {
+ new Point2D(1.0, 2.0),
+ new Point2D(2.0, 1.0)
+ });
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ HydraulicBoundaryDatabase = hydraulicBoundaryDatabase,
+ ReferenceLine = referenceLine
+ };
+
+ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ failureMechanism.AddSection(new FailureMechanismSection("A", geometryPoints.Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("B", geometryPoints.Skip(1).Take(2)));
+ failureMechanism.AddSection(new FailureMechanismSection("C", geometryPoints.Skip(2).Take(2)));
+
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(failureMechanism, assessmentSection);
+
+ // Call
+ view.Data = failureMechanismContext;
+
+ // Assert
+ Assert.AreSame(failureMechanismContext, view.Data);
+
+ var mapData = map.Data;
+ Assert.IsInstanceOf(mapData);
+
+ var mapDataList = mapData.Collection.ToList();
+ Assert.AreEqual(6, mapDataList.Count);
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, mapDataList[referenceLineIndex]);
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, mapDataList[sectionsIndex]);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, mapDataList[sectionsStartPointIndex]);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, mapDataList[sectionsEndPointIndex]);
+ AssertHydraulicBoundaryLocationsMapData(assessmentSection.HydraulicBoundaryDatabase, mapDataList[hydraulicBoundaryDatabaseIndex]);
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, mapDataList[foreshoreProfilesIndex]);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_HydraulicBoundaryDatabaseUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl) view.Controls[0];
+
+ var hydraulicBoundaryDatabase1 = new HydraulicBoundaryDatabase
+ {
+ Locations =
+ {
+ new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0)
+ }
+ };
+ var hydraulicBoundaryDatabase2 = new HydraulicBoundaryDatabase
+ {
+ Locations =
+ {
+ new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)
+ }
+ };
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ HydraulicBoundaryDatabase = hydraulicBoundaryDatabase1
+ };
+
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var hydraulicBoundaryDatabaseMapData = map.Data.Collection.ElementAt(hydraulicBoundaryDatabaseIndex);
+
+ // Precondition
+ AssertHydraulicBoundaryLocationsMapData(hydraulicBoundaryDatabase1, hydraulicBoundaryDatabaseMapData);
+
+ // Call
+ assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase2;
+ assessmentSection.NotifyObservers();
+
+ // Assert
+ AssertHydraulicBoundaryLocationsMapData(hydraulicBoundaryDatabase2, hydraulicBoundaryDatabaseMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_ReferenceLineUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl) view.Controls[0];
+
+ var points1 = new List
+ {
+ new Point2D(1.0, 2.0),
+ new Point2D(2.0, 1.0)
+ };
+
+ var points2 = new List
+ {
+ new Point2D(2.0, 5.0),
+ new Point2D(4.0, 3.0)
+ };
+
+ var assessmentSection = new TestAssessmentSection
+ {
+ ReferenceLine = new ReferenceLine()
+ };
+ assessmentSection.ReferenceLine.SetGeometry(points1);
+
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var referenceLineMapData = map.Data.Collection.ElementAt(referenceLineIndex);
+
+ // Precondition
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);
+
+ // Call
+ assessmentSection.ReferenceLine.SetGeometry(points2);
+ assessmentSection.NotifyObservers();
+
+ // Assert
+ AssertReferenceLineMapData(assessmentSection.ReferenceLine, referenceLineMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_FailureMechanismSectionsUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl) view.Controls[0];
+
+ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ view.Data = failureMechanismContext;
+
+ var sectionMapData = (MapLineData) map.Data.Collection.ElementAt(sectionsIndex);
+ var sectionStartsMapData = (MapPointData) map.Data.Collection.ElementAt(sectionsStartPointIndex);
+ var sectionsEndsMapData = (MapPointData) map.Data.Collection.ElementAt(sectionsEndPointIndex);
+
+ // Call
+ failureMechanism.AddSection(new FailureMechanismSection(string.Empty, new[]
+ {
+ new Point2D(1, 2),
+ new Point2D(1, 2)
+ }));
+ failureMechanism.NotifyObservers();
+
+ // Assert
+ AssertFailureMechanismSectionsMapData(failureMechanism.Sections, sectionMapData);
+ AssertFailureMechanismSectionsStartPointMapData(failureMechanism.Sections, sectionStartsMapData);
+ AssertFailureMechanismSectionsEndPointMapData(failureMechanism.Sections, sectionsEndsMapData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_ForeshoreProfilesUpdated_MapDataUpdated()
+ {
+ // Setup
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl)view.Controls[0];
+
+ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(failureMechanism, new TestAssessmentSection());
+
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+
+ view.Data = failureMechanismContext;
+
+ var foreshoreProfileData = map.Data.Collection.ElementAt(foreshoreProfilesIndex);
+
+ // Precondition
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, foreshoreProfileData);
+
+ // Call
+ failureMechanism.ForeshoreProfiles.Add(new TestForeshoreProfile());
+ failureMechanism.ForeshoreProfiles.NotifyObservers();
+
+ // Assert
+ AssertForeshoreProfiles(failureMechanism.ForeshoreProfiles, foreshoreProfileData);
+ }
+ }
+
+ [Test]
+ public void UpdateObserver_DataUpdated_MapLayersSameOrder()
+ {
+ // Setup
+ const int updatedRefenceLineLayerIndex = referenceLineIndex + 5;
+ const int updatedSectionsLayerIndex = sectionsIndex - 1;
+ const int updateSectionStartLayerIndex = sectionsStartPointIndex - 1;
+ const int updatedSectionEndLayerIndex = sectionsEndPointIndex - 1;
+ const int updatedHydraulicLocationsLayerIndex = hydraulicBoundaryDatabaseIndex - 1;
+ const int updatedForeshoreProfilesLayerIndex = foreshoreProfilesIndex - 1;
+
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl) view.Controls[0];
+
+ var assessmentSection = new TestAssessmentSection();
+ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var failureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(failureMechanism, assessmentSection);
+
+ view.Data = failureMechanismContext;
+
+ var mapData = map.Data;
+
+ var dataToMove = (MapLineData) map.Data.Collection.ElementAt(referenceLineIndex);
+ mapData.Remove(dataToMove);
+ mapData.Add(dataToMove);
+
+ var mapDataList = mapData.Collection.ToList();
+
+ // Precondition
+ var referenceLineData = (MapLineData) mapDataList[updatedRefenceLineLayerIndex];
+ Assert.AreEqual("Referentielijn", referenceLineData.Name);
+
+ var sectionsData = (MapLineData) mapDataList[updatedSectionsLayerIndex];
+ Assert.AreEqual("Vakindeling", sectionsData.Name);
+
+ var sectionStartsData = (MapPointData) mapDataList[updateSectionStartLayerIndex];
+ Assert.AreEqual("Vakindeling (startpunten)", sectionStartsData.Name);
+
+ var sectionEndsData = (MapPointData) mapDataList[updatedSectionEndLayerIndex];
+ Assert.AreEqual("Vakindeling (eindpunten)", sectionEndsData.Name);
+
+ var hydraulicLocationsData = (MapPointData) mapDataList[updatedHydraulicLocationsLayerIndex];
+ Assert.AreEqual("Hydraulische randvoorwaarden", hydraulicLocationsData.Name);
+
+ var foreshoreProfilesData = (MapLineData)mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", foreshoreProfilesData.Name);
+
+ var points = new List
+ {
+ new Point2D(2.0, 5.0),
+ new Point2D(4.0, 3.0)
+ };
+ ReferenceLine referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(points);
+ assessmentSection.ReferenceLine = referenceLine;
+
+ // Call
+ assessmentSection.NotifyObservers();
+
+ // Call
+ var actualReferenceLineData = (MapLineData) mapDataList[updatedRefenceLineLayerIndex];
+ Assert.AreEqual("Referentielijn", actualReferenceLineData.Name);
+
+ var actualSectionsData = (MapLineData) mapDataList[updatedSectionsLayerIndex];
+ Assert.AreEqual("Vakindeling", actualSectionsData.Name);
+
+ var actualSectionStartsData = (MapPointData) mapDataList[updateSectionStartLayerIndex];
+ Assert.AreEqual("Vakindeling (startpunten)", actualSectionStartsData.Name);
+
+ var actualSectionEndsData = (MapPointData) mapDataList[updatedSectionEndLayerIndex];
+ Assert.AreEqual("Vakindeling (eindpunten)", actualSectionEndsData.Name);
+
+ var actualHydraulicLocationsData = (MapPointData) mapDataList[updatedHydraulicLocationsLayerIndex];
+ Assert.AreEqual("Hydraulische randvoorwaarden", actualHydraulicLocationsData.Name);
+
+ var actualForeshoreProfilesData = (MapLineData) mapDataList[updatedForeshoreProfilesLayerIndex];
+ Assert.AreEqual("Voorlandprofielen", actualForeshoreProfilesData.Name);
+ }
+ }
+
+ [Test]
+ public void NotifyObservers_DataUpdatedNotifyObserversOnOldData_NoUpdateInViewData()
+ {
+ // Setup
+ IAssessmentSection oldAssessmentSection = new TestAssessmentSection();
+ IAssessmentSection newAssessmentSection = new TestAssessmentSection();
+
+ newAssessmentSection.ReferenceLine = new ReferenceLine();
+ newAssessmentSection.ReferenceLine.SetGeometry(new[]
+ {
+ new Point2D(2, 4),
+ new Point2D(3, 4)
+ });
+
+ var oldWaveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), oldAssessmentSection);
+ var newWaveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(new WaveImpactAsphaltCoverFailureMechanism(), newAssessmentSection);
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ var map = (MapControl) view.Controls[0];
+
+ view.Data = oldWaveImpactAsphaltCoverFailureMechanismContext;
+ view.Data = newWaveImpactAsphaltCoverFailureMechanismContext;
+ MapData dataBeforeUpdate = map.Data;
+
+ newAssessmentSection.ReferenceLine.SetGeometry(Enumerable.Empty());
+
+ // Call
+ oldAssessmentSection.NotifyObservers();
+
+ // Assert
+ Assert.AreEqual(dataBeforeUpdate, map.Data);
+ }
+ }
+
+ private static void AssertReferenceLineMapData(ReferenceLine referenceLine, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var referenceLineData = (MapLineData) mapData;
+ if (referenceLine == null)
+ {
+ CollectionAssert.IsEmpty(referenceLineData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ else
+ {
+ CollectionAssert.AreEqual(referenceLine.Points, referenceLineData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ Assert.AreEqual("Referentielijn", mapData.Name);
+ }
+
+ private static void AssertForeshoreProfiles(IEnumerable foreshoreProfiles, MapData mapData)
+ {
+ Assert.NotNull(foreshoreProfiles, "foreshoreProfiles should never be null.");
+
+ var foreshoreProfilesData = (MapLineData) mapData;
+ var foreshoreProfileArray = foreshoreProfiles.ToArray();
+
+ Assert.IsInstanceOf(mapData);
+ Assert.AreEqual(foreshoreProfileArray.Length, foreshoreProfilesData.Features.Length);
+
+ for (int i = 0; i < foreshoreProfileArray.Length; i++)
+ {
+ var profileDataA = foreshoreProfilesData.Features.ElementAt(i).MapGeometries.First();
+ CollectionAssert.AreEquivalent(foreshoreProfileArray[0].Geometry, profileDataA.PointCollections.First());
+ }
+
+ Assert.AreEqual("Voorlandprofielen", mapData.Name);
+ }
+
+ private static void AssertHydraulicBoundaryLocationsMapData(HydraulicBoundaryDatabase database, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var hydraulicLocationsMapData = (MapPointData) mapData;
+ if (database == null)
+ {
+ CollectionAssert.IsEmpty(hydraulicLocationsMapData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ else
+ {
+ CollectionAssert.AreEqual(database.Locations.Select(hrp => hrp.Location), hydraulicLocationsMapData.Features.First().MapGeometries.First().PointCollections.First());
+ }
+ Assert.AreEqual("Hydraulische randvoorwaarden", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsMapLinesData = (MapLineData) mapData;
+ var sectionMapLinesFeatures = sectionsMapLinesData.Features.ToArray();
+ Assert.AreEqual(1, sectionMapLinesFeatures.Length);
+
+ var geometries = sectionMapLinesFeatures.First().MapGeometries.ToArray();
+ var sectionsArray = sections.ToArray();
+ Assert.AreEqual(sectionsArray.Length, geometries.Length);
+
+ for (int index = 0; index < sectionsArray.Length; index++)
+ {
+ var failureMechanismSection = sectionsArray[index];
+ CollectionAssert.AreEquivalent(failureMechanismSection.Points, geometries[index].PointCollections.First());
+ }
+ Assert.AreEqual("Vakindeling", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsStartPointMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsStartPointData = (MapPointData) mapData;
+ CollectionAssert.AreEqual(sections.Select(s => s.GetStart()), sectionsStartPointData.Features.First().MapGeometries.First().PointCollections.First());
+ Assert.AreEqual("Vakindeling (startpunten)", mapData.Name);
+ }
+
+ private static void AssertFailureMechanismSectionsEndPointMapData(IEnumerable sections, MapData mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+ var sectionsStartPointData = (MapPointData) mapData;
+ CollectionAssert.AreEqual(sections.Select(s => s.GetLast()), sectionsStartPointData.Features.First().MapGeometries.First().PointCollections.First());
+ Assert.AreEqual("Vakindeling (eindpunten)", mapData.Name);
+ }
+
+ private static void AssertEmptyMapData(MapDataCollection mapData)
+ {
+ Assert.IsInstanceOf(mapData);
+
+ var mapDataList = mapData.Collection.ToList();
+
+ Assert.AreEqual(6, mapDataList.Count);
+
+ var referenceLineMapData = (MapLineData) mapDataList[referenceLineIndex];
+ var sectionsMapData = (MapLineData) mapDataList[sectionsIndex];
+ var foreshoreProfilesMapData = (MapLineData) mapDataList[foreshoreProfilesIndex];
+ var sectionsStartPointMapData = (MapPointData) mapDataList[sectionsStartPointIndex];
+ var sectionsEndPointMapData = (MapPointData) mapDataList[sectionsEndPointIndex];
+ var hydraulicBoundaryDatabaseMapData = (MapPointData) mapDataList[hydraulicBoundaryDatabaseIndex];
+
+ CollectionAssert.IsEmpty(referenceLineMapData.Features);
+ CollectionAssert.IsEmpty(sectionsMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
+ CollectionAssert.IsEmpty(foreshoreProfilesMapData.Features);
+ CollectionAssert.IsEmpty(sectionsStartPointMapData.Features);
+ CollectionAssert.IsEmpty(sectionsEndPointMapData.Features);
+ CollectionAssert.IsEmpty(hydraulicBoundaryDatabaseMapData.Features);
+
+ Assert.AreEqual(RingtoetsCommonDataResources.ReferenceLine_DisplayName, referenceLineMapData.Name);
+ Assert.AreEqual(RingtoetsCommonFormsResources.FailureMechanism_Sections_DisplayName, sectionsMapData.Name);
+ Assert.AreEqual(GetSectionPointDisplayName(RingtoetsCommonFormsResources.FailureMechanismSections_StartPoints_DisplayName), sectionsStartPointMapData.Name);
+ Assert.AreEqual(GetSectionPointDisplayName(RingtoetsCommonFormsResources.FailureMechanismSections_EndPoints_DisplayName), sectionsEndPointMapData.Name);
+ Assert.AreEqual(RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName, hydraulicBoundaryDatabaseMapData.Name);
+ }
+
+ private static string GetSectionPointDisplayName(string name)
+ {
+ return string.Format("{0} ({1})",
+ RingtoetsCommonFormsResources.FailureMechanism_Sections_DisplayName,
+ name);
+ }
+
+ private class TestAssessmentSection : Observable, IAssessmentSection
+ {
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public string Comments { get; set; }
+ public AssessmentSectionComposition Composition { get; private set; }
+ public ReferenceLine ReferenceLine { get; set; }
+ public FailureMechanismContribution FailureMechanismContribution { get; private set; }
+ public HydraulicBoundaryDatabase HydraulicBoundaryDatabase { get; set; }
+
+ public IEnumerable GetFailureMechanisms()
+ {
+ yield break;
+ }
+
+ public void ChangeComposition(AssessmentSectionComposition newComposition)
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test.csproj
===================================================================
diff -u -r2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test.csproj (.../Ringtoets.WaveImpactAsphaltCover.Plugin.Test.csproj) (revision 2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8)
+++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test.csproj (.../Ringtoets.WaveImpactAsphaltCover.Plugin.Test.csproj) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -58,6 +58,7 @@
+
@@ -93,6 +94,10 @@
{D749EE4C-CE50-4C17-BF01-9A953028C126}
Core.Common.TestUtil
+
+ {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5}
+ Core.Components.Gis.Forms
+
{d4200f43-3f72-4f42-af0a-8ced416a38ec}
Ringtoets.Common.Data
Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverFailureMechanismContextTreeNodeInfoTest.cs
===================================================================
diff -u -rb5accd775c390fa85f815ef13c3c3e54a6d10ada -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverFailureMechanismContextTreeNodeInfoTest.cs (.../WaveImpactAsphaltCoverFailureMechanismContextTreeNodeInfoTest.cs) (revision b5accd775c390fa85f815ef13c3c3e54a6d10ada)
+++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverFailureMechanismContextTreeNodeInfoTest.cs (.../WaveImpactAsphaltCoverFailureMechanismContextTreeNodeInfoTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -43,7 +43,7 @@
[TestFixture]
public class WaveImpactAsphaltCoverFailureMechanismContextTreeNodeInfoTest
{
- private const int contextMenuRelevancyIndexWhenRelevant = 0;
+ private const int contextMenuRelevancyIndexWhenRelevant = 2;
private const int contextMenuRelevancyIndexWhenNotRelevant = 0;
private MockRepository mocks;
@@ -275,6 +275,8 @@
assessmentSection);
var menuBuilder = mocks.StrictMock();
+ menuBuilder.Expect(mb => mb.AddOpenItem()).Return(menuBuilder);
+ menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder);
menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder);
Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/ViewInfos/WaveImpactAsphaltCoverFailureMechanismViewInfoTest.cs
===================================================================
diff -u
--- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/ViewInfos/WaveImpactAsphaltCoverFailureMechanismViewInfoTest.cs (revision 0)
+++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/ViewInfos/WaveImpactAsphaltCoverFailureMechanismViewInfoTest.cs (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -0,0 +1,210 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Linq;
+using Core.Common.Gui.Plugin;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.WaveImpactAsphaltCover.Data;
+using Ringtoets.WaveImpactAsphaltCover.Forms.PresentationObjects;
+using Ringtoets.WaveImpactAsphaltCover.Forms.Views;
+using WaveImpactAsphaltCoverDataResources = Ringtoets.WaveImpactAsphaltCover.Data.Properties.Resources;
+using WaveImpactAsphaltCoverFormsResources = Ringtoets.WaveImpactAsphaltCover.Forms.Properties.Resources;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+
+namespace Ringtoets.WaveImpactAsphaltCover.Plugin.Test.ViewInfos
+{
+ [TestFixture]
+ public class WaveImpactAsphaltCoverFailureMechanismViewInfoTest
+ {
+ private MockRepository mocks;
+ private WaveImpactAsphaltCoverPlugin plugin;
+ private ViewInfo info;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mocks = new MockRepository();
+ plugin = new WaveImpactAsphaltCoverPlugin();
+ info = plugin.GetViewInfos().First(tni => tni.ViewType == typeof(WaveImpactAsphaltCoverFailureMechanismView));
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ plugin.Dispose();
+ }
+
+ [Test]
+ public void Initialized_Always_ExpectedPropertiesSet()
+ {
+ // Assert
+ Assert.AreEqual(typeof(WaveImpactAsphaltCoverFailureMechanismContext), info.DataType);
+ Assert.AreEqual(typeof(WaveImpactAsphaltCoverFailureMechanismContext), info.ViewDataType);
+ TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.CalculationIcon, info.Image);
+ }
+
+ [Test]
+ public void GetViewName_WithWaveImpactAsphaltCoverFailureMechanism_ReturnsNameOfFailureMechanism()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var waveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var waveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(waveImpactAsphaltCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView())
+ {
+ // Call
+ string viewName = info.GetViewName(view, waveImpactAsphaltCoverFailureMechanismContext);
+
+ // Assert
+ Assert.AreEqual(waveImpactAsphaltCoverFailureMechanism.Name, viewName);
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ var otherAssessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var waveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var waveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(waveImpactAsphaltCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView
+ {
+ Data = waveImpactAsphaltCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, otherAssessmentSectionMock);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var waveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var waveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(waveImpactAsphaltCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView
+ {
+ Data = waveImpactAsphaltCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSectionMock);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var waveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var otherWaveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+
+ var waveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(waveImpactAsphaltCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView
+ {
+ Data = waveImpactAsphaltCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, otherWaveImpactAsphaltCoverFailureMechanism);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+ mocks.ReplayAll();
+
+ var waveImpactAsphaltCoverFailureMechanism = new WaveImpactAsphaltCoverFailureMechanism();
+ var waveImpactAsphaltCoverFailureMechanismContext = new WaveImpactAsphaltCoverFailureMechanismContext(waveImpactAsphaltCoverFailureMechanism, assessmentSectionMock);
+
+ using (var view = new WaveImpactAsphaltCoverFailureMechanismView
+ {
+ Data = waveImpactAsphaltCoverFailureMechanismContext
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, waveImpactAsphaltCoverFailureMechanism);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public void AdditionalDataCheck_Always_ReturnTrueOnlyIfFailureMechanismRelevant(bool isRelevant)
+ {
+ // Setup
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism
+ {
+ IsRelevant = isRelevant
+ };
+
+ var context = new WaveImpactAsphaltCoverFailureMechanismContext(failureMechanism, assessmentSection);
+
+ // Call
+ bool result = info.AdditionalDataCheck(context);
+
+ // Assert
+ Assert.AreEqual(isRelevant, result);
+ mocks.VerifyAll();
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/WaveImpactAsphaltCoverPluginTest.cs
===================================================================
diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -rf718135c08ce7b90cc0eaf40bfb83c9af48a1776
--- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/WaveImpactAsphaltCoverPluginTest.cs (.../WaveImpactAsphaltCoverPluginTest.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639)
+++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/WaveImpactAsphaltCoverPluginTest.cs (.../WaveImpactAsphaltCoverPluginTest.cs) (revision f718135c08ce7b90cc0eaf40bfb83c9af48a1776)
@@ -96,12 +96,18 @@
ViewInfo[] viewInfos = plugin.GetViewInfos().ToArray();
// Assert
- Assert.AreEqual(1, viewInfos.Length);
+ Assert.AreEqual(2, viewInfos.Length);
+
+ PluginTestHelper.AssertViewInfoDefined(
+ viewInfos,
+ typeof(WaveImpactAsphaltCoverFailureMechanismContext),
+ typeof(WaveImpactAsphaltCoverFailureMechanismView));
- var waveImpactAsphaltCoverResultViewInfo = viewInfos.Single(vi => vi.DataType == typeof(FailureMechanismSectionResultContext));
- Assert.AreEqual(typeof(IEnumerable), waveImpactAsphaltCoverResultViewInfo.ViewDataType);
- Assert.AreEqual(typeof(WaveImpactAsphaltCoverFailureMechanismResultView), waveImpactAsphaltCoverResultViewInfo.ViewType);
- TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, waveImpactAsphaltCoverResultViewInfo.Image);
+ PluginTestHelper.AssertViewInfoDefined(
+ viewInfos,
+ typeof(FailureMechanismSectionResultContext),
+ typeof(IEnumerable),
+ typeof(WaveImpactAsphaltCoverFailureMechanismResultView));
}
}