Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs =================================================================== diff -u -r2799 -r2819 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs (.../DesignScenario.cs) (revision 2799) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs (.../DesignScenario.cs) (revision 2819) @@ -58,7 +58,9 @@ private double? headPl2; private double? headPl3; private double? headPl4; - + private double polderLevel; + + public CalculationResult CalculationResult { get { return calculationResult; } @@ -117,7 +119,16 @@ /// /// The polder level. /// - public double PolderLevel { get; set; } + public double PolderLevel { + get + { + return polderLevel; + } + set + { + polderLevel = value; + } + } [Browsable(false)] public StringCollection Errors { get; private set; } Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs =================================================================== diff -u -r2799 -r2819 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 2799) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 2819) @@ -358,9 +358,7 @@ location.Segment = segments[i % 2]; // alternate between the 2 available segments for (int j = 0; j < 3; j++) { - var designScenario = FillDesignScenario(i, j); - designScenario.Location = location; - designScenario.PolderLevel = 1.0 * i + 0.11; + var designScenario = FillDesignScenario(location, i, j); location.Scenarios.Add(designScenario); } location.DikeEmbankmentMaterial = "DikeMat"; @@ -442,7 +440,7 @@ dike.SoilProfiles.Add(profile); } } - private static DesignScenario FillDesignScenario(int locationIndex, int scenarioIndex) + private static DesignScenario FillDesignScenario(Location location, int locationIndex, int scenarioIndex) { // The parameter factor is used to create unique data for the design scenario int factor = (locationIndex + 1) * (scenarioIndex + 1); @@ -468,6 +466,7 @@ designScenario.RequiredSafetyFactorStabilityInnerSlope = 1.0 * factor + 0.64; designScenario.RequiredSafetyFactorStabilityOuterSlope = 1.0 * factor + 0.65; designScenario.RequiredSafetyFactorPiping = 1.0 * factor + 0.66; + designScenario.Location = location; return designScenario; } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorPLLineCreatorTest.cs =================================================================== diff -u -r2799 -r2819 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorPLLineCreatorTest.cs (.../SensorPLLineCreatorTest.cs) (revision 2799) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorPLLineCreatorTest.cs (.../SensorPLLineCreatorTest.cs) (revision 2819) @@ -125,7 +125,7 @@ CharacteristicPoints = { GeometryMustContainPoint = true }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", 1, 1); + var location = CreateConfiguredLocation("test", 1, 1); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData; @@ -230,7 +230,7 @@ }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", 5, polderLevel); + var location = CreateConfiguredLocation("test", 5, polderLevel); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData; @@ -293,7 +293,7 @@ CharacteristicPoints = { GeometryMustContainPoint = true }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", riverLevel, -1); + var location = CreateConfiguredLocation("test", riverLevel, -1); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; @@ -448,7 +448,7 @@ }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", 1, 1); + var location = CreateConfiguredLocation("test", 1, 1); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.Ignore; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.Ignore; @@ -534,17 +534,6 @@ Assert.AreEqual(expectedZValueP4, p4.Z); } - private Location CreateProperLocation(string name, double riverLevel, double polderLevel) - { - var location = new Location(name) - { - RiverLevel = riverLevel - }; - var scenario = new DesignScenario {PolderLevel = polderLevel}; - location.Scenarios.Add(scenario); - return location; - } - [Test] public void CreatePlLinePl1_DikeHasDitch_ResultsAreAsExpected() { @@ -556,7 +545,7 @@ }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", 1, 1); + var location = CreateConfiguredLocation("test", 1, 1); #region Setup location.AddSensorLocation(); @@ -651,7 +640,7 @@ }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", 1, polderLevel); + var location = CreateConfiguredLocation("test", 1, polderLevel); #region Setup location.AddSensorLocation(); @@ -741,7 +730,7 @@ }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", waterLevel, waterLevel); + var location = CreateConfiguredLocation("test", waterLevel, waterLevel); { location.AddSensorLocation(); location.SensorLocation.SourceTypePl3 = DataSourceTypeSensors.Sensor; @@ -814,7 +803,7 @@ }, Geometry = new GeometryPointString() }; - var location = CreateProperLocation("test", 1, 1); + var location = CreateConfiguredLocation("test", 1, 1); { location.AddSensorLocation(); location.SensorLocation.SourceTypePl3 = DataSourceTypeSensors.Sensor; @@ -871,5 +860,16 @@ Assert.AreEqual(waterLevel, actual.Points[1].Z); } } + + private Location CreateConfiguredLocation(string name, double riverLevel, double polderLevel) + { + var location = new Location(name) + { + RiverLevel = riverLevel + }; + var scenario = new DesignScenario { PolderLevel = polderLevel }; + location.Scenarios.Add(scenario); + return location; + } } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Dike.cs =================================================================== diff -u -r2127 -r2819 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Dike.cs (.../Dike.cs) (revision 2127) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Dike.cs (.../Dike.cs) (revision 2819) @@ -211,6 +211,11 @@ throw new SurfaceLineException(validationResults[0].Text); } } + + if (location.Scenarios.Count < 1) + { + throw new DikeException("Location " + location.Name + " has no scenarios, at least one scenario is required."); + } } }