Index: Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/DatabaseStructure17.2.sql =================================================================== diff -u -ra25ab906f08e5e263ebb35920acc3ee1bdd928df -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/DatabaseStructure17.2.sql (.../DatabaseStructure17.2.sql) (revision a25ab906f08e5e263ebb35920acc3ee1bdd928df) +++ Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/DatabaseStructure17.2.sql (.../DatabaseStructure17.2.sql) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -1,6 +1,6 @@ /* ---------------------------------------------------- */ /* Generated by Enterprise Architect Version 12.0 */ -/* Created On : 06-nov-2017 14:27:01 */ +/* Created On : 16-Nov-2017 12:03:12 */ /* DBMS : SQLite */ /* ---------------------------------------------------- */ @@ -1733,6 +1733,9 @@ 'LocationInputDailyPhreaticLineOffsetBelowShoulderBaseInside' REAL, 'LocationInputDailyPhreaticLineOffsetDikeToeAtPolder' REAL, 'CreateZones' TINYINT (1) NOT NULL, -- true or false + 'ZoningBoundariesDeterminationType' TINYINT (1) NOT NULL, -- Enumtype: 1 = Automatic, 2 = Manual + 'ZoneBoundaryLeft' REAL, + 'ZoneBoundaryRight' REAL, CONSTRAINT 'FK_MacroStabilityInwardsCalculationEntity_CalculationGroupEntity' FOREIGN KEY ('CalculationGroupEntityId') REFERENCES 'CalculationGroupEntity' ('CalculationGroupEntityId') ON DELETE Cascade ON UPDATE Cascade, CONSTRAINT 'FK_MacroStabilityInwardsCalculationEntity_HydraulicLocationEntity' FOREIGN KEY ('HydraulicLocationEntityId') REFERENCES 'HydraulicLocationEntity' ('HydraulicLocationEntityId') ON DELETE Set Null ON UPDATE Cascade, CONSTRAINT 'FK_MacroStabilityInwardsCalculationEntity_MacroStabilityInwardsStochasticSoilProfileEntity' FOREIGN KEY ('MacroStabilityInwardsStochasticSoilProfileEntityId') REFERENCES 'MacroStabilityInwardsStochasticSoilProfileEntity' ('MacroStabilityInwardsStochasticSoilProfileEntityId') ON DELETE Set Null ON UPDATE Cascade, Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/MacroStabilityInwards/MacroStabilityInwardsCalculationScenarioCreateExtensions.cs =================================================================== diff -u -r06e3624f72482462ebb7e4ee29d1a8173005e59d -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/MacroStabilityInwards/MacroStabilityInwardsCalculationScenarioCreateExtensions.cs (.../MacroStabilityInwardsCalculationScenarioCreateExtensions.cs) (revision 06e3624f72482462ebb7e4ee29d1a8173005e59d) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/MacroStabilityInwards/MacroStabilityInwardsCalculationScenarioCreateExtensions.cs (.../MacroStabilityInwardsCalculationScenarioCreateExtensions.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -118,6 +118,9 @@ SetGridParametersToEntity(entity, inputParameters.LeftGrid, inputParameters.RightGrid); entity.CreateZones = Convert.ToByte(inputParameters.CreateZones); + entity.ZoningBoundariesDeterminationType = Convert.ToByte(inputParameters.ZoningBoundariesDeterminationType); + entity.ZoneBoundaryLeft = inputParameters.ZoneBoundaryLeft.ToNaNAsNull(); + entity.ZoneBoundaryRight = inputParameters.ZoneBoundaryRight.ToNaNAsNull(); } private static void SetGridParametersToEntity(MacroStabilityInwardsCalculationEntity entity, Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/MacroStabilityInwardsCalculationEntity.cs =================================================================== diff -u -r06e3624f72482462ebb7e4ee29d1a8173005e59d -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/MacroStabilityInwardsCalculationEntity.cs (.../MacroStabilityInwardsCalculationEntity.cs) (revision 06e3624f72482462ebb7e4ee29d1a8173005e59d) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/MacroStabilityInwardsCalculationEntity.cs (.../MacroStabilityInwardsCalculationEntity.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -103,6 +103,9 @@ public double? LocationInputDailyPhreaticLineOffsetBelowShoulderBaseInside { get; set; } public double? LocationInputDailyPhreaticLineOffsetDikeToeAtPolder { get; set; } public byte CreateZones { get; set; } + public byte ZoningBoundariesDeterminationType { get; set; } + public double? ZoneBoundaryLeft { get; set; } + public double? ZoneBoundaryRight { get; set; } public virtual CalculationGroupEntity CalculationGroupEntity { get; set; } public virtual HydraulicLocationEntity HydraulicLocationEntity { get; set; } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx =================================================================== diff -u -ra25ab906f08e5e263ebb35920acc3ee1bdd928df -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx (.../RingtoetsEntities.edmx) (revision a25ab906f08e5e263ebb35920acc3ee1bdd928df) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx (.../RingtoetsEntities.edmx) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -4,7 +4,7 @@ - + @@ -730,6 +730,9 @@ + + + @@ -5169,6 +5172,9 @@ + + + @@ -8183,6 +8189,9 @@ + + + Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram =================================================================== diff -u -ra25ab906f08e5e263ebb35920acc3ee1bdd928df -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram (.../RingtoetsEntities.edmx.diagram) (revision a25ab906f08e5e263ebb35920acc3ee1bdd928df) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram (.../RingtoetsEntities.edmx.diagram) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -5,97 +5,97 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityReadExtensions.cs =================================================================== diff -u -r06e3624f72482462ebb7e4ee29d1a8173005e59d -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityReadExtensions.cs (.../MacroStabilityInwardsCalculationEntityReadExtensions.cs) (revision 06e3624f72482462ebb7e4ee29d1a8173005e59d) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityReadExtensions.cs (.../MacroStabilityInwardsCalculationEntityReadExtensions.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -129,6 +129,9 @@ SetGridparametersToInput(inputParameters.LeftGrid, inputParameters.RightGrid, entity); inputParameters.CreateZones = Convert.ToBoolean(entity.CreateZones); + inputParameters.ZoningBoundariesDeterminationType = (MacroStabilityInwardsZoningBoundariesDeterminationType) entity.ZoningBoundariesDeterminationType; + inputParameters.ZoneBoundaryLeft = (RoundedDouble) entity.ZoneBoundaryLeft.ToNullAsNaN(); + inputParameters.ZoneBoundaryRight = (RoundedDouble) entity.ZoneBoundaryRight.ToNullAsNaN(); } private static void SetSurfaceLineToInput(MacroStabilityInwardsInput inputParameters, Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/MacroStabilityInwards/MacroStabilityInwardsCalculationScenarioCreateExtensionsTest.cs =================================================================== diff -u -r10e060be0b77c159b3e99a7200e43c4326b17642 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/MacroStabilityInwards/MacroStabilityInwardsCalculationScenarioCreateExtensionsTest.cs (.../MacroStabilityInwardsCalculationScenarioCreateExtensionsTest.cs) (revision 10e060be0b77c159b3e99a7200e43c4326b17642) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/MacroStabilityInwards/MacroStabilityInwardsCalculationScenarioCreateExtensionsTest.cs (.../MacroStabilityInwardsCalculationScenarioCreateExtensionsTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -109,7 +109,9 @@ XRight = RoundedDouble.NaN, ZTop = RoundedDouble.NaN, ZBottom = RoundedDouble.NaN - } + }, + ZoneBoundaryLeft = RoundedDouble.NaN, + ZoneBoundaryRight = RoundedDouble.NaN } }; var registry = new PersistenceRegistry(); @@ -164,6 +166,9 @@ Assert.IsNull(entity.RightGridXRight); Assert.IsNull(entity.RightGridZTop); Assert.IsNull(entity.RightGridZBottom); + + Assert.IsNull(entity.ZoneBoundaryLeft); + Assert.IsNull(entity.ZoneBoundaryRight); } [Test] @@ -239,7 +244,10 @@ ZBottom = random.NextRoundedDouble(0.0, 1.0), NumberOfVerticalPoints = random.Next(1, 100) }, - CreateZones = random.NextBoolean() + CreateZones = random.NextBoolean(), + ZoningBoundariesDeterminationType = random.NextEnumValue(), + ZoneBoundaryLeft = random.NextRoundedDouble(), + ZoneBoundaryRight = random.NextRoundedDouble() } }; Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityReadExtensionsTest.cs =================================================================== diff -u -rdb798825b9ed601ec3716399ce46e19d2ff2d8ea -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityReadExtensionsTest.cs (.../MacroStabilityInwardsCalculationEntityReadExtensionsTest.cs) (revision db798825b9ed601ec3716399ce46e19d2ff2d8ea) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityReadExtensionsTest.cs (.../MacroStabilityInwardsCalculationEntityReadExtensionsTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -98,8 +98,8 @@ LeakageLengthInwardsPhreaticLine3 = random.NextDouble(), PiezometricHeadPhreaticLine2Outwards = random.NextDouble(), PiezometricHeadPhreaticLine2Inwards = random.NextDouble(), - GridDeterminationType = Convert.ToByte(random.NextBoolean()), - TangentLineDeterminationType = Convert.ToByte(random.NextBoolean()), + GridDeterminationType = Convert.ToByte(random.NextEnumValue()), + TangentLineDeterminationType = Convert.ToByte(random.NextEnumValue()), TangentLineZTop = random.GetFromRange(2.0, 3.0), TangentLineZBottom = random.GetFromRange(0.0, 1.0), TangentLineNumber = random.Next(1, 50), @@ -115,7 +115,10 @@ RightGridZTop = random.GetFromRange(2.0, 3.0), RightGridZBottom = random.GetFromRange(0.0, 1.0), RightGridNrOfVerticalPoints = random.Next(1, 100), - CreateZones = Convert.ToByte(random.NextBoolean()) + CreateZones = Convert.ToByte(random.NextBoolean()), + ZoningBoundariesDeterminationType = Convert.ToByte(random.NextEnumValue()), + ZoneBoundaryLeft = random.NextDouble(), + ZoneBoundaryRight = random.NextDouble() }; var collector = new ReadConversionCollector(); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityTestHelper.cs =================================================================== diff -u -r06e3624f72482462ebb7e4ee29d1a8173005e59d -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityTestHelper.cs (.../MacroStabilityInwardsCalculationEntityTestHelper.cs) (revision 06e3624f72482462ebb7e4ee29d1a8173005e59d) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/MacroStabilityInwards/MacroStabilityInwardsCalculationEntityTestHelper.cs (.../MacroStabilityInwardsCalculationEntityTestHelper.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -106,6 +106,9 @@ AssertGridInputs(input.LeftGrid, input.RightGrid, entity); Assert.AreEqual(Convert.ToByte(input.CreateZones), entity.CreateZones); + Assert.AreEqual(Convert.ToByte(input.ZoningBoundariesDeterminationType), entity.ZoningBoundariesDeterminationType); + AssertAreEqual(input.ZoneBoundaryLeft, entity.ZoneBoundaryLeft); + AssertAreEqual(input.ZoneBoundaryRight, entity.ZoneBoundaryRight); } private static void AssertGridInputs(MacroStabilityInwardsGrid leftGrid, Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs =================================================================== diff -u -rae47ec1ec171e74d0eedf64cf0bcda742bc5f289 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision ae47ec1ec171e74d0eedf64cf0bcda742bc5f289) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -1416,7 +1416,10 @@ ZBottom = (RoundedDouble) 3.4, NumberOfVerticalPoints = 6 }, - CreateZones = false + CreateZones = false, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, + ZoneBoundaryLeft = (RoundedDouble) 10, + ZoneBoundaryRight = (RoundedDouble) 12 }, Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(), SemiProbabilisticOutput = new MacroStabilityInwardsSemiProbabilisticOutput(1, 0.7, 8.8, 0.9, @@ -1497,7 +1500,10 @@ ZBottom = (RoundedDouble) 3.4, NumberOfVerticalPoints = 6 }, - CreateZones = false + CreateZones = false, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, + ZoneBoundaryLeft = (RoundedDouble) 5.4, + ZoneBoundaryRight = (RoundedDouble) 6.5 }, Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(), SemiProbabilisticOutput = MacroStabilityInwardsSemiProbabilisticOutputTestFactory.CreateOutput() @@ -1573,7 +1579,10 @@ ZTop = (RoundedDouble) 30.5, ZBottom = (RoundedDouble) 30.4, NumberOfVerticalPoints = 6 - } + }, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, + ZoneBoundaryLeft = (RoundedDouble) 1, + ZoneBoundaryRight = (RoundedDouble) 2 }, Output = null, SemiProbabilisticOutput = null Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsInput.cs =================================================================== diff -u -rc4392a12110e2bb3549c5fee1ec319c229b67198 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsInput.cs (.../MacroStabilityInwardsInput.cs) (revision c4392a12110e2bb3549c5fee1ec319c229b67198) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsInput.cs (.../MacroStabilityInwardsInput.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -56,6 +56,8 @@ private RoundedDouble piezometricHeadPhreaticLine2Inwards; private RoundedDouble tangentLineZTop; private RoundedDouble tangentLineZBottom; + private RoundedDouble zoneBoundaryLeft; + private RoundedDouble zoneBoundaryRight; private int tangentLineNumber; /// @@ -132,6 +134,9 @@ properties.RightGridZBottom); CreateZones = true; + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic; + zoneBoundaryLeft = new RoundedDouble(2, double.NaN); + zoneBoundaryRight = new RoundedDouble(2, double.NaN); } /// @@ -679,14 +684,40 @@ /// /// Gets the zoning boundaries determination type. /// - public MacroStabilityInwardsZoningBoundariesDeterminationType ZoningBoundariesDeterminationType + public MacroStabilityInwardsZoningBoundariesDeterminationType ZoningBoundariesDeterminationType { get; set; } + + /// + /// Gets or sets the left zone boundary. + /// [m] + /// + public RoundedDouble ZoneBoundaryLeft { get { - return MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic; + return zoneBoundaryLeft; } + set + { + zoneBoundaryLeft = value.ToPrecision(zoneBoundaryLeft.NumberOfDecimalPlaces); + } } + /// + /// Gets or sets the right zone boundary. + /// [m] + /// + public RoundedDouble ZoneBoundaryRight + { + get + { + return zoneBoundaryRight; + } + set + { + zoneBoundaryRight = value.ToPrecision(zoneBoundaryRight.NumberOfDecimalPlaces); + } + } + #endregion } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -rbd0bbaa4cd3baf1bc6572c24cc5a0466fb32228b -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision bd0bbaa4cd3baf1bc6572c24cc5a0466fb32228b) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -1878,6 +1878,42 @@ } /// + /// Looks up a localized string similar to Linker grens voor bepaling intredepunt van het glijvlak.. + /// + public static string ZoneBoundaryLeft_Description { + get { + return ResourceManager.GetString("ZoneBoundaryLeft_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zoneringsgrens links. + /// + public static string ZoneBoundaryLeft_DisplayName { + get { + return ResourceManager.GetString("ZoneBoundaryLeft_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Rechter grens voor bepaling intredepunt van het glijvlak.. + /// + public static string ZoneBoundaryRight_Description { + get { + return ResourceManager.GetString("ZoneBoundaryRight_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zoneringsgrens rechts. + /// + public static string ZoneBoundaryRight_DisplayName { + get { + return ResourceManager.GetString("ZoneBoundaryRight_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Zoneringsgrenzen automatisch bepalen of handmatig invoeren?. /// public static string ZoningBoundariesDeterminationType_Description { Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Properties/Resources.resx =================================================================== diff -u -rbd0bbaa4cd3baf1bc6572c24cc5a0466fb32228b -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Properties/Resources.resx (.../Resources.resx) (revision bd0bbaa4cd3baf1bc6572c24cc5a0466fb32228b) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Properties/Resources.resx (.../Resources.resx) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -724,4 +724,16 @@ Lamellen + + Linker grens voor bepaling intredepunt van het glijvlak. + + + Zoneringsgrens links + + + Rechter grens voor bepaling intredepunt van het glijvlak. + + + Zoneringsgrens rechts + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsSlipPlaneSettingsProperties.cs =================================================================== diff -u -r774ce2424ba4ccab70c6dad6198472977e2a8ace -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsSlipPlaneSettingsProperties.cs (.../MacroStabilityInwardsSlipPlaneSettingsProperties.cs) (revision 774ce2424ba4ccab70c6dad6198472977e2a8ace) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsSlipPlaneSettingsProperties.cs (.../MacroStabilityInwardsSlipPlaneSettingsProperties.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -21,6 +21,7 @@ using System; using System.ComponentModel; +using Core.Common.Base.Data; using Core.Common.Gui.Attributes; using Core.Common.Gui.PropertyBag; using Core.Common.Utils; @@ -40,6 +41,8 @@ { private const int createZonesPropertyIndex = 1; private const int zoningBoundariesDeterminationTypePropertyIndex = 2; + private const int zoneBoundaryLeftPropertyIndex = 3; + private const int zoneBoundaryRightPropertyIndex = 4; private readonly IObservablePropertyChangeHandler propertyChangeHandler; @@ -80,6 +83,7 @@ } } + [DynamicReadOnly] [PropertyOrder(zoningBoundariesDeterminationTypePropertyIndex)] [ResourcesCategory(typeof(Resources), nameof(Resources.SlipPlaneSettings_DisplayName))] [ResourcesDisplayName(typeof(Resources), nameof(Resources.ZoningBoundariesDeterminationType_DisplayName))] @@ -91,8 +95,62 @@ { return data.ZoningBoundariesDeterminationType; } + set + { + PropertyChangeHelper.ChangePropertyAndNotify(() => data.ZoningBoundariesDeterminationType = value, propertyChangeHandler); + } } + [DynamicReadOnly] + [PropertyOrder(zoneBoundaryLeftPropertyIndex)] + [ResourcesCategory(typeof(Resources), nameof(Resources.SlipPlaneSettings_DisplayName))] + [ResourcesDisplayName(typeof(Resources), nameof(Resources.ZoneBoundaryLeft_DisplayName))] + [ResourcesDescription(typeof(Resources), nameof(Resources.ZoneBoundaryLeft_Description))] + public RoundedDouble ZoneBoundaryLeft + { + get + { + return data.ZoneBoundaryLeft; + } + set + { + PropertyChangeHelper.ChangePropertyAndNotify(() => data.ZoneBoundaryLeft = value, propertyChangeHandler); + } + } + + [DynamicReadOnly] + [PropertyOrder(zoneBoundaryRightPropertyIndex)] + [ResourcesCategory(typeof(Resources), nameof(Resources.SlipPlaneSettings_DisplayName))] + [ResourcesDisplayName(typeof(Resources), nameof(Resources.ZoneBoundaryRight_DisplayName))] + [ResourcesDescription(typeof(Resources), nameof(Resources.ZoneBoundaryRight_Description))] + public RoundedDouble ZoneBoundaryRight + { + get + { + return data.ZoneBoundaryRight; + } + set + { + PropertyChangeHelper.ChangePropertyAndNotify(() => data.ZoneBoundaryRight = value, propertyChangeHandler); + } + } + + [DynamicReadOnlyValidationMethod] + public bool DynamicReadOnlyValidationMethod(string propertyName) + { + if (propertyName == nameof(ZoningBoundariesDeterminationType)) + { + return CreateZones == false; + } + + if (propertyName == nameof(ZoneBoundaryLeft) || propertyName == nameof(ZoneBoundaryRight)) + { + return CreateZones == false || ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic; + } + + return false; + } + public override string ToString() { return string.Empty; Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/ConfigurationZoningBoundariesDeterminationType.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/ConfigurationZoningBoundariesDeterminationType.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/ConfigurationZoningBoundariesDeterminationType.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,39 @@ +// Copyright (C) Stichting Deltares 2017. 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. + +namespace Ringtoets.MacroStabilityInwards.IO.Configurations +{ + /// + /// Defines the various zoning boundaries determination types in a calculation configuration. + /// + public enum ConfigurationZoningBoundariesDeterminationType + { + /// + /// Automatic zoning boundaries determination. + /// + Automatic = 1, + + /// + /// Manual zoning boundaries determination. + /// + Manual = 2 + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/Helpers/ConfigurationZoningBoundariesDeterminationTypeConverter.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/Helpers/ConfigurationZoningBoundariesDeterminationTypeConverter.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/Helpers/ConfigurationZoningBoundariesDeterminationTypeConverter.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,108 @@ +// Copyright (C) Stichting Deltares 2017. 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.ComponentModel; +using System.Globalization; +using Ringtoets.MacroStabilityInwards.Data; + +namespace Ringtoets.MacroStabilityInwards.IO.Configurations.Helpers +{ + /// + /// Converts to and back. + /// + public class ConfigurationZoningBoundariesDeterminationTypeConverter : TypeConverter + { + public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) + { + return destinationType == typeof(MacroStabilityInwardsZoningBoundariesDeterminationType) + || base.CanConvertTo(context, destinationType); + } + + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + return sourceType == typeof(MacroStabilityInwardsZoningBoundariesDeterminationType) + || base.CanConvertTo(context, sourceType); + } + + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + { + if (destinationType == typeof(string)) + { + var type = (ConfigurationZoningBoundariesDeterminationType) value; + switch (type) + { + case ConfigurationZoningBoundariesDeterminationType.Automatic: + return MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeAutomatic; + case ConfigurationZoningBoundariesDeterminationType.Manual: + return MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeManual; + default: + throw new NotSupportedException(); + } + } + if (destinationType == typeof(MacroStabilityInwardsZoningBoundariesDeterminationType)) + { + var type = (ConfigurationZoningBoundariesDeterminationType) value; + switch (type) + { + case ConfigurationZoningBoundariesDeterminationType.Automatic: + return MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic; + case ConfigurationZoningBoundariesDeterminationType.Manual: + return MacroStabilityInwardsZoningBoundariesDeterminationType.Manual; + default: + throw new NotSupportedException(); + } + } + return base.ConvertTo(context, culture, value, destinationType); + } + + public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) + { + var text = value as string; + if (text != null) + { + switch (text) + { + case MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeAutomatic: + return ConfigurationZoningBoundariesDeterminationType.Automatic; + case MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeManual: + return ConfigurationZoningBoundariesDeterminationType.Manual; + default: + throw new NotSupportedException(); + } + } + var zoningBoundariesDeterminationType = value as MacroStabilityInwardsZoningBoundariesDeterminationType?; + if (zoningBoundariesDeterminationType != null) + { + switch (zoningBoundariesDeterminationType) + { + case MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic: + return ConfigurationZoningBoundariesDeterminationType.Automatic; + case MacroStabilityInwardsZoningBoundariesDeterminationType.Manual: + return ConfigurationZoningBoundariesDeterminationType.Manual; + default: + throw new NotSupportedException(); + } + } + return base.ConvertFrom(context, culture, value); + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfiguration.cs =================================================================== diff -u -r6d2a451c86300fe64ea80a345ab6d37549007ea0 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfiguration.cs (.../MacroStabilityInwardsCalculationConfiguration.cs) (revision 6d2a451c86300fe64ea80a345ab6d37549007ea0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfiguration.cs (.../MacroStabilityInwardsCalculationConfiguration.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -92,11 +92,6 @@ public double? MaximumSliceWidth { get; set; } /// - /// Gets or sets whether zones should be created. - /// - public bool? CreateZones { get; set; } - - /// /// Gets or sets the name for the calculation. /// /// Thrown when is null. @@ -116,6 +111,30 @@ } } + #region Zoning + + /// + /// Gets or sets whether zones should be created. + /// + public bool? CreateZones { get; set; } + + /// + /// Gets or sets the zoning boundaries determination type. + /// + public ConfigurationZoningBoundariesDeterminationType? ZoningBoundariesDeterminationType { get; set; } + + /// + /// Gets or sets the left zone boundary. + /// + public double? ZoneBoundaryLeft { get; set; } + + /// + /// Gets or sets the right zone boundary. + /// + public double? ZoneBoundaryRight { get; set; } + + #endregion + #region Water stresses /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationExporter.cs =================================================================== diff -u -r6d2a451c86300fe64ea80a345ab6d37549007ea0 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationExporter.cs (.../MacroStabilityInwardsCalculationConfigurationExporter.cs) (revision 6d2a451c86300fe64ea80a345ab6d37549007ea0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationExporter.cs (.../MacroStabilityInwardsCalculationConfigurationExporter.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -80,6 +80,8 @@ SlipPlaneMinimumLength = input.SlipPlaneMinimumLength, MaximumSliceWidth = input.MaximumSliceWidth, CreateZones = input.CreateZones, + ZoneBoundaryLeft = input.ZoneBoundaryLeft, + ZoneBoundaryRight = input.ZoneBoundaryRight, TangentLineZTop = input.TangentLineZTop, TangentLineZBottom = input.TangentLineZBottom, TangentLineNumber = input.TangentLineNumber, @@ -126,6 +128,12 @@ new ConfigurationTangentLineDeterminationTypeConverter().ConvertFrom(input.TangentLineDeterminationType); } + if (Enum.IsDefined(typeof(MacroStabilityInwardsZoningBoundariesDeterminationType), input.ZoningBoundariesDeterminationType)) + { + calculationConfiguration.ZoningBoundariesDeterminationType = (ConfigurationZoningBoundariesDeterminationType?) + new ConfigurationZoningBoundariesDeterminationTypeConverter().ConvertFrom(input.ZoningBoundariesDeterminationType); + } + return calculationConfiguration; } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationImporter.cs =================================================================== diff -u -r3a62b2b200280324d24369d709f820d5d0cf6a94 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationImporter.cs (.../MacroStabilityInwardsCalculationConfigurationImporter.cs) (revision 3a62b2b200280324d24369d709f820d5d0cf6a94) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationImporter.cs (.../MacroStabilityInwardsCalculationConfigurationImporter.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -99,6 +99,7 @@ { SetSimpleProperties(calculationConfiguration, calculation.InputParameters); + SetZoningBoundariesDeterminationType(calculationConfiguration, calculation.InputParameters); SetDikeSoilScenario(calculationConfiguration, calculation.InputParameters); SetGridDeterminationType(calculationConfiguration, calculation.InputParameters); SetTangentLineDeterminationType(calculationConfiguration, calculation.InputParameters); @@ -636,21 +637,48 @@ input.MaximumSliceWidth = (RoundedDouble) calculationConfiguration.MaximumSliceWidth.Value; } + if (calculationConfiguration.MoveGrid.HasValue) + { + input.MoveGrid = calculationConfiguration.MoveGrid.Value; + } + if (calculationConfiguration.CreateZones.HasValue) { input.CreateZones = calculationConfiguration.CreateZones.Value; } - if (calculationConfiguration.MoveGrid.HasValue) + if (calculationConfiguration.ZoneBoundaryLeft.HasValue) { - input.MoveGrid = calculationConfiguration.MoveGrid.Value; + input.ZoneBoundaryLeft = (RoundedDouble) calculationConfiguration.ZoneBoundaryLeft.Value; } + if (calculationConfiguration.ZoneBoundaryRight.HasValue) + { + input.ZoneBoundaryRight = (RoundedDouble) calculationConfiguration.ZoneBoundaryRight.Value; + } } /// + /// Assigns the zoning boundary determination type. + /// + /// The read calculation configuration. + /// The calculation input to configure. + private static void SetZoningBoundariesDeterminationType(MacroStabilityInwardsCalculationConfiguration configuration, + MacroStabilityInwardsInput input) + { + if (!configuration.ZoningBoundariesDeterminationType.HasValue) + { + return; + } + + input.ZoningBoundariesDeterminationType = (MacroStabilityInwardsZoningBoundariesDeterminationType) + new ConfigurationZoningBoundariesDeterminationTypeConverter().ConvertTo(configuration.ZoningBoundariesDeterminationType.Value, + typeof(MacroStabilityInwardsZoningBoundariesDeterminationType)); + } + + /// /// Assigns the dike soil scenario. /// - /// The read calculation read. + /// The read calculation configuration. /// The calculation input to configure. private static void SetDikeSoilScenario(MacroStabilityInwardsCalculationConfiguration configuration, MacroStabilityInwardsInput input) @@ -667,7 +695,7 @@ /// /// Assigns the grid determination type. /// - /// The read calculation read. + /// The read calculation configuration. /// The calculation input to configure. private static void SetGridDeterminationType(MacroStabilityInwardsCalculationConfiguration configuration, MacroStabilityInwardsInput input) @@ -684,7 +712,7 @@ /// /// Assigns the tangent line determination type. /// - /// The read calculation read. + /// The read calculation configuration. /// The calculation input to configure. private static void SetTangentLineDeterminationType(MacroStabilityInwardsCalculationConfiguration configuration, MacroStabilityInwardsInput input) Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationReader.cs =================================================================== diff -u -rd5c726012814b171018b95de1a37f80c9a692594 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationReader.cs (.../MacroStabilityInwardsCalculationConfigurationReader.cs) (revision d5c726012814b171018b95de1a37f80c9a692594) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationReader.cs (.../MacroStabilityInwardsCalculationConfigurationReader.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -249,6 +249,12 @@ configuration.CreateZones = zonesElement.GetBoolValueFromDescendantElement( MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.CreateZonesElement); + configuration.ZoningBoundariesDeterminationType = (ConfigurationZoningBoundariesDeterminationType?) zonesElement.GetConvertedValueFromDescendantStringElement( + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeElement); + configuration.ZoneBoundaryLeft = zonesElement.GetDoubleValueFromDescendantElement( + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoneBoundaryLeft); + configuration.ZoneBoundaryRight = zonesElement.GetDoubleValueFromDescendantElement( + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoneBoundaryRight); } /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.cs =================================================================== diff -u -rf0525483bb0f01219ec1990b2e366de5faa7cb96 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.cs (.../MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.cs) (revision f0525483bb0f01219ec1990b2e366de5faa7cb96) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.cs (.../MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -61,16 +61,47 @@ /// public const string MaximumSliceWidthElement = "maximalelamelbreedte"; + #region Zones + /// /// The identifier for zones elements. /// public const string ZonesElement = "zonering"; /// - /// The tag of the element containing the value indicating if zones should be created automatically. + /// The tag of the element containing the value indicating if zones should be created. /// public const string CreateZonesElement = "bepaling"; + /// + /// The tag of the element containing the value indicating the method to determine the zones. + /// + public const string ZoningBoundariesDeterminationTypeElement = "methode"; + + /// + /// The possible content of the + /// element indicating zoning boundary determination. + /// + public const string ZoningBoundariesDeterminationTypeAutomatic = "automatisch"; + + /// + /// The possible content of the + /// element indicating manual zoning boundary determination. + /// + public const string ZoningBoundariesDeterminationTypeManual = "handmatig"; + + /// + /// The tag of the element containing the value indicating the left boundary of the zone. + /// + public const string ZoneBoundaryLeft = "zoneringsgrenslinks"; + + /// + /// The tag of the element containing the value indicating the right boundary of the zone. + /// + public const string ZoneBoundaryRight = "zoneringsgrensrechts"; + + #endregion + #region Water stresses /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationWriter.cs =================================================================== diff -u -rd5c726012814b171018b95de1a37f80c9a692594 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationWriter.cs (.../MacroStabilityInwardsCalculationConfigurationWriter.cs) (revision d5c726012814b171018b95de1a37f80c9a692594) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationWriter.cs (.../MacroStabilityInwardsCalculationConfigurationWriter.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -108,6 +108,32 @@ } /// + /// Writes the in XML format to file when it has a value. + /// + /// The writer to use for writing. + /// The XML element name. + /// The dike soil scenario to write. + /// Thrown when the + /// is closed. + /// Thrown when the conversion of + /// cannot be performed. + private static void WriteDikeSoilScenarioWhenContentAvailable(XmlWriter writer, + string elementName, + ConfigurationDikeSoilScenario? dikeSoilScenario) + { + if (!dikeSoilScenario.HasValue) + { + return; + } + + var typeConverter = new ConfigurationDikeSoilScenarioTypeConverter(); + writer.WriteElementString(elementName, + typeConverter.ConvertToInvariantString(dikeSoilScenario.Value)); + } + + #region Zones + + /// /// Writes the zone related properties in XML format to file. /// /// The writer to use for writing. @@ -122,34 +148,46 @@ WriteElementWhenContentAvailable(writer, MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.CreateZonesElement, configuration.CreateZones); + WriteZoningBoundariesDeterminationTypeWhenContentAvailable( + writer, + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeElement, + configuration.ZoningBoundariesDeterminationType); + WriteElementWhenContentAvailable(writer, + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoneBoundaryLeft, + configuration.ZoneBoundaryLeft); + WriteElementWhenContentAvailable(writer, + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoneBoundaryRight, + configuration.ZoneBoundaryRight); writer.WriteEndElement(); } /// - /// Writes the in XML format to file when it has a value. + /// Writes the in XML format to file when it has a value. /// /// The writer to use for writing. /// The XML element name. - /// The dike soil scenario to write. + /// The zoning boundaries determination type to write. /// Thrown when the /// is closed. /// Thrown when the conversion of - /// cannot be performed. - private static void WriteDikeSoilScenarioWhenContentAvailable(XmlWriter writer, - string elementName, - ConfigurationDikeSoilScenario? dikeSoilScenario) + /// cannot be performed. + private static void WriteZoningBoundariesDeterminationTypeWhenContentAvailable(XmlWriter writer, + string elementName, + ConfigurationZoningBoundariesDeterminationType? zoningBoundariesDeterminationType) { - if (!dikeSoilScenario.HasValue) + if (!zoningBoundariesDeterminationType.HasValue) { return; } - var typeConverter = new ConfigurationDikeSoilScenarioTypeConverter(); + var typeConverter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); writer.WriteElementString(elementName, - typeConverter.ConvertToInvariantString(dikeSoilScenario.Value)); + typeConverter.ConvertToInvariantString(zoningBoundariesDeterminationType.Value)); } + #endregion + #region Write water stresses /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Resources/MacroStabiliteitBinnenwaartsZonesSchema.xsd =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Resources/MacroStabiliteitBinnenwaartsZonesSchema.xsd (.../MacroStabiliteitBinnenwaartsZonesSchema.xsd) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Resources/MacroStabiliteitBinnenwaartsZonesSchema.xsd (.../MacroStabiliteitBinnenwaartsZonesSchema.xsd) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -27,9 +27,36 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Ringtoets.MacroStabilityInwards.IO.csproj =================================================================== diff -u -r04f5526f955c773d4987e820e2aca2614dfbd8d8 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Ringtoets.MacroStabilityInwards.IO.csproj (.../Ringtoets.MacroStabilityInwards.IO.csproj) (revision 04f5526f955c773d4987e820e2aca2614dfbd8d8) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Ringtoets.MacroStabilityInwards.IO.csproj (.../Ringtoets.MacroStabilityInwards.IO.csproj) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -35,9 +35,11 @@ Properties\GlobalAssembly.cs + + Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanCalculatorInput.cs =================================================================== diff -u -rd485f27eb5a6d688406882dce60c3229e22f2ac2 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanCalculatorInput.cs (.../UpliftVanCalculatorInput.cs) (revision d485f27eb5a6d688406882dce60c3229e22f2ac2) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanCalculatorInput.cs (.../UpliftVanCalculatorInput.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -88,6 +88,7 @@ PhreaticLineOffsetsExtreme = properties.PhreaticLineOffsetsExtreme; PhreaticLineOffsetsDaily = properties.PhreaticLineOffsetsDaily; SlipPlane = properties.SlipPlane; + SlipPlaneConstraints = properties.SlipPlaneConstraints; WaterLevelRiverAverage = properties.WaterLevelRiverAverage; WaterLevelPolderExtreme = properties.WaterLevelPolderExtreme; WaterLevelPolderDaily = properties.WaterLevelPolderDaily; @@ -105,10 +106,6 @@ DikeSoilScenario = properties.DikeSoilScenario; MoveGrid = properties.MoveGrid; MaximumSliceWidth = properties.MaximumSliceWidth; - CreateZones = properties.CreateZones; - AutomaticForbiddenZones = properties.AutomaticForbiddenZones; - SlipPlaneMinimumDepth = properties.SlipPlaneMinimumDepth; - SlipPlaneMinimumLength = properties.SlipPlaneMinimumLength; } /// @@ -140,8 +137,6 @@ PenetrationLengthDaily = double.NaN; DikeSoilScenario = MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay; MaximumSliceWidth = double.NaN; - SlipPlaneMinimumDepth = double.NaN; - SlipPlaneMinimumLength = double.NaN; } #region Properties @@ -198,6 +193,11 @@ public UpliftVanSlipPlane SlipPlane { internal get; set; } /// + /// Gets or sets the slip plane constraints. + /// + public UpliftVanSlipPlaneConstraints SlipPlaneConstraints { internal get; set; } + + /// /// Gets or sets the dike soil scenario. /// public MacroStabilityInwardsDikeSoilScenario DikeSoilScenario { internal get; set; } @@ -296,28 +296,6 @@ /// public double MaximumSliceWidth { internal get; set; } - /// - /// Gets or sets whether zones should be created. - /// - public bool CreateZones { internal get; set; } - - /// - /// Gets or sets whether forbidden zones are automatically determined or not. - /// - public bool AutomaticForbiddenZones { internal get; set; } - - /// - /// Gets or sets the minimum depth of the slip plane. - /// [m] - /// - public double SlipPlaneMinimumDepth { internal get; set; } - - /// - /// Gets or sets the minimum length of the slip plane. - /// [m] - /// - public double SlipPlaneMinimumLength { internal get; set; } - #endregion } @@ -375,6 +353,11 @@ public UpliftVanSlipPlane SlipPlane { get; } /// + /// Gets the slip plane constraints. + /// + public UpliftVanSlipPlaneConstraints SlipPlaneConstraints { get; } + + /// /// Gets the dike soil scenario. /// public MacroStabilityInwardsDikeSoilScenario DikeSoilScenario { get; } @@ -473,28 +456,6 @@ /// public double MaximumSliceWidth { get; } - /// - /// Gets whether zones should be created. - /// - public bool CreateZones { get; } - - /// - /// Gets whether forbidden zones are automatically determined or not. - /// - public bool AutomaticForbiddenZones { get; } - - /// - /// Gets the minimum depth of the slip plane. - /// [m] - /// - public double SlipPlaneMinimumDepth { get; } - - /// - /// Gets the minimum length of the slip plane. - /// [m] - /// - public double SlipPlaneMinimumLength { get; } - #endregion } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanSlipPlaneConstraints.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanSlipPlaneConstraints.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanSlipPlaneConstraints.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,108 @@ +// Copyright (C) Stichting Deltares 2017. 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. + +namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input +{ + /// + /// The Uplift Van slip plane constraints that are used to perform a calculation. + /// + public class UpliftVanSlipPlaneConstraints + { + /// + /// Creates a new instance of . + /// + /// The slip plane minimum depth. + /// The slip plane minimum length. + /// Indicator whether zones should be created. + /// The following values are set: + /// + /// is set to true; + /// is set to ; + /// is set to . + /// + /// + public UpliftVanSlipPlaneConstraints(double slipPlaneMinimumDepth, + double slipPlaneMinimumLength, + bool createZones) + : this(slipPlaneMinimumDepth, slipPlaneMinimumLength, + double.NaN, double.NaN, createZones, true) {} + + /// + /// Creates a new instance of . + /// + /// The slip plane minimum depth. + /// The slip plane minimum length. + /// The left zone boundary. + /// The right zone boundary. + /// will be set to true and + /// will be set to false. + public UpliftVanSlipPlaneConstraints(double slipPlaneMinimumDepth, double slipPlaneMinimumLength, + double zoneBoundaryLeft, double zoneBoundaryRight) + : this(slipPlaneMinimumDepth, slipPlaneMinimumLength, zoneBoundaryLeft, + zoneBoundaryRight, true, false) {} + + private UpliftVanSlipPlaneConstraints(double slipPlaneMinimumDepth, double slipPlaneMinimumLength, + double zoneBoundaryLeft, double zoneBoundaryRight, + bool createZones, bool automaticForbiddenZones) + { + CreateZones = createZones; + AutomaticForbiddenZones = automaticForbiddenZones; + ZoneBoundaryLeft = zoneBoundaryLeft; + ZoneBoundaryRight = zoneBoundaryRight; + SlipPlaneMinimumDepth = slipPlaneMinimumDepth; + SlipPlaneMinimumLength = slipPlaneMinimumLength; + } + + /// + /// Gets whether zones should be created. + /// + public bool CreateZones { get; } + + /// + /// Gets whether forbidden zones are automatically determined or not. + /// + public bool AutomaticForbiddenZones { get; } + + /// + /// Gets the left zone boundary. + /// [m] + /// + public double ZoneBoundaryLeft { get; } + + /// + /// Gets the right zone boundary. + /// [m] + /// + public double ZoneBoundaryRight { get; } + + /// + /// Gets the minimum depth of the slip plane. + /// [m] + /// + public double SlipPlaneMinimumDepth { get; } + + /// + /// Gets the minimum length of the slip plane. + /// [m] + /// + public double SlipPlaneMinimumLength { get; } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/UpliftVanCalculator.cs =================================================================== diff -u -rff37b79ad9133423d04e991ac6152cd6ed552274 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/UpliftVanCalculator.cs (.../UpliftVanCalculator.cs) (revision ff37b79ad9133423d04e991ac6152cd6ed552274) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/UpliftVanCalculator.cs (.../UpliftVanCalculator.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -120,11 +120,8 @@ upliftVanKernel.LocationDaily = UpliftVanStabilityLocationCreator.CreateDaily(input); upliftVanKernel.SurfaceLine = SurfaceLineCreator.Create(input.SurfaceLine, input.LandwardDirection); upliftVanKernel.SlipPlaneUpliftVan = SlipPlaneUpliftVanCreator.Create(input.SlipPlane); + upliftVanKernel.SlipPlaneConstraints = SlipPlaneConstraintsCreator.Create(input.SlipPlaneConstraints); upliftVanKernel.GridAutomaticDetermined = input.SlipPlane.GridAutomaticDetermined; - upliftVanKernel.CreateZones = input.CreateZones; - upliftVanKernel.AutomaticForbiddenZones = input.AutomaticForbiddenZones; - upliftVanKernel.SlipPlaneMinimumDepth = input.SlipPlaneMinimumDepth; - upliftVanKernel.SlipPlaneMinimumLength = input.SlipPlaneMinimumLength; return upliftVanKernel; } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Creators/Input/SlipPlaneConstraintsCreator.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Creators/Input/SlipPlaneConstraintsCreator.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Creators/Input/SlipPlaneConstraintsCreator.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,59 @@ +// Copyright (C) Stichting Deltares 2017. 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 Deltares.WTIStability; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Kernels.UpliftVan; + +namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Creators.Input +{ + /// + /// Creates instances which are required by . + /// + public static class SlipPlaneConstraintsCreator + { + /// + /// Creates a based on the given + /// which can be used by . + /// + /// The to get the information from. + /// A new with the given information from . + /// Thrown when is null. + public static SlipPlaneConstraints Create(UpliftVanSlipPlaneConstraints input) + { + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + return new SlipPlaneConstraints + { + AutomaticForbiddenZones = input.AutomaticForbiddenZones, + CreateZones = input.CreateZones, + SlipPlaneMinDepth = input.SlipPlaneMinimumDepth, + SlipPlaneMinLength = input.SlipPlaneMinimumLength, + XEntryMax = input.ZoneBoundaryRight, + XEntryMin = input.ZoneBoundaryLeft + }; + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/IUpliftVanKernel.cs =================================================================== diff -u -r72b12726b73e7e011bed836163635b64220c23f1 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/IUpliftVanKernel.cs (.../IUpliftVanKernel.cs) (revision 72b12726b73e7e011bed836163635b64220c23f1) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/IUpliftVanKernel.cs (.../IUpliftVanKernel.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -81,33 +81,16 @@ SlipPlaneUpliftVan SlipPlaneUpliftVan { set; } /// - /// Sets whether the grid is automatically determined or not. + /// Sets the slip plane constraints. /// - bool GridAutomaticDetermined { set; } + SlipPlaneConstraints SlipPlaneConstraints { set; } /// - /// Sets whether zones should be created. + /// Sets whether the grid is automatically determined or not. /// - bool CreateZones { set; } + bool GridAutomaticDetermined { set; } /// - /// Sets whether forbidden zones are automatically determined or not. - /// - bool AutomaticForbiddenZones { set; } - - /// - /// Sets the minimum depth of the slip plane. - /// [m] - /// - double SlipPlaneMinimumDepth { set; } - - /// - /// Sets the minimum length of the slip plane. - /// [m] - /// - double SlipPlaneMinimumLength { set; } - - /// /// Gets the factor of stability. /// double FactorOfStability { get; } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/UpliftVanKernelWrapper.cs =================================================================== diff -u -r7512f4503ba4ba4c2419f7f74357f259bc4b9f41 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/UpliftVanKernelWrapper.cs (.../UpliftVanKernelWrapper.cs) (revision 7512f4503ba4ba4c2419f7f74357f259bc4b9f41) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/UpliftVanKernelWrapper.cs (.../UpliftVanKernelWrapper.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -45,7 +45,6 @@ { stabilityModel = new StabilityModel { - SlipPlaneConstraints = new SlipPlaneConstraints(), GridOrientation = GridOrientation.Inwards, SlipCircle = new SlipCircle(), SearchAlgorithm = SearchAlgorithm.Grid, @@ -113,6 +112,14 @@ } } + public SlipPlaneConstraints SlipPlaneConstraints + { + set + { + stabilityModel.SlipPlaneConstraints = value; + } + } + public bool MoveGrid { set @@ -145,38 +152,6 @@ } } - public bool CreateZones - { - set - { - stabilityModel.SlipPlaneConstraints.CreateZones = value; - } - } - - public bool AutomaticForbiddenZones - { - set - { - stabilityModel.SlipPlaneConstraints.AutomaticForbiddenZones = value; - } - } - - public double SlipPlaneMinimumDepth - { - set - { - stabilityModel.SlipPlaneConstraints.SlipPlaneMinDepth = value; - } - } - - public double SlipPlaneMinimumLength - { - set - { - stabilityModel.SlipPlaneConstraints.SlipPlaneMinLength = value; - } - } - public double FactorOfStability { get; private set; } public double ZValue { get; private set; } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Ringtoets.MacroStabilityInwards.KernelWrapper.csproj =================================================================== diff -u -r594918877fb934fc9e5c1157d3c8dec4b53046ee -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Ringtoets.MacroStabilityInwards.KernelWrapper.csproj (.../Ringtoets.MacroStabilityInwards.KernelWrapper.csproj) (revision 594918877fb934fc9e5c1157d3c8dec4b53046ee) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Ringtoets.MacroStabilityInwards.KernelWrapper.csproj (.../Ringtoets.MacroStabilityInwards.KernelWrapper.csproj) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -49,6 +49,7 @@ + @@ -70,6 +71,7 @@ + Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Converters/UpliftVanSlipPlaneConstraintsConverter.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Converters/UpliftVanSlipPlaneConstraintsConverter.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Converters/UpliftVanSlipPlaneConstraintsConverter.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,56 @@ +// Copyright (C) Stichting Deltares 2017. 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 Ringtoets.MacroStabilityInwards.Data; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; + +namespace Ringtoets.MacroStabilityInwards.Service.Converters +{ + /// + /// Converter to convert slip plane constraints + /// into . + /// + internal static class UpliftVanSlipPlaneConstraintsConverter + { + /// + /// Converts slip plane constraints properties + /// into . + /// + /// The input to get the properties from. + /// The converted . + /// Thrown when + /// is null. + public static UpliftVanSlipPlaneConstraints Convert(MacroStabilityInwardsInput input) + { + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + return input.CreateZones && input.ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Manual + ? new UpliftVanSlipPlaneConstraints(input.SlipPlaneMinimumDepth, input.SlipPlaneMinimumLength, + input.ZoneBoundaryLeft, input.ZoneBoundaryRight) + : new UpliftVanSlipPlaneConstraints(input.SlipPlaneMinimumDepth, input.SlipPlaneMinimumLength, + input.CreateZones); + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsCalculationService.cs =================================================================== diff -u -rf28fac2f7d391c4d48691c180f7ae8335b278c72 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsCalculationService.cs (.../MacroStabilityInwardsCalculationService.cs) (revision f28fac2f7d391c4d48691c180f7ae8335b278c72) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsCalculationService.cs (.../MacroStabilityInwardsCalculationService.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -172,6 +172,7 @@ PhreaticLineOffsetsExtreme = PhreaticLineOffsetsConverter.Convert(inputParameters.LocationInputExtreme), PhreaticLineOffsetsDaily = PhreaticLineOffsetsConverter.Convert(inputParameters.LocationInputDaily), SlipPlane = UpliftVanSlipPlaneConverter.Convert(inputParameters), + SlipPlaneConstraints = UpliftVanSlipPlaneConstraintsConverter.Convert(inputParameters), DikeSoilScenario = inputParameters.DikeSoilScenario, WaterLevelRiverAverage = inputParameters.WaterLevelRiverAverage, WaterLevelPolderExtreme = inputParameters.LocationInputExtreme.WaterLevelPolder, @@ -188,11 +189,7 @@ PenetrationLengthDaily = inputParameters.LocationInputDaily.PenetrationLength, AdjustPhreaticLine3And4ForUplift = inputParameters.AdjustPhreaticLine3And4ForUplift, MoveGrid = inputParameters.MoveGrid, - MaximumSliceWidth = inputParameters.MaximumSliceWidth, - CreateZones = inputParameters.CreateZones, - AutomaticForbiddenZones = inputParameters.ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, - SlipPlaneMinimumDepth = inputParameters.SlipPlaneMinimumDepth, - SlipPlaneMinimumLength = inputParameters.SlipPlaneMinimumLength + MaximumSliceWidth = inputParameters.MaximumSliceWidth }); } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs =================================================================== diff -u -re4e0e6f48ce1decab5f8a3831d8663abc1799fbb -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs (.../MacroStabilityInwardsInputValidator.cs) (revision e4e0e6f48ce1decab5f8a3831d8663abc1799fbb) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs (.../MacroStabilityInwardsInputValidator.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -21,7 +21,10 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; +using Core.Common.Base; +using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Ringtoets.Common.Service; using Ringtoets.Common.Service.ValidationRules; @@ -60,6 +63,7 @@ if (!coreValidationError.Any()) { validationResults.AddRange(ValidateSoilLayers(inputParameters)); + validationResults.AddRange(ValidateZoneBoundaries(inputParameters)); validationResults.AddRange(ValidateTangentLines(inputParameters)); } @@ -88,6 +92,31 @@ } } + private static IEnumerable ValidateZoneBoundaries(MacroStabilityInwardsInput inputParameters) + { + if (!inputParameters.CreateZones + || inputParameters.ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic) + { + yield break; + } + + RoundedDouble zoneBoundaryLeft = inputParameters.ZoneBoundaryLeft; + RoundedDouble zoneBoundaryRight = inputParameters.ZoneBoundaryRight; + + if (zoneBoundaryLeft > zoneBoundaryRight) + { + yield return Resources.MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_BoundaryLeft_should_be_smaller_than_or_equal_to_BoundaryRight; + } + + MacroStabilityInwardsSurfaceLine surfaceLine = inputParameters.SurfaceLine; + if (!surfaceLine.ValidateInRange(zoneBoundaryLeft) || !surfaceLine.ValidateInRange(zoneBoundaryRight)) + { + var validityRange = new Range(surfaceLine.LocalGeometry.First().X, surfaceLine.LocalGeometry.Last().X); + yield return string.Format(Resources.MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_must_be_in_Range_0, + validityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture)); + } + } + private static IEnumerable ValidateTangentLines(MacroStabilityInwardsInput inputParameters) { if (inputParameters.TangentLineZTop == inputParameters.TangentLineZBottom Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Properties/Resources.Designer.cs =================================================================== diff -u -re4e0e6f48ce1decab5f8a3831d8663abc1799fbb -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision e4e0e6f48ce1decab5f8a3831d8663abc1799fbb) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -171,6 +171,26 @@ } /// + /// Looks up a localized string similar to Zoneringsgrens links moet kleiner zijn dan of gelijk zijn aan zoneringsgrens rechts.. + /// + internal static string MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_BoundaryLeft_should_be_smaller_than_or_equal_to_BoundaryRight { + get { + return ResourceManager.GetString("MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_Boundar" + + "yLeft_should_be_smaller_than_or_equal_to_BoundaryRight", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zoneringsgrenzen moeten op het profiel liggen (bereik {0}).. + /// + internal static string MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_must_be_in_Range_0 { + get { + return ResourceManager.GetString("MacroStabilityInwardsInputValidator_ValidateZoneBoundaries_ZoneBoundaries_must_be" + + "_in_Range_0", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Het aantal tangentlijnen moet 1 zijn wanneer tangentlijn Z-boven gelijk is aan tangentlijn Z-onder.. /// internal static string MacroStabilityInwardsInputValidator_ValidateTangentLines_TangentLineNumber_must_be_one_when_TangentLineTop_equals_TangentLineBottom { Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Properties/Resources.resx =================================================================== diff -u -re4e0e6f48ce1decab5f8a3831d8663abc1799fbb -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Properties/Resources.resx (.../Resources.resx) (revision e4e0e6f48ce1decab5f8a3831d8663abc1799fbb) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Properties/Resources.resx (.../Resources.resx) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -144,6 +144,12 @@ De profielschematisatie moet op de ondergrondschematisatie liggen. + + Zoneringsgrenzen moeten op het profiel liggen (bereik {0}). + + + Zoneringsgrens links moet kleiner zijn dan of gelijk zijn aan zoneringsgrens rechts. + Het aantal tangentlijnen moet 1 zijn wanneer tangentlijn Z-boven gelijk is aan tangentlijn Z-onder. Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Ringtoets.MacroStabilityInwards.Service.csproj =================================================================== diff -u -r04f5526f955c773d4987e820e2aca2614dfbd8d8 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Ringtoets.MacroStabilityInwards.Service.csproj (.../Ringtoets.MacroStabilityInwards.Service.csproj) (revision 04f5526f955c773d4987e820e2aca2614dfbd8d8) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/Ringtoets.MacroStabilityInwards.Service.csproj (.../Ringtoets.MacroStabilityInwards.Service.csproj) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -40,6 +40,7 @@ + Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsInputTest.cs =================================================================== diff -u -raa967d02f0b4b19c03083f019278054bd2b8aee1 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsInputTest.cs (.../MacroStabilityInwardsInputTest.cs) (revision aa967d02f0b4b19c03083f019278054bd2b8aee1) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsInputTest.cs (.../MacroStabilityInwardsInputTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -143,6 +143,12 @@ Assert.IsTrue(inputParameters.CreateZones); Assert.AreEqual(MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, inputParameters.ZoningBoundariesDeterminationType); + Assert.IsNaN(inputParameters.ZoneBoundaryLeft); + Assert.AreEqual(2, inputParameters.ZoneBoundaryLeft.NumberOfDecimalPlaces); + + Assert.IsNaN(inputParameters.ZoneBoundaryRight); + Assert.AreEqual(2, inputParameters.ZoneBoundaryRight.NumberOfDecimalPlaces); + Assert.IsNotNull(inputParameters.WaternetExtreme); Assert.IsNotNull(inputParameters.WaternetDaily); } @@ -234,6 +240,8 @@ double tangentLineZTop = random.GetFromRange(1.0, 2.0); double tangentLineZBottom = random.GetFromRange(0.0, 1.0); int tangentLineNumber = random.Next(1, 51); + double zoneBoundaryLeft = random.NextDouble(); + double zoneBoundaryRight = random.NextDouble(); // Call var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()) @@ -254,7 +262,9 @@ PiezometricHeadPhreaticLine2Inwards = (RoundedDouble) piezometricHeadPhreaticLine2Inwards, TangentLineZTop = (RoundedDouble) tangentLineZTop, TangentLineZBottom = (RoundedDouble) tangentLineZBottom, - TangentLineNumber = tangentLineNumber + TangentLineNumber = tangentLineNumber, + ZoneBoundaryLeft = (RoundedDouble) zoneBoundaryLeft, + ZoneBoundaryRight = (RoundedDouble) zoneBoundaryRight }; // Assert @@ -301,6 +311,12 @@ Assert.AreEqual(tangentLineZBottom, input.TangentLineZBottom, input.TangentLineZBottom.GetAccuracy()); Assert.AreEqual(tangentLineNumber, input.TangentLineNumber); + + Assert.AreEqual(2, input.ZoneBoundaryLeft.NumberOfDecimalPlaces); + Assert.AreEqual(zoneBoundaryLeft, input.ZoneBoundaryLeft, input.ZoneBoundaryLeft.GetAccuracy()); + + Assert.AreEqual(2, input.ZoneBoundaryRight.NumberOfDecimalPlaces); + Assert.AreEqual(zoneBoundaryRight, input.ZoneBoundaryRight, input.ZoneBoundaryRight.GetAccuracy()); } [Test] Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs =================================================================== diff -u -r9e2f9f7fe2d7daf45c943fc446cd9edc4298290d -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs (.../MacroStabilityInwardsCalculationScenarioFactoryTest.cs) (revision 9e2f9f7fe2d7daf45c943fc446cd9edc4298290d) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs (.../MacroStabilityInwardsCalculationScenarioFactoryTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -304,6 +304,11 @@ Assert.AreEqual(1, inputParameters.RightGrid.NumberOfVerticalPoints); Assert.AreEqual(1, inputParameters.RightGrid.NumberOfHorizontalPoints); + Assert.IsTrue(inputParameters.CreateZones); + Assert.AreEqual(MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, inputParameters.ZoningBoundariesDeterminationType); + Assert.AreEqual(0.1, inputParameters.ZoneBoundaryLeft, inputParameters.ZoneBoundaryLeft.GetAccuracy()); + Assert.AreEqual(0.2, inputParameters.ZoneBoundaryRight, inputParameters.ZoneBoundaryRight.GetAccuracy()); + Assert.AreEqual(0, inputParameters.StochasticSoilProfile.Probability); Assert.AreEqual("Ondergrondschematisatie", inputParameters.StochasticSoilProfile.SoilProfile.Name); Assert.IsInstanceOf(inputParameters.StochasticSoilProfile.SoilProfile); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsTestDataGeneratorTest.cs =================================================================== diff -u -rc4136f9deafeaf014ebb35c316f10bea91ee4d2e -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsTestDataGeneratorTest.cs (.../MacroStabilityInwardsTestDataGeneratorTest.cs) (revision c4136f9deafeaf014ebb35c316f10bea91ee4d2e) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsTestDataGeneratorTest.cs (.../MacroStabilityInwardsTestDataGeneratorTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -201,6 +201,9 @@ Assert.IsNaN(inputExtreme.PhreaticLineOffsetBelowDikeTopAtPolder); Assert.IsNaN(inputExtreme.PhreaticLineOffsetBelowShoulderBaseInside); Assert.IsNaN(inputExtreme.PhreaticLineOffsetBelowDikeToeAtPolder); + + Assert.IsNaN(input.ZoneBoundaryLeft); + Assert.IsNaN(input.ZoneBoundaryRight); } [Test] @@ -260,6 +263,9 @@ Assert.AreEqual(double.NegativeInfinity, inputExtreme.PhreaticLineOffsetBelowDikeTopAtPolder); Assert.AreEqual(double.PositiveInfinity, inputExtreme.PhreaticLineOffsetBelowShoulderBaseInside); Assert.AreEqual(double.PositiveInfinity, inputExtreme.PhreaticLineOffsetBelowDikeToeAtPolder); + + Assert.AreEqual(double.NegativeInfinity, input.ZoneBoundaryLeft); + Assert.AreEqual(double.PositiveInfinity, input.ZoneBoundaryRight); } private static void AssertCalculation(MacroStabilityInwardsCalculationScenario calculation, @@ -356,6 +362,11 @@ Assert.AreEqual(15.22, inputExtreme.PhreaticLineOffsetBelowDikeTopAtPolder, inputExtreme.PhreaticLineOffsetBelowDikeTopAtPolder.GetAccuracy()); Assert.AreEqual(15.23, inputExtreme.PhreaticLineOffsetBelowShoulderBaseInside, inputExtreme.PhreaticLineOffsetBelowShoulderBaseInside.GetAccuracy()); Assert.AreEqual(15.24, inputExtreme.PhreaticLineOffsetBelowDikeToeAtPolder, inputExtreme.PhreaticLineOffsetBelowDikeToeAtPolder.GetAccuracy()); + + Assert.IsTrue(input.CreateZones); + Assert.AreEqual(MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, input.ZoningBoundariesDeterminationType); + Assert.AreEqual(0.0, input.ZoneBoundaryLeft, input.ZoneBoundaryLeft.GetAccuracy()); + Assert.AreEqual(100.0, input.ZoneBoundaryRight, input.ZoneBoundaryRight.GetAccuracy()); } private static void AssertCalculationsHasSameHydraulicBoundaryLocation(CalculationGroup calculationGroup, Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs =================================================================== diff -u -r9e2f9f7fe2d7daf45c943fc446cd9edc4298290d -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs (.../MacroStabilityInwardsCalculationScenarioFactory.cs) (revision 9e2f9f7fe2d7daf45c943fc446cd9edc4298290d) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs (.../MacroStabilityInwardsCalculationScenarioFactory.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -293,7 +293,11 @@ ZBottom = (RoundedDouble) 1.0, NumberOfVerticalPoints = 1, NumberOfHorizontalPoints = 1 - } + }, + CreateZones = true, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, + ZoneBoundaryLeft = (RoundedDouble) 0.1, + ZoneBoundaryRight = (RoundedDouble) 0.2 } }; } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs =================================================================== diff -u -r7b8a021f38d77546b7c3318f5f0dedda63168f91 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs (.../MacroStabilityInwardsCloneAssert.cs) (revision 7b8a021f38d77546b7c3318f5f0dedda63168f91) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs (.../MacroStabilityInwardsCloneAssert.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -126,6 +126,9 @@ CoreCloneAssert.AreObjectClones(original.RightGrid, clone.RightGrid, AreClones); Assert.AreEqual(original.CreateZones, clone.CreateZones); + Assert.AreEqual(original.ZoningBoundariesDeterminationType, clone.ZoningBoundariesDeterminationType); + Assert.AreEqual(original.ZoneBoundaryLeft, clone.ZoneBoundaryLeft); + Assert.AreEqual(original.ZoneBoundaryRight, clone.ZoneBoundaryRight); } /// Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsTestDataGenerator.cs =================================================================== diff -u -rc4136f9deafeaf014ebb35c316f10bea91ee4d2e -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsTestDataGenerator.cs (.../MacroStabilityInwardsTestDataGenerator.cs) (revision c4136f9deafeaf014ebb35c316f10bea91ee4d2e) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsTestDataGenerator.cs (.../MacroStabilityInwardsTestDataGenerator.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -189,7 +189,11 @@ MaximumSliceWidth = (RoundedDouble) 0.6, TangentLineZTop = (RoundedDouble) 10, TangentLineZBottom = (RoundedDouble) 1, - TangentLineNumber = 5 + TangentLineNumber = 5, + CreateZones = true, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, + ZoneBoundaryLeft = (RoundedDouble) 0, + ZoneBoundaryRight = (RoundedDouble) 100 } }; @@ -254,6 +258,9 @@ inputExtreme.PhreaticLineOffsetBelowShoulderBaseInside = RoundedDouble.NaN; inputExtreme.PhreaticLineOffsetBelowDikeToeAtPolder = RoundedDouble.NaN; + input.ZoneBoundaryLeft = RoundedDouble.NaN; + input.ZoneBoundaryRight = RoundedDouble.NaN; + return calculation; } @@ -323,6 +330,9 @@ inputExtreme.PhreaticLineOffsetBelowShoulderBaseInside = (RoundedDouble) double.PositiveInfinity; inputExtreme.PhreaticLineOffsetBelowDikeToeAtPolder = (RoundedDouble) double.PositiveInfinity; + input.ZoneBoundaryLeft = (RoundedDouble) double.NegativeInfinity; + input.ZoneBoundaryRight = (RoundedDouble) double.PositiveInfinity; + return calculation; } @@ -586,6 +596,9 @@ input.RightGrid.NumberOfVerticalPoints = random.Next(1, 100); input.CreateZones = random.NextBoolean(); + input.ZoningBoundariesDeterminationType = random.NextEnumValue(); + input.ZoneBoundaryLeft = random.NextRoundedDouble(); + input.ZoneBoundaryRight = random.NextRoundedDouble(); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsSlipPlaneSettingsPropertiesTest.cs =================================================================== diff -u -r3d30a9febb6492e54f2082bf0a21a1602717b098 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsSlipPlaneSettingsPropertiesTest.cs (.../MacroStabilityInwardsSlipPlaneSettingsPropertiesTest.cs) (revision 3d30a9febb6492e54f2082bf0a21a1602717b098) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsSlipPlaneSettingsPropertiesTest.cs (.../MacroStabilityInwardsSlipPlaneSettingsPropertiesTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -22,11 +22,13 @@ using System; using System.ComponentModel; using Core.Common.Base; +using Core.Common.Base.Data; using Core.Common.Gui.PropertyBag; using Core.Common.TestUtil; using Core.Common.Utils; using NUnit.Framework; using Rhino.Mocks; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.ChangeHandlers; using Ringtoets.Common.Forms.PropertyClasses; using Ringtoets.Common.Forms.TestUtil; @@ -40,6 +42,8 @@ { private const int expectedCreateZonesPropertyIndex = 0; private const int expectedZoningBoundariesDeterminationTypePropertyIndex = 1; + private const int expectedZoneBoundayrLeftPropertyIndex = 2; + private const int expectedZoneBoundaryRightPropertyIndex = 3; [Test] public void Constructor_ExpectedValues() @@ -92,22 +96,34 @@ } [Test] - public void Constructor_ValidData_PropertiesHaveExpectedAttributesValues() + [TestCase(true, MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, false, true)] + [TestCase(true, MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, false, false)] + [TestCase(false, MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, true, true)] + [TestCase(false, MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, true, true)] + public void Constructor_ValidData_PropertiesHaveExpectedAttributesValues( + bool createZones, + MacroStabilityInwardsZoningBoundariesDeterminationType zoningBoundariesDeterminationType, + bool expectedDeterminationTypeReadOnly, + bool expectedZoneBoundariesReadOnly) { // Setup var mocks = new MockRepository(); var changeHandler = mocks.Stub(); mocks.ReplayAll(); - var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()); + var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()) + { + CreateZones = createZones, + ZoningBoundariesDeterminationType = zoningBoundariesDeterminationType + }; // Call var properties = new MacroStabilityInwardsSlipPlaneSettingsProperties(input, changeHandler); // Assert PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); - Assert.AreEqual(2, dynamicProperties.Count); + Assert.AreEqual(4, dynamicProperties.Count); const string category = "Zonering glijvlak"; @@ -125,8 +141,24 @@ category, "Methode", "Zoneringsgrenzen automatisch bepalen of handmatig invoeren?", - true); + expectedDeterminationTypeReadOnly); + PropertyDescriptor zoneBoundaryLeftProperty = dynamicProperties[expectedZoneBoundayrLeftPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties( + zoneBoundaryLeftProperty, + category, + "Zoneringsgrens links", + "Linker grens voor bepaling intredepunt van het glijvlak.", + expectedZoneBoundariesReadOnly); + + PropertyDescriptor zoneBoundaryRightProperty = dynamicProperties[expectedZoneBoundaryRightPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties( + zoneBoundaryRightProperty, + category, + "Zoneringsgrens rechts", + "Rechter grens voor bepaling intredepunt van het glijvlak.", + expectedZoneBoundariesReadOnly); + mocks.VerifyAll(); } @@ -146,6 +178,8 @@ // Assert Assert.AreEqual(input.CreateZones, properties.CreateZones); Assert.AreEqual(input.ZoningBoundariesDeterminationType, properties.ZoningBoundariesDeterminationType); + Assert.AreEqual(input.ZoneBoundaryLeft, properties.ZoneBoundaryLeft); + Assert.AreEqual(input.ZoneBoundaryRight, properties.ZoneBoundaryRight); mocks.VerifyAll(); } @@ -161,56 +195,146 @@ var random = new Random(21); bool createZones = random.NextBoolean(); + var determinationType = random.NextEnumValue(); + RoundedDouble boundaryLeft = random.NextRoundedDouble(); + RoundedDouble boundaryRight = random.NextRoundedDouble(); // When properties.CreateZones = createZones; + properties.ZoningBoundariesDeterminationType = determinationType; + properties.ZoneBoundaryLeft = boundaryLeft; + properties.ZoneBoundaryRight = boundaryRight; // Then Assert.AreEqual(createZones, input.CreateZones); + Assert.AreEqual(determinationType, input.ZoningBoundariesDeterminationType); + Assert.AreEqual(boundaryLeft, input.ZoneBoundaryLeft, input.ZoneBoundaryLeft.GetAccuracy()); + Assert.AreEqual(boundaryRight, input.ZoneBoundaryRight, input.ZoneBoundaryRight.GetAccuracy()); } [Test] public void CreateZones_SetValidValue_SetsValueAndUpdatesObservers() { + // Call & Assert + SetPropertyAndVerifyNotifications(properties => properties.CreateZones = false); + } + + [Test] + public void ZoningBoundariesDeterminationType_SetValidValue_SetsValueAndUpdatesObservers() + { + // Call & Assert + SetPropertyAndVerifyNotifications(properties => properties.ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual); + } + + [Test] + public void ZoneBoundaryLeft_SetValidValue_SetsValueAndUpdatesObservers() + { + // Call & Assert + SetPropertyAndVerifyNotifications(properties => properties.ZoneBoundaryLeft = new Random(39).NextRoundedDouble()); + } + + [Test] + public void ZoneBoundaryRight_SetValidValue_SetsValueAndUpdatesObservers() + { + // Call & Assert + SetPropertyAndVerifyNotifications(properties => properties.ZoneBoundaryRight = new Random(39).NextRoundedDouble()); + } + + [Test] + public void ToString_Always_ReturnEmptyString() + { // Setup var mocks = new MockRepository(); - var observable = mocks.StrictMock(); - observable.Expect(o => o.NotifyObservers()); + var changeHandler = mocks.Stub(); mocks.ReplayAll(); var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()); + var properties = new MacroStabilityInwardsSlipPlaneSettingsProperties(input, changeHandler); - var handler = new SetPropertyValueAfterConfirmationParameterTester(new[] + // Call + string toString = properties.ToString(); + + // Assert + Assert.AreEqual(string.Empty, toString); + } + + [Test] + [TestCase(true, MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, false, true)] + [TestCase(true, MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, false, false)] + [TestCase(false, MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, true, true)] + [TestCase(false, MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, true, true)] + public void DynamicReadOnlyValidationMethod_WithCreateZonesAndZoningBoundariesDeterminationType_ReturnsExpectedValues( + bool createZones, + MacroStabilityInwardsZoningBoundariesDeterminationType zoningBoundariesDeterminationType, + bool expectedDeterminationTypeReadOnly, + bool expectedZoneBoundariesReadOnly) + { + // Setup + var mocks = new MockRepository(); + var changeHandler = mocks.Stub(); + mocks.ReplayAll(); + + var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()) { - observable - }); + CreateZones = createZones, + ZoningBoundariesDeterminationType = zoningBoundariesDeterminationType + }; - var properties = new MacroStabilityInwardsSlipPlaneSettingsProperties(input, handler); + var properties = new MacroStabilityInwardsSlipPlaneSettingsProperties(input, changeHandler); // Call - properties.CreateZones = false; + bool isZoningBoundariesDeterminationTypeReadOnly = properties.DynamicReadOnlyValidationMethod(nameof(properties.ZoningBoundariesDeterminationType)); + bool isZoneBoundaryLeftReadOnly = properties.DynamicReadOnlyValidationMethod(nameof(properties.ZoneBoundaryLeft)); + bool isZoneBoundaryRightReadOnly = properties.DynamicReadOnlyValidationMethod(nameof(properties.ZoneBoundaryRight)); // Assert - Assert.IsTrue(handler.Called); - mocks.VerifyAll(); + Assert.AreEqual(expectedDeterminationTypeReadOnly, isZoningBoundariesDeterminationTypeReadOnly); + Assert.AreEqual(expectedZoneBoundariesReadOnly, isZoneBoundaryLeftReadOnly); + Assert.AreEqual(expectedZoneBoundariesReadOnly, isZoneBoundaryRightReadOnly); } [Test] - public void ToString_Always_ReturnEmptyString() + public void DynamicReadOnlyValidationMethod_AnyOtherParameter_ReturnsFalse() { // Setup var mocks = new MockRepository(); var changeHandler = mocks.Stub(); mocks.ReplayAll(); var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()); + var properties = new MacroStabilityInwardsSlipPlaneSettingsProperties(input, changeHandler); // Call - string toString = properties.ToString(); + bool isReadOnly = properties.DynamicReadOnlyValidationMethod("test parameter name 123"); // Assert - Assert.AreEqual(string.Empty, toString); + Assert.IsFalse(isReadOnly); } + + private static void SetPropertyAndVerifyNotifications(Action setProperty) + { + // Setup + var mocks = new MockRepository(); + var observable = mocks.StrictMock(); + observable.Expect(o => o.NotifyObservers()); + mocks.ReplayAll(); + + var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()); + + var handler = new SetPropertyValueAfterConfirmationParameterTester(new[] + { + observable + }); + + var properties = new MacroStabilityInwardsSlipPlaneSettingsProperties(input, handler); + + // Call + setProperty(properties); + + // Assert + Assert.IsTrue(handler.Called); + mocks.VerifyAll(); + } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/ConfigurationZoningBoundariesDeterminationTypeTest.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/ConfigurationZoningBoundariesDeterminationTypeTest.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/ConfigurationZoningBoundariesDeterminationTypeTest.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,48 @@ +// Copyright (C) Stichting Deltares 2017. 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.Collections.Generic; +using Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.MacroStabilityInwards.IO.Configurations; + +namespace Ringtoets.MacroStabilityInwards.IO.Test.Configurations +{ + [TestFixture] + public class ConfigurationZoningBoundariesDeterminationTypeTest : EnumValuesTestFixture + { + protected override IDictionary ExpectedValueForEnumValues + { + get + { + return new Dictionary + { + { + ConfigurationZoningBoundariesDeterminationType.Automatic, 1 + }, + { + ConfigurationZoningBoundariesDeterminationType.Manual, 2 + } + }; + } + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/Helpers/ConfigurationZoningBoundariesDeterminationTypeConverterTest.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/Helpers/ConfigurationZoningBoundariesDeterminationTypeConverterTest.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/Helpers/ConfigurationZoningBoundariesDeterminationTypeConverterTest.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,229 @@ +// Copyright (C) Stichting Deltares 2017. 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.ComponentModel; +using NUnit.Framework; +using Ringtoets.MacroStabilityInwards.Data; +using Ringtoets.MacroStabilityInwards.IO.Configurations; +using Ringtoets.MacroStabilityInwards.IO.Configurations.Helpers; + +namespace Ringtoets.MacroStabilityInwards.IO.Test.Configurations.Helpers +{ + [TestFixture] + public class ConfigurationZoningBoundariesDeterminationTypeConverterTest + { + [Test] + public void Constructor_ExpectedValues() + { + // Call + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Assert + Assert.IsInstanceOf(converter); + } + + [Test] + [TestCaseSource(nameof(GetSupportedTypes), new object[] + { + "CanConvertTo_{0}_ReturnTrue" + })] + public void CanConvertTo_SupportedType_ReturnTrue(Type supportedType) + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + bool canConvertTo = converter.CanConvertTo(supportedType); + + // Assert + Assert.IsTrue(canConvertTo); + } + + [Test] + public void CanConvertTo_OtherType_ReturnFalse() + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + bool canConvertTo = converter.CanConvertTo(typeof(object)); + + // Assert + Assert.IsFalse(canConvertTo); + } + + [Test] + [TestCaseSource(nameof(SupportedConvertions), new object[] + { + "ConvertTo_{1}_ReturnsExpectedResult" + })] + public void ConvertTo_VariousCases_ReturnExpectedResult(ConfigurationZoningBoundariesDeterminationType value, + object expectedResult) + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + Type convertToType = expectedResult.GetType(); + + // Call + object result = converter.ConvertTo(value, convertToType); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] + [TestCaseSource(nameof(InvalidConvertTo), new object[] + { + "ConvertTo_Convert{2}to{1}_ThrowsNotSupportedException" + })] + public void ConvertTo_InvalidCases_ThrowsNotSupportedException(ConfigurationZoningBoundariesDeterminationType invalidValue, + Type convertToType) + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + TestDelegate call = () => converter.ConvertTo(invalidValue, convertToType); + + // Assert + Assert.Throws(call); + } + + [Test] + [TestCaseSource(nameof(GetSupportedTypes), new object[] + { + "CanConvertFrom_{0}_ReturnTrue" + })] + public void CanConvertFrom_SupportedType_ReturnTrue(Type supportedType) + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + bool canConvertFrom = converter.CanConvertFrom(supportedType); + + // Assert + Assert.IsTrue(canConvertFrom); + } + + [Test] + public void CanConvertFrom_OtherType_ReturnFalse() + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + bool canConvertFrom = converter.CanConvertFrom(typeof(object)); + + // Assert + Assert.IsFalse(canConvertFrom); + } + + [Test] + [TestCaseSource(nameof(SupportedConvertions), new object[] + { + "ConvertFrom_{1}_ReturnExpectedConfigurationZoningBoundariesDeterminationType" + })] + public void ConvertFrom_VariousCases_ReturnExpecteConfigurationZoningBoundariesDeterminationType(ConfigurationZoningBoundariesDeterminationType expectedResult, + object value) + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + object result = converter.ConvertFrom(value); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] + [TestCaseSource(nameof(InvalidConvertFrom), new object[] + { + "ConvertFrom_{0}_ThrowsNotSupportedException" + })] + public void ConvertFrom_InvalidValue_ThrowsNotSupportedException(object invalidValue) + { + // Setup + var converter = new ConfigurationZoningBoundariesDeterminationTypeConverter(); + + // Call + TestDelegate call = () => converter.ConvertFrom(invalidValue); + + // Assert + Assert.Throws(call); + } + + private static IEnumerable GetSupportedTypes(string testName) + { + yield return new TestCaseData(typeof(string)) + .SetName(testName); + yield return new TestCaseData(typeof(MacroStabilityInwardsZoningBoundariesDeterminationType)) + .SetName(testName); + } + + private static IEnumerable SupportedConvertions(string testName) + { + yield return new TestCaseData(ConfigurationZoningBoundariesDeterminationType.Automatic, + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeAutomatic) + .SetName(testName); + yield return new TestCaseData(ConfigurationZoningBoundariesDeterminationType.Manual, + MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeManual) + .SetName(testName); + + yield return new TestCaseData(ConfigurationZoningBoundariesDeterminationType.Automatic, + MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic) + .SetName(testName); + yield return new TestCaseData(ConfigurationZoningBoundariesDeterminationType.Manual, + MacroStabilityInwardsZoningBoundariesDeterminationType.Manual) + .SetName(testName); + } + + private static IEnumerable InvalidConvertTo(string testName) + { + yield return new TestCaseData((ConfigurationZoningBoundariesDeterminationType) 99999, + typeof(string)) + .SetName(testName); + + yield return new TestCaseData((ConfigurationZoningBoundariesDeterminationType) 99999, + typeof(MacroStabilityInwardsZoningBoundariesDeterminationType)) + .SetName(testName); + + yield return new TestCaseData((ConfigurationZoningBoundariesDeterminationType) 99999, + typeof(object)) + .SetName(testName); + } + + private static IEnumerable InvalidConvertFrom(string testName) + { + yield return new TestCaseData("invalid value") + .SetName(testName); + + yield return new TestCaseData((MacroStabilityInwardsZoningBoundariesDeterminationType) 99999) + .SetName(testName); + + yield return new TestCaseData(new object()) + .SetName(testName); + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationImporterTest.cs =================================================================== diff -u -r94c5c40b1f96057b2734de09280db51408494af4 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationImporterTest.cs (.../MacroStabilityInwardsCalculationConfigurationImporterTest.cs) (revision 94c5c40b1f96057b2734de09280db51408494af4) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationImporterTest.cs (.../MacroStabilityInwardsCalculationConfigurationImporterTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -896,6 +896,9 @@ SlipPlaneMinimumLength = (RoundedDouble) 0.5, MaximumSliceWidth = (RoundedDouble) 0.6, CreateZones = true, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, + ZoneBoundaryLeft = (RoundedDouble) 10.0, + ZoneBoundaryRight = (RoundedDouble) 43.5, MoveGrid = true, DikeSoilScenario = MacroStabilityInwardsDikeSoilScenario.SandDikeOnClay, TangentLineZTop = (RoundedDouble) 10, @@ -998,6 +1001,9 @@ Assert.AreEqual(expectedInput.SlipPlaneMinimumLength, actualInput.SlipPlaneMinimumLength); Assert.AreEqual(expectedInput.MaximumSliceWidth, actualInput.MaximumSliceWidth); + Assert.AreEqual(expectedInput.ZoneBoundaryLeft, actualInput.ZoneBoundaryLeft); + Assert.AreEqual(expectedInput.ZoneBoundaryRight, actualInput.ZoneBoundaryRight); + Assert.AreEqual(expectedInput.CreateZones, actualInput.CreateZones); Assert.AreEqual(expectedInput.MoveGrid, actualInput.MoveGrid); @@ -1008,6 +1014,7 @@ Assert.AreEqual(expectedInput.GridDeterminationType, actualInput.GridDeterminationType); Assert.AreEqual(expectedInput.TangentLineDeterminationType, actualInput.TangentLineDeterminationType); + Assert.AreEqual(expectedInput.ZoningBoundariesDeterminationType, actualInput.ZoningBoundariesDeterminationType); AssertMacroStabilityInwardsGrid(expectedInput.LeftGrid, actualInput.LeftGrid); AssertMacroStabilityInwardsGrid(expectedInput.RightGrid, actualInput.RightGrid); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationReaderTest.cs =================================================================== diff -u -re8d2dae888f74c7c5fbef802957a30bf60ef1fe0 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationReaderTest.cs (.../MacroStabilityInwardsCalculationConfigurationReaderTest.cs) (revision e8d2dae888f74c7c5fbef802957a30bf60ef1fe0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationReaderTest.cs (.../MacroStabilityInwardsCalculationConfigurationReaderTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -111,6 +111,9 @@ Assert.IsNull(configuration.SlipPlaneMinimumLength); Assert.IsNull(configuration.MaximumSliceWidth); Assert.IsNull(configuration.CreateZones); + Assert.IsNull(configuration.ZoningBoundariesDeterminationType); + Assert.IsNull(configuration.ZoneBoundaryLeft); + Assert.IsNull(configuration.ZoneBoundaryRight); Assert.IsNull(configuration.GridDeterminationType); Assert.IsNull(configuration.MoveGrid); Assert.IsNull(configuration.TangentLineDeterminationType); @@ -300,6 +303,9 @@ Assert.AreEqual(0.6, configuration.MaximumSliceWidth); Assert.IsTrue(configuration.CreateZones); + Assert.AreEqual(ConfigurationZoningBoundariesDeterminationType.Manual, configuration.ZoningBoundariesDeterminationType); + Assert.AreEqual(10.0, configuration.ZoneBoundaryLeft); + Assert.AreEqual(43.5, configuration.ZoneBoundaryRight); Assert.IsTrue(configuration.MoveGrid); Assert.AreEqual(ConfigurationGridDeterminationType.Automatic, configuration.GridDeterminationType); @@ -401,6 +407,9 @@ Assert.AreEqual(0.6, configuration.MaximumSliceWidth); Assert.IsTrue(configuration.CreateZones); + Assert.AreEqual(ConfigurationZoningBoundariesDeterminationType.Manual, configuration.ZoningBoundariesDeterminationType); + Assert.AreEqual(10.0, configuration.ZoneBoundaryLeft); + Assert.AreEqual(43.5, configuration.ZoneBoundaryRight); Assert.IsTrue(configuration.MoveGrid); Assert.AreEqual(ConfigurationGridDeterminationType.Automatic, configuration.GridDeterminationType); @@ -574,6 +583,7 @@ yield return new NameAdapter("DikeSoilScenario", "dijktype"); yield return new NameAdapter("GridDeterminationType", "bepaling"); yield return new NameAdapter("TangentLineDeterminationType", "bepalingtangentlijnen"); + yield return new NameAdapter("ZoningBoundariesDeterminationType", "methode"); } private static IEnumerable GetNameAdaptersOfBoolProperties() @@ -632,6 +642,9 @@ yield return new NameAdapter("RightGridXRight", "xrechts"); yield return new NameAdapter("RightGridZTop", "zboven"); yield return new NameAdapter("RightGridZBottom", "zonder"); + + yield return new NameAdapter("ZoneBoundaryLeft", "zoneringsgrenslinks"); + yield return new NameAdapter("ZoneBoundaryRight", "zoneringsgrensrechts"); } private static IEnumerable GetTagElements() Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationSchemaIdentifiersTest.cs =================================================================== diff -u -rf0525483bb0f01219ec1990b2e366de5faa7cb96 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationSchemaIdentifiersTest.cs (.../MacroStabilityInwardsCalculationConfigurationSchemaIdentifiersTest.cs) (revision f0525483bb0f01219ec1990b2e366de5faa7cb96) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationSchemaIdentifiersTest.cs (.../MacroStabilityInwardsCalculationConfigurationSchemaIdentifiersTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -75,6 +75,11 @@ Assert.AreEqual("zonering", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZonesElement); Assert.AreEqual("bepaling", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.CreateZonesElement); + Assert.AreEqual("methode", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeElement); + Assert.AreEqual("automatisch", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeAutomatic); + Assert.AreEqual("handmatig", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoningBoundariesDeterminationTypeManual); + Assert.AreEqual("zoneringsgrenslinks", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoneBoundaryLeft); + Assert.AreEqual("zoneringsgrensrechts", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.ZoneBoundaryRight); Assert.AreEqual("grids", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.GridsElement); Assert.AreEqual("verplaatsgrid", MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.MoveGridElement); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationTest.cs =================================================================== diff -u -r6d2a451c86300fe64ea80a345ab6d37549007ea0 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationTest.cs (.../MacroStabilityInwardsCalculationConfigurationTest.cs) (revision 6d2a451c86300fe64ea80a345ab6d37549007ea0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationTest.cs (.../MacroStabilityInwardsCalculationConfigurationTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -78,6 +78,9 @@ Assert.IsNull(configuration.SlipPlaneMinimumLength); Assert.IsNull(configuration.MaximumSliceWidth); Assert.IsNull(configuration.CreateZones); + Assert.IsNull(configuration.ZoningBoundariesDeterminationType); + Assert.IsNull(configuration.ZoneBoundaryLeft); + Assert.IsNull(configuration.ZoneBoundaryRight); Assert.IsNull(configuration.GridDeterminationType); Assert.IsNull(configuration.MoveGrid); Assert.IsNull(configuration.TangentLineDeterminationType); @@ -122,7 +125,11 @@ double slipPlaneMinimumDepth = random.NextDouble(); double slipPlaneMinimumLength = random.NextDouble(); double maximumSliceWidth = random.NextDouble(); + bool createZones = random.NextBoolean(); + var zoningBoundariesDeterminationType = ConfigurationZoningBoundariesDeterminationType.Manual; + double zoneBoundaryLeft = random.NextDouble(); + double zoneBoundaryRight = random.NextDouble(); var scenarioConfiguration = new ScenarioConfiguration(); bool movegrid = random.NextBoolean(); @@ -163,6 +170,9 @@ SlipPlaneMinimumLength = slipPlaneMinimumLength, MaximumSliceWidth = maximumSliceWidth, CreateZones = createZones, + ZoningBoundariesDeterminationType = zoningBoundariesDeterminationType, + ZoneBoundaryLeft = zoneBoundaryLeft, + ZoneBoundaryRight = zoneBoundaryRight, MoveGrid = movegrid, GridDeterminationType = gridDeterminationType, TangentLineDeterminationType = tangentLineDeterminationType, @@ -201,6 +211,9 @@ Assert.AreEqual(slipPlaneMinimumLength, configuration.SlipPlaneMinimumLength); Assert.AreEqual(maximumSliceWidth, configuration.MaximumSliceWidth); Assert.AreEqual(createZones, configuration.CreateZones); + Assert.AreEqual(zoningBoundariesDeterminationType, configuration.ZoningBoundariesDeterminationType); + Assert.AreEqual(zoneBoundaryLeft, configuration.ZoneBoundaryLeft); + Assert.AreEqual(zoneBoundaryRight, configuration.ZoneBoundaryRight); Assert.AreEqual(movegrid, configuration.MoveGrid); Assert.AreEqual(gridDeterminationType, configuration.GridDeterminationType); Assert.AreEqual(tangentLineDeterminationType, configuration.TangentLineDeterminationType); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationWriterTest.cs =================================================================== diff -u -r6d2a451c86300fe64ea80a345ab6d37549007ea0 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationWriterTest.cs (.../MacroStabilityInwardsCalculationConfigurationWriterTest.cs) (revision 6d2a451c86300fe64ea80a345ab6d37549007ea0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Configurations/MacroStabilityInwardsCalculationConfigurationWriterTest.cs (.../MacroStabilityInwardsCalculationConfigurationWriterTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -122,6 +122,9 @@ }, AdjustPhreaticLine3And4ForUplift = true, CreateZones = true, + ZoningBoundariesDeterminationType = ConfigurationZoningBoundariesDeterminationType.Manual, + ZoneBoundaryLeft = 20.0, + ZoneBoundaryRight = 60.7, MoveGrid = true, GridDeterminationType = ConfigurationGridDeterminationType.Automatic, TangentLineDeterminationType = ConfigurationTangentLineDeterminationType.Specified, Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Ringtoets.MacroStabilityInwards.IO.Test.csproj =================================================================== diff -u -r04f5526f955c773d4987e820e2aca2614dfbd8d8 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Ringtoets.MacroStabilityInwards.IO.Test.csproj (.../Ringtoets.MacroStabilityInwards.IO.Test.csproj) (revision 04f5526f955c773d4987e820e2aca2614dfbd8d8) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/Ringtoets.MacroStabilityInwards.IO.Test.csproj (.../Ringtoets.MacroStabilityInwards.IO.Test.csproj) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,9 +57,11 @@ Properties\GlobalAssembly.cs + + Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationIrrelevant.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationIrrelevant.xml (.../calculationIrrelevant.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationIrrelevant.xml (.../calculationIrrelevant.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,6 +57,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithAssessmentLevel.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithAssessmentLevel.xml (.../calculationWithAssessmentLevel.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithAssessmentLevel.xml (.../calculationWithAssessmentLevel.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,6 +57,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithInfinities.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithInfinities.xml (.../calculationWithInfinities.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithInfinities.xml (.../calculationWithInfinities.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,6 +57,9 @@ -INF true + handmatig + -INF + INF true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithNaNs.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithNaNs.xml (.../calculationWithNaNs.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithNaNs.xml (.../calculationWithNaNs.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,6 +57,9 @@ NaN true + handmatig + NaN + NaN true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutHydraulicLocation.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutHydraulicLocation.xml (.../calculationWithoutHydraulicLocation.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutHydraulicLocation.xml (.../calculationWithoutHydraulicLocation.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -56,6 +56,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSoilProfile.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSoilProfile.xml (.../calculationWithoutSoilProfile.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSoilProfile.xml (.../calculationWithoutSoilProfile.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -56,6 +56,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSoilmodel.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSoilmodel.xml (.../calculationWithoutSoilmodel.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSoilmodel.xml (.../calculationWithoutSoilmodel.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -55,6 +55,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSurfaceline.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSurfaceline.xml (.../calculationWithoutSurfaceline.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/calculationWithoutSurfaceline.xml (.../calculationWithoutSurfaceline.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -56,6 +56,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/folderWithSubfolderAndCalculation.xml =================================================================== diff -u -r578d9ed2cd2330f233659f25ff91910533cabf39 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/folderWithSubfolderAndCalculation.xml (.../folderWithSubfolderAndCalculation.xml) (revision 578d9ed2cd2330f233659f25ff91910533cabf39) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationExporter/folderWithSubfolderAndCalculation.xml (.../folderWithSubfolderAndCalculation.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -58,6 +58,9 @@ 0.6 true + handmatig + 0 + 100 true @@ -148,6 +151,9 @@ 0.6 true + handmatig + 0 + 100 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoneBoundaryLeft.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoneBoundaryLeft.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoneBoundaryLeft.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,9 @@ + + + + + 10.4 + 24.5 + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoneBoundaryRight.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoneBoundaryRight.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoneBoundaryRight.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,9 @@ + + + + + 10.4 + 24.5 + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoningBoundariesDeterminationType.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoningBoundariesDeterminationType.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidCalculationMultipleZoningBoundariesDeterminationType.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,9 @@ + + + + + handmatig + automatisch + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryLeftEmpty.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryLeftEmpty.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryLeftEmpty.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryLeftNoDouble.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryLeftNoDouble.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryLeftNoDouble.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,8 @@ + + + + + string + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryRightEmpty.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryRightEmpty.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryRightEmpty.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryRightNoDouble.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryRightNoDouble.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoneBoundaryRightNoDouble.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,8 @@ + + + + + string + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoningBoundariesDeterminationTypeEmpty.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoningBoundariesDeterminationTypeEmpty.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoningBoundariesDeterminationTypeEmpty.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoningBoundariesDeterminationTypeNoEnumeration.xml =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoningBoundariesDeterminationTypeNoEnumeration.xml (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/invalidZoningBoundariesDeterminationTypeNoEnumeration.xml (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,8 @@ + + + + + string + + + \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingAssessmentLevel.xml =================================================================== diff -u -re464ea7e9ab7a0dae1e2e0b8d3dad2e9e85a1aa6 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingAssessmentLevel.xml (.../validConfigurationFullCalculationContainingAssessmentLevel.xml) (revision e464ea7e9ab7a0dae1e2e0b8d3dad2e9e85a1aa6) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingAssessmentLevel.xml (.../validConfigurationFullCalculationContainingAssessmentLevel.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,6 +57,9 @@ 0.6 true + handmatig + 10 + 43.5 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingAssessmentLevel_differentOrder.xml =================================================================== diff -u -ra2007eb52624e8787adf2834a0c43751b939f45b -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingAssessmentLevel_differentOrder.xml (.../validConfigurationFullCalculationContainingAssessmentLevel_differentOrder.xml) (revision a2007eb52624e8787adf2834a0c43751b939f45b) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingAssessmentLevel_differentOrder.xml (.../validConfigurationFullCalculationContainingAssessmentLevel_differentOrder.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -85,6 +85,9 @@ 0.5 true + handmatig + 10 + 43.5 Profielschematisatie 1.1 Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml =================================================================== diff -u -ra2007eb52624e8787adf2834a0c43751b939f45b -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml (.../validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml) (revision a2007eb52624e8787adf2834a0c43751b939f45b) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml (.../validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -57,6 +57,9 @@ 0.6 true + handmatig + 10 + 43.5 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingHydraulicBoundaryLocation_differentOrder.xml =================================================================== diff -u -ra2007eb52624e8787adf2834a0c43751b939f45b -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingHydraulicBoundaryLocation_differentOrder.xml (.../validConfigurationFullCalculationContainingHydraulicBoundaryLocation_differentOrder.xml) (revision a2007eb52624e8787adf2834a0c43751b939f45b) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationReader/validConfigurationFullCalculationContainingHydraulicBoundaryLocation_differentOrder.xml (.../validConfigurationFullCalculationContainingHydraulicBoundaryLocation_differentOrder.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -38,6 +38,9 @@ true + handmatig + 10 + 43.5 0.6 0.5 Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml =================================================================== diff -u -r6d2a451c86300fe64ea80a345ab6d37549007ea0 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml (.../folderWithSubfolderAndCalculation.xml) (revision 6d2a451c86300fe64ea80a345ab6d37549007ea0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/test-data/MacroStabilityInwardsCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml (.../folderWithSubfolderAndCalculation.xml) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -59,6 +59,9 @@ 0.6 true + handmatig + 20 + 60.7 true Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTest.cs =================================================================== diff -u -rd485f27eb5a6d688406882dce60c3229e22f2ac2 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTest.cs (.../UpliftVanCalculatorInputTest.cs) (revision d485f27eb5a6d688406882dce60c3229e22f2ac2) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTest.cs (.../UpliftVanCalculatorInputTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -55,7 +55,7 @@ var drainageConstruction = new DrainageConstruction(); var phreaticLineOffsets = new PhreaticLineOffsets(); var slipPlane = new UpliftVanSlipPlane(); - + var slipPlaneConstraints = new UpliftVanSlipPlaneConstraints(random.NextDouble(), random.NextDouble(), random.NextBoolean()); var waternetCreationMode = random.NextEnumValue(); var plLineCreationMethod = random.NextEnumValue(); var landwardDirection = random.NextEnumValue(); @@ -76,10 +76,6 @@ var dikeSoilScenario = random.NextEnumValue(); bool moveGrid = random.NextBoolean(); double maximumSliceWidth = random.NextDouble(); - bool createZones = random.NextBoolean(); - bool automaticForbiddenZones = random.NextBoolean(); - double slipPlaneMinDepth = random.NextDouble(); - double slipPlaneMinLength = random.NextDouble(); // Call var input = new UpliftVanCalculatorInput( @@ -95,6 +91,7 @@ PhreaticLineOffsetsExtreme = phreaticLineOffsets, PhreaticLineOffsetsDaily = phreaticLineOffsets, SlipPlane = slipPlane, + SlipPlaneConstraints = slipPlaneConstraints, WaterLevelRiverAverage = waterLevelRiverAverage, WaterLevelPolderExtreme = waterLevelPolderExtreme, WaterLevelPolderDaily = waterLevelPolderDaily, @@ -111,11 +108,7 @@ AdjustPhreaticLine3And4ForUplift = adjustPhreaticLine3And4ForUplift, DikeSoilScenario = dikeSoilScenario, MoveGrid = moveGrid, - MaximumSliceWidth = maximumSliceWidth, - CreateZones = createZones, - AutomaticForbiddenZones = automaticForbiddenZones, - SlipPlaneMinimumDepth = slipPlaneMinDepth, - SlipPlaneMinimumLength = slipPlaneMinLength + MaximumSliceWidth = maximumSliceWidth }); // Assert @@ -129,6 +122,7 @@ Assert.AreSame(phreaticLineOffsets, input.PhreaticLineOffsetsDaily); Assert.AreSame(phreaticLineOffsets, input.PhreaticLineOffsetsExtreme); Assert.AreSame(slipPlane, input.SlipPlane); + Assert.AreSame(slipPlaneConstraints, input.SlipPlaneConstraints); Assert.AreEqual(waterLevelRiverAverage, input.WaterLevelRiverAverage); Assert.AreEqual(waterLevelPolderExtreme, input.WaterLevelPolderExtreme); @@ -148,10 +142,6 @@ Assert.AreEqual(dikeSoilScenario, input.DikeSoilScenario); Assert.AreEqual(moveGrid, input.MoveGrid); Assert.AreEqual(maximumSliceWidth, input.MaximumSliceWidth); - Assert.AreEqual(createZones, input.CreateZones); - Assert.AreEqual(automaticForbiddenZones, input.AutomaticForbiddenZones); - Assert.AreEqual(slipPlaneMinDepth, input.SlipPlaneMinimumDepth); - Assert.AreEqual(slipPlaneMinLength, input.SlipPlaneMinimumLength); } [Test] @@ -163,6 +153,7 @@ var drainageConstruction = new DrainageConstruction(); var phreaticLineOffsets = new PhreaticLineOffsets(); var slipPlane = new UpliftVanSlipPlane(); + var slipPlaneConstraints = new UpliftVanSlipPlaneConstraints(double.NaN, double.NaN, true); // Call var input = new UpliftVanCalculatorInput( @@ -173,7 +164,8 @@ DrainageConstruction = drainageConstruction, PhreaticLineOffsetsExtreme = phreaticLineOffsets, PhreaticLineOffsetsDaily = phreaticLineOffsets, - SlipPlane = slipPlane + SlipPlane = slipPlane, + SlipPlaneConstraints = slipPlaneConstraints }); // Assert @@ -192,13 +184,9 @@ Assert.IsNaN(input.PenetrationLengthDaily); Assert.IsNaN(input.PenetrationLengthExtreme); Assert.IsNaN(input.MaximumSliceWidth); - Assert.IsNaN(input.SlipPlaneMinimumDepth); - Assert.IsNaN(input.SlipPlaneMinimumLength); Assert.IsFalse(input.AdjustPhreaticLine3And4ForUplift); Assert.IsFalse(input.MoveGrid); - Assert.IsFalse(input.CreateZones); - Assert.IsFalse(input.AutomaticForbiddenZones); Assert.AreEqual(WaternetCreationMode.CreateWaternet, input.WaternetCreationMode); Assert.AreEqual(PlLineCreationMethod.RingtoetsWti2017, input.PlLineCreationMethod); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/Input/UpliftVanSlipPlaneConstraintsTest.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/Input/UpliftVanSlipPlaneConstraintsTest.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/Input/UpliftVanSlipPlaneConstraintsTest.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,76 @@ +// Copyright (C) Stichting Deltares 2017. 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 Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; + +namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Test.Calculators.UpliftVan.Input +{ + [TestFixture] + public class UpliftVanSlipPlaneConstraintsTest + { + [Test] + public void Constructor_WithMinimumLengthDepthAndCreateZones_ExpectedValues() + { + // Setup + var random = new Random(39); + bool createZones = random.NextBoolean(); + double slipPlaneMinimumLength = random.NextDouble(); + double slipPlaneMinimumDepth = random.NextDouble(); + + // Call + var slipPlaneConstraints = new UpliftVanSlipPlaneConstraints(slipPlaneMinimumDepth, slipPlaneMinimumLength, createZones); + + // Assert + Assert.AreEqual(createZones, slipPlaneConstraints.CreateZones); + Assert.IsTrue(slipPlaneConstraints.AutomaticForbiddenZones); + Assert.AreEqual(slipPlaneMinimumLength, slipPlaneConstraints.SlipPlaneMinimumLength); + Assert.AreEqual(slipPlaneMinimumDepth, slipPlaneConstraints.SlipPlaneMinimumDepth); + Assert.IsNaN(slipPlaneConstraints.ZoneBoundaryLeft); + Assert.IsNaN(slipPlaneConstraints.ZoneBoundaryRight); + } + + [Test] + public void Constructor_WithZoneBoundaries_ExpectedValues() + { + // Setup + var random = new Random(39); + double slipPlaneMinimumLength = random.NextDouble(); + double slipPlaneMinimumDepth = random.NextDouble(); + double zoneBoundaryLeft = random.NextDouble(); + double zoneBoundaryRight = random.NextDouble(); + + // Call + var constraints = new UpliftVanSlipPlaneConstraints(slipPlaneMinimumDepth, + slipPlaneMinimumLength, zoneBoundaryLeft, zoneBoundaryRight); + + // Assert + Assert.IsTrue(constraints.CreateZones); + Assert.IsFalse(constraints.AutomaticForbiddenZones); + Assert.AreEqual(slipPlaneMinimumDepth, constraints.SlipPlaneMinimumDepth); + Assert.AreEqual(slipPlaneMinimumLength, constraints.SlipPlaneMinimumLength); + Assert.AreEqual(zoneBoundaryLeft, constraints.ZoneBoundaryLeft); + Assert.AreEqual(zoneBoundaryRight, constraints.ZoneBoundaryRight); + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/UpliftVanCalculatorTest.cs =================================================================== diff -u -rff37b79ad9133423d04e991ac6152cd6ed552274 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/UpliftVanCalculatorTest.cs (.../UpliftVanCalculatorTest.cs) (revision ff37b79ad9133423d04e991ac6152cd6ed552274) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/UpliftVanCalculatorTest.cs (.../UpliftVanCalculatorTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -142,12 +142,8 @@ KernelInputAssert.AssertStabilityLocations(UpliftVanStabilityLocationCreator.CreateDaily(input), upliftVanKernel.LocationDaily); KernelInputAssert.AssertSurfaceLines(SurfaceLineCreator.Create(input.SurfaceLine, input.LandwardDirection), upliftVanKernel.SurfaceLine); UpliftVanKernelInputAssert.AssertSlipPlanesUpliftVan(SlipPlaneUpliftVanCreator.Create(input.SlipPlane), upliftVanKernel.SlipPlaneUpliftVan); - + UpliftVanKernelInputAssert.AssertSlipPlaneConstraints(SlipPlaneConstraintsCreator.Create(input.SlipPlaneConstraints), upliftVanKernel.SlipPlaneConstraints); Assert.AreEqual(input.SlipPlane.GridAutomaticDetermined, upliftVanKernel.GridAutomaticDetermined); - Assert.AreEqual(input.CreateZones, upliftVanKernel.CreateZones); - Assert.AreEqual(input.AutomaticForbiddenZones, upliftVanKernel.AutomaticForbiddenZones); - Assert.AreEqual(input.SlipPlaneMinimumDepth, upliftVanKernel.SlipPlaneMinimumDepth); - Assert.AreEqual(input.SlipPlaneMinimumLength, upliftVanKernel.SlipPlaneMinimumLength); CollectionAssert.IsEmpty(upliftVanKernel.CalculationMessages); } @@ -316,7 +312,8 @@ DrainageConstruction = new DrainageConstruction(), PhreaticLineOffsetsExtreme = new PhreaticLineOffsets(), PhreaticLineOffsetsDaily = new PhreaticLineOffsets(), - SlipPlane = new UpliftVanSlipPlane() + SlipPlane = new UpliftVanSlipPlane(), + SlipPlaneConstraints = new UpliftVanSlipPlaneConstraints(random.NextDouble(), random.NextDouble(), random.NextBoolean()) }); } @@ -335,6 +332,7 @@ PhreaticLineOffsetsExtreme = new PhreaticLineOffsets(), PhreaticLineOffsetsDaily = new PhreaticLineOffsets(), SlipPlane = new UpliftVanSlipPlane(), + SlipPlaneConstraints = new UpliftVanSlipPlaneConstraints(random.NextDouble(), random.NextDouble(), random.NextBoolean()), WaterLevelRiverAverage = random.NextDouble(), WaterLevelPolderExtreme = random.NextDouble(), WaterLevelPolderDaily = random.NextDouble(), @@ -351,11 +349,7 @@ AdjustPhreaticLine3And4ForUplift = random.NextBoolean(), DikeSoilScenario = random.NextEnumValue(), MoveGrid = random.NextBoolean(), - MaximumSliceWidth = random.NextDouble(), - CreateZones = random.NextBoolean(), - AutomaticForbiddenZones = random.NextBoolean(), - SlipPlaneMinimumDepth = random.NextDouble(), - SlipPlaneMinimumLength = random.NextDouble() + MaximumSliceWidth = random.NextDouble() }); } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/SlipPlaneConstraintsCreatorTest.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/SlipPlaneConstraintsCreatorTest.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/SlipPlaneConstraintsCreatorTest.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,63 @@ +// Copyright (C) Stichting Deltares 2017. 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 Deltares.WTIStability; +using NUnit.Framework; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Creators.Input; + +namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Test.Creators.Input +{ + public class SlipPlaneConstraintsCreatorTest + { + [Test] + public void Create_UpliftVanSlipPlaneConstraintsNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => SlipPlaneConstraintsCreator.Create(null); + + // Assert + string paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("input", paramName); + } + + [Test] + public void Create_WithUpliftVanSlipPlaneConstraints_ReturnsExpectedSlipPlaneConstraints() + { + // Setup + var random = new Random(39); + var upliftVanSlipPlaneConstraints = new UpliftVanSlipPlaneConstraints(random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextDouble()); + + // Call + SlipPlaneConstraints constraints = SlipPlaneConstraintsCreator.Create(upliftVanSlipPlaneConstraints); + + // Assert + Assert.AreEqual(upliftVanSlipPlaneConstraints.CreateZones, constraints.CreateZones); + Assert.AreEqual(upliftVanSlipPlaneConstraints.AutomaticForbiddenZones, constraints.AutomaticForbiddenZones); + Assert.AreEqual(upliftVanSlipPlaneConstraints.SlipPlaneMinimumLength, constraints.SlipPlaneMinLength); + Assert.AreEqual(upliftVanSlipPlaneConstraints.SlipPlaneMinimumDepth, constraints.SlipPlaneMinDepth); + Assert.AreEqual(upliftVanSlipPlaneConstraints.ZoneBoundaryLeft, constraints.XEntryMin); + Assert.AreEqual(upliftVanSlipPlaneConstraints.ZoneBoundaryRight, constraints.XEntryMax); + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Kernels/UpliftVan/UpliftVanKernelWrapperTest.cs =================================================================== diff -u -r7512f4503ba4ba4c2419f7f74357f259bc4b9f41 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Kernels/UpliftVan/UpliftVanKernelWrapperTest.cs (.../UpliftVanKernelWrapperTest.cs) (revision 7512f4503ba4ba4c2419f7f74357f259bc4b9f41) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Kernels/UpliftVan/UpliftVanKernelWrapperTest.cs (.../UpliftVanKernelWrapperTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -66,10 +66,7 @@ var slipPlaneUpliftVan = new SlipPlaneUpliftVan(); bool moveGrid = random.NextBoolean(); bool gridAutomaticDetermined = random.NextBoolean(); - bool createZones = random.NextBoolean(); - bool automaticForbiddenZones = random.NextBoolean(); - double slipPlaneMinimumDepth = random.NextDouble(); - double slipPlaneMinimumLength = random.NextDouble(); + var slipPlaneConstraints = new SlipPlaneConstraints(); // Call var kernel = new UpliftVanKernelWrapper @@ -83,10 +80,7 @@ SlipPlaneUpliftVan = slipPlaneUpliftVan, MoveGrid = moveGrid, GridAutomaticDetermined = gridAutomaticDetermined, - CreateZones = createZones, - AutomaticForbiddenZones = automaticForbiddenZones, - SlipPlaneMinimumDepth = slipPlaneMinimumDepth, - SlipPlaneMinimumLength = slipPlaneMinimumLength + SlipPlaneConstraints = slipPlaneConstraints }; // Assert @@ -109,12 +103,9 @@ Assert.AreSame(soilProfile2D, stabilityModel.SoilProfile); Assert.AreEqual(maximumSliceWidth, stabilityModel.MaximumSliceWidth); Assert.AreSame(slipPlaneUpliftVan, stabilityModel.SlipPlaneUpliftVan); + Assert.AreSame(slipPlaneConstraints, stabilityModel.SlipPlaneConstraints); Assert.AreEqual(moveGrid, stabilityModel.MoveGrid); Assert.AreEqual(gridAutomaticDetermined, stabilityModel.SlipCircle.Auto); - Assert.AreEqual(createZones, stabilityModel.SlipPlaneConstraints.CreateZones); - Assert.AreEqual(automaticForbiddenZones, stabilityModel.SlipPlaneConstraints.AutomaticForbiddenZones); - Assert.AreEqual(slipPlaneMinimumDepth, stabilityModel.SlipPlaneConstraints.SlipPlaneMinDepth); - Assert.AreEqual(slipPlaneMinimumLength, stabilityModel.SlipPlaneConstraints.SlipPlaneMinLength); AssertIrrelevantValues(stabilityModel); AssertAutomaticallySyncedValues(stabilityModel, soilProfile2D, surfaceLine); @@ -281,18 +272,13 @@ }, SlipPlaneUpliftVan = new SlipPlaneUpliftVan(), MoveGrid = true, - AutomaticForbiddenZones = true, - CreateZones = true, - SlipPlaneMinimumDepth = 0, MaximumSliceWidth = 0, - SlipPlaneMinimumLength = 0 + SlipPlaneConstraints = new SlipPlaneConstraints() }; } private static void AssertIrrelevantValues(StabilityModel stabilityModel) { - Assert.IsNaN(stabilityModel.SlipPlaneConstraints.XEntryMin); // Set during calculation - Assert.IsNaN(stabilityModel.SlipPlaneConstraints.XEntryMax); // Set during calculation Assert.IsEmpty(stabilityModel.UniformLoads); // No traffic load for WBI Assert.AreEqual(0.0, stabilityModel.FileVersionAsRead); // Set by XML serialization Assert.IsNull(stabilityModel.MinimumSafetyCurve); // Output Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test.csproj =================================================================== diff -u -r594918877fb934fc9e5c1157d3c8dec4b53046ee -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test.csproj (.../Ringtoets.MacroStabilityInwards.KernelWrapper.Test.csproj) (revision 594918877fb934fc9e5c1157d3c8dec4b53046ee) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test.csproj (.../Ringtoets.MacroStabilityInwards.KernelWrapper.Test.csproj) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -66,6 +66,7 @@ + @@ -84,6 +85,7 @@ + Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Kernels/UpliftVan/Input/UpliftVanKernelInputAssert.cs =================================================================== diff -u -rc4392a12110e2bb3549c5fee1ec319c229b67198 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Kernels/UpliftVan/Input/UpliftVanKernelInputAssert.cs (.../UpliftVanKernelInputAssert.cs) (revision c4392a12110e2bb3549c5fee1ec319c229b67198) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Kernels/UpliftVan/Input/UpliftVanKernelInputAssert.cs (.../UpliftVanKernelInputAssert.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -46,6 +46,23 @@ /// /// Asserts whether is equal to . /// + /// The expected . + /// The actual . + /// Thrown when + /// is not equal to . + public static void AssertSlipPlaneConstraints(SlipPlaneConstraints expected, SlipPlaneConstraints actual) + { + Assert.AreEqual(expected.CreateZones, actual.CreateZones); + Assert.AreEqual(expected.AutomaticForbiddenZones, actual.AutomaticForbiddenZones); + Assert.AreEqual(expected.SlipPlaneMinDepth, actual.SlipPlaneMinDepth); + Assert.AreEqual(expected.SlipPlaneMinLength, actual.SlipPlaneMinLength); + Assert.AreEqual(expected.XEntryMin, actual.XEntryMin); + Assert.AreEqual(expected.XEntryMax, actual.XEntryMax); + } + + /// + /// Asserts whether is equal to . + /// /// The expected . /// The actual . /// Thrown when Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Kernels/UpliftVan/UpliftVanKernelStub.cs =================================================================== diff -u -r72b12726b73e7e011bed836163635b64220c23f1 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Kernels/UpliftVan/UpliftVanKernelStub.cs (.../UpliftVanKernelStub.cs) (revision 72b12726b73e7e011bed836163635b64220c23f1) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Kernels/UpliftVan/UpliftVanKernelStub.cs (.../UpliftVanKernelStub.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -79,16 +79,10 @@ public SlipPlaneUpliftVan SlipPlaneUpliftVan { get; set; } + public SlipPlaneConstraints SlipPlaneConstraints { get; set; } + public bool GridAutomaticDetermined { get; set; } - public bool CreateZones { get; set; } - - public bool AutomaticForbiddenZones { get; set; } - - public double SlipPlaneMinimumDepth { get; set; } - - public double SlipPlaneMinimumLength { get; set; } - public double FactorOfStability { get; set; } public double ZValue { get; set; } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/Converters/UpliftVanSlipPlaneConstraintsConverterTest.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/Converters/UpliftVanSlipPlaneConstraintsConverterTest.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/Converters/UpliftVanSlipPlaneConstraintsConverterTest.cs (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -0,0 +1,102 @@ +// Copyright (C) Stichting Deltares 2017. 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 Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.MacroStabilityInwards.Data; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; +using Ringtoets.MacroStabilityInwards.Service.Converters; + +namespace Ringtoets.MacroStabilityInwards.Service.Test.Converters +{ + [TestFixture] + public class UpliftVanSlipPlaneConstraintsConverterTest + { + [Test] + public void Convert_InputNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => UpliftVanSlipPlaneConstraintsConverter.Convert(null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("input", exception.ParamName); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void Convert_ZoningDeterminationTypeAutomatic_ReturnsExpectedUpliftVanSlipPlaneConstraints(bool createZones) + { + // Setup + var random = new Random(39); + var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()) + { + CreateZones = createZones, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, + SlipPlaneMinimumDepth = random.NextRoundedDouble(), + SlipPlaneMinimumLength = random.NextRoundedDouble(), + ZoneBoundaryLeft = random.NextRoundedDouble(), + ZoneBoundaryRight = random.NextRoundedDouble() + }; + + // Call + UpliftVanSlipPlaneConstraints constraints = UpliftVanSlipPlaneConstraintsConverter.Convert(input); + + // Assert + Assert.AreEqual(createZones, constraints.CreateZones); + Assert.IsTrue(constraints.AutomaticForbiddenZones); + Assert.AreEqual(input.SlipPlaneMinimumDepth, constraints.SlipPlaneMinimumDepth, input.SlipPlaneMinimumDepth.GetAccuracy()); + Assert.AreEqual(input.SlipPlaneMinimumLength, constraints.SlipPlaneMinimumLength, input.SlipPlaneMinimumLength.GetAccuracy()); + Assert.IsNaN(constraints.ZoneBoundaryLeft); + Assert.IsNaN(constraints.ZoneBoundaryRight); + } + + [Test] + public void Convert_CreateZonesTrueAndZoningDeterminationTypeManual_ReturnsExpectedUpliftVanSlipPlaneConstraints() + { + // Setup + var random = new Random(39); + var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties()) + { + CreateZones = true, + ZoningBoundariesDeterminationType = MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, + SlipPlaneMinimumDepth = random.NextRoundedDouble(), + SlipPlaneMinimumLength = random.NextRoundedDouble(), + ZoneBoundaryLeft = random.NextRoundedDouble(), + ZoneBoundaryRight = random.NextRoundedDouble() + }; + + // Call + UpliftVanSlipPlaneConstraints constraints = UpliftVanSlipPlaneConstraintsConverter.Convert(input); + + // Assert + Assert.IsTrue(constraints.CreateZones); + Assert.IsFalse(constraints.AutomaticForbiddenZones); + Assert.AreEqual(input.SlipPlaneMinimumDepth, constraints.SlipPlaneMinimumDepth, input.SlipPlaneMinimumDepth.GetAccuracy()); + Assert.AreEqual(input.SlipPlaneMinimumLength, constraints.SlipPlaneMinimumLength, input.SlipPlaneMinimumLength.GetAccuracy()); + Assert.AreEqual(input.ZoneBoundaryLeft, constraints.ZoneBoundaryLeft, input.ZoneBoundaryLeft.GetAccuracy()); + Assert.AreEqual(input.ZoneBoundaryRight, constraints.ZoneBoundaryRight, input.ZoneBoundaryRight.GetAccuracy()); + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/MacroStabilityInwardsCalculationServiceTest.cs =================================================================== diff -u -rdb798825b9ed601ec3716399ce46e19d2ff2d8ea -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/MacroStabilityInwardsCalculationServiceTest.cs (.../MacroStabilityInwardsCalculationServiceTest.cs) (revision db798825b9ed601ec3716399ce46e19d2ff2d8ea) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/MacroStabilityInwardsCalculationServiceTest.cs (.../MacroStabilityInwardsCalculationServiceTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -405,6 +405,41 @@ } [Test] + [TestCase(true, MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic)] + [TestCase(false, MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic)] + [TestCase(false, MacroStabilityInwardsZoningBoundariesDeterminationType.Manual)] + public void Calculate_ZoningBoundariesDeterminationTypeAutomatic_SetsInputOnCalculator(bool createZones, + MacroStabilityInwardsZoningBoundariesDeterminationType zoningBoundariesDeterminationType) + { + // Setup + var random = new Random(11); + MacroStabilityInwardsInput inputParameters = testCalculation.InputParameters; + inputParameters.CreateZones = createZones; + inputParameters.ZoningBoundariesDeterminationType = zoningBoundariesDeterminationType; + + inputParameters.SlipPlaneMinimumDepth = random.NextRoundedDouble(); + inputParameters.SlipPlaneMinimumLength = random.NextRoundedDouble(); + inputParameters.ZoneBoundaryLeft = random.NextRoundedDouble(); + inputParameters.ZoneBoundaryRight = random.NextRoundedDouble(); + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + // Call + MacroStabilityInwardsCalculationService.Calculate(testCalculation); + + // Assert + UpliftVanCalculatorInput actualInput = ((TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance) + .LastCreatedUpliftVanCalculator.Input; + Assert.IsTrue(actualInput.SlipPlaneConstraints.AutomaticForbiddenZones); + Assert.AreEqual(createZones, actualInput.SlipPlaneConstraints.CreateZones); + Assert.IsNaN(actualInput.SlipPlaneConstraints.ZoneBoundaryLeft); + Assert.IsNaN(actualInput.SlipPlaneConstraints.ZoneBoundaryRight); + Assert.AreEqual(inputParameters.SlipPlaneMinimumDepth, actualInput.SlipPlaneConstraints.SlipPlaneMinimumDepth); + Assert.AreEqual(inputParameters.SlipPlaneMinimumLength, actualInput.SlipPlaneConstraints.SlipPlaneMinimumLength); + } + } + + [Test] public void Calculate_CalculationRan_SetOutput() { // Setup @@ -560,6 +595,7 @@ CalculatorInputAssert.AssertPhreaticLineOffsets(originalInput.LocationInputExtreme, actualInput.PhreaticLineOffsetsExtreme); CalculatorInputAssert.AssertPhreaticLineOffsets(originalInput.LocationInputDaily, actualInput.PhreaticLineOffsetsDaily); AssertSlipPlaneInput(originalInput, actualInput.SlipPlane); + AssertSlipPlaneConstraints(originalInput, actualInput.SlipPlaneConstraints); Assert.AreEqual(WaternetCreationMode.CreateWaternet, actualInput.WaternetCreationMode); Assert.AreEqual(PlLineCreationMethod.RingtoetsWti2017, actualInput.PlLineCreationMethod); Assert.AreEqual(LandwardDirection.PositiveX, actualInput.LandwardDirection); @@ -585,12 +621,18 @@ Assert.AreEqual(originalInput.AdjustPhreaticLine3And4ForUplift, actualInput.AdjustPhreaticLine3And4ForUplift); Assert.AreEqual(originalInput.MoveGrid, actualInput.MoveGrid); Assert.AreEqual(originalInput.MaximumSliceWidth, actualInput.MaximumSliceWidth); - Assert.AreEqual(originalInput.CreateZones, actualInput.CreateZones); - Assert.AreEqual(originalInput.ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, actualInput.AutomaticForbiddenZones); - Assert.AreEqual(originalInput.SlipPlaneMinimumDepth, actualInput.SlipPlaneMinimumDepth); - Assert.AreEqual(originalInput.SlipPlaneMinimumLength, actualInput.SlipPlaneMinimumLength); } + private static void AssertSlipPlaneConstraints(MacroStabilityInwardsInput originalInput, UpliftVanSlipPlaneConstraints actualConstraints) + { + Assert.AreEqual(originalInput.CreateZones, actualConstraints.CreateZones); + Assert.AreEqual(originalInput.ZoningBoundariesDeterminationType == MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, actualConstraints.AutomaticForbiddenZones); + Assert.AreEqual(originalInput.ZoneBoundaryLeft, actualConstraints.ZoneBoundaryLeft); + Assert.AreEqual(originalInput.ZoneBoundaryRight, actualConstraints.ZoneBoundaryRight); + Assert.AreEqual(originalInput.SlipPlaneMinimumDepth, actualConstraints.SlipPlaneMinimumDepth); + Assert.AreEqual(originalInput.SlipPlaneMinimumLength, actualConstraints.SlipPlaneMinimumLength); + } + private static void AssertSlipPlaneInput(MacroStabilityInwardsInput originalInput, UpliftVanSlipPlane actualInput) { Assert.IsFalse(actualInput.GridAutomaticDetermined); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/MacroStabilityInwardsInputValidatorTest.cs =================================================================== diff -u -re4e0e6f48ce1decab5f8a3831d8663abc1799fbb -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/MacroStabilityInwardsInputValidatorTest.cs (.../MacroStabilityInwardsInputValidatorTest.cs) (revision e4e0e6f48ce1decab5f8a3831d8663abc1799fbb) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/MacroStabilityInwardsInputValidatorTest.cs (.../MacroStabilityInwardsInputValidatorTest.cs) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -283,7 +283,6 @@ public void Validate_SurfaceLineNear2DProfile_ReturnsEmpty(MacroStabilityInwardsSoilProfile2D soilProfile) { // Setup - var surfaceLine = new MacroStabilityInwardsSurfaceLine("Test"); surfaceLine.SetGeometry(new[] { @@ -304,6 +303,64 @@ } [Test] + public void Validate_ZoneBoundaryRightSmallerThanZoneBoundaryLeft_ReturnsError() + { + // Setup + input.ZoneBoundaryLeft = (RoundedDouble) 0.5; + input.ZoneBoundaryRight = (RoundedDouble) 0.2; + + // Call + IEnumerable messages = MacroStabilityInwardsInputValidator.Validate(input).ToArray(); + + // Assert + CollectionAssert.AreEqual(new[] + { + "Zoneringsgrens links moet kleiner zijn dan of gelijk zijn aan zoneringsgrens rechts." + }, messages); + } + + [Test] + [SetCulture("nl-NL")] + [TestCase(0.1, 2)] + [TestCase(-2, 0.3)] + public void Validate_ZoneBoundariesOutsideSurfaceLine_ReturnsError(double zoneBoundaryLeft, double zoneBoundaryRight) + { + // Setup + input.ZoneBoundaryLeft = (RoundedDouble) zoneBoundaryLeft; + input.ZoneBoundaryRight = (RoundedDouble) zoneBoundaryRight; + + // Call + IEnumerable messages = MacroStabilityInwardsInputValidator.Validate(input).ToArray(); + + // Assert + CollectionAssert.AreEqual(new[] + { + "Zoneringsgrenzen moeten op het profiel liggen (bereik [0,0, 0,5])." + }, messages); + } + + [Test] + [TestCase(MacroStabilityInwardsZoningBoundariesDeterminationType.Manual, false)] + [TestCase(MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, false)] + [TestCase(MacroStabilityInwardsZoningBoundariesDeterminationType.Automatic, true)] + public void Validate_ZoningBoundariesDeterminationTypeManualOrCreateZonesFalse_ReturnsEmpty( + MacroStabilityInwardsZoningBoundariesDeterminationType determinationType, + bool createZones) + { + // Setup + input.ZoneBoundaryLeft = (RoundedDouble) 1; + input.ZoneBoundaryRight = (RoundedDouble) 0.6; + input.ZoningBoundariesDeterminationType = determinationType; + input.CreateZones = createZones; + + // Call + IEnumerable messages = MacroStabilityInwardsInputValidator.Validate(input).ToArray(); + + // Assert + CollectionAssert.IsEmpty(messages); + } + + [Test] public void Validate_MultipleTangentLinesWithTangentLineTopAndBottomSame_ReturnsError() { // Setup Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/Ringtoets.MacroStabilityInwards.Service.Test.csproj =================================================================== diff -u -r04f5526f955c773d4987e820e2aca2614dfbd8d8 -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/Ringtoets.MacroStabilityInwards.Service.Test.csproj (.../Ringtoets.MacroStabilityInwards.Service.Test.csproj) (revision 04f5526f955c773d4987e820e2aca2614dfbd8d8) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Service.Test/Ringtoets.MacroStabilityInwards.Service.Test.csproj (.../Ringtoets.MacroStabilityInwards.Service.Test.csproj) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -59,6 +59,7 @@ + Index: build/DatabaseStructure.sql =================================================================== diff -u -ra25ab906f08e5e263ebb35920acc3ee1bdd928df -r73bd43678d003eca592c2ce14a2500a983d9b4c9 --- build/DatabaseStructure.sql (.../DatabaseStructure.sql) (revision a25ab906f08e5e263ebb35920acc3ee1bdd928df) +++ build/DatabaseStructure.sql (.../DatabaseStructure.sql) (revision 73bd43678d003eca592c2ce14a2500a983d9b4c9) @@ -1,6 +1,6 @@ /* ---------------------------------------------------- */ /* Generated by Enterprise Architect Version 12.0 */ -/* Created On : 06-nov-2017 14:27:01 */ +/* Created On : 16-Nov-2017 12:03:12 */ /* DBMS : SQLite */ /* ---------------------------------------------------- */ @@ -1733,6 +1733,9 @@ 'LocationInputDailyPhreaticLineOffsetBelowShoulderBaseInside' REAL, 'LocationInputDailyPhreaticLineOffsetDikeToeAtPolder' REAL, 'CreateZones' TINYINT (1) NOT NULL, -- true or false + 'ZoningBoundariesDeterminationType' TINYINT (1) NOT NULL, -- Enumtype: 1 = Automatic, 2 = Manual + 'ZoneBoundaryLeft' REAL, + 'ZoneBoundaryRight' REAL, CONSTRAINT 'FK_MacroStabilityInwardsCalculationEntity_CalculationGroupEntity' FOREIGN KEY ('CalculationGroupEntityId') REFERENCES 'CalculationGroupEntity' ('CalculationGroupEntityId') ON DELETE Cascade ON UPDATE Cascade, CONSTRAINT 'FK_MacroStabilityInwardsCalculationEntity_HydraulicLocationEntity' FOREIGN KEY ('HydraulicLocationEntityId') REFERENCES 'HydraulicLocationEntity' ('HydraulicLocationEntityId') ON DELETE Set Null ON UPDATE Cascade, CONSTRAINT 'FK_MacroStabilityInwardsCalculationEntity_MacroStabilityInwardsStochasticSoilProfileEntity' FOREIGN KEY ('MacroStabilityInwardsStochasticSoilProfileEntityId') REFERENCES 'MacroStabilityInwardsStochasticSoilProfileEntity' ('MacroStabilityInwardsStochasticSoilProfileEntityId') ON DELETE Set Null ON UPDATE Cascade, Index: design/DatabaseDesign.eap =================================================================== diff -u -ra25ab906f08e5e263ebb35920acc3ee1bdd928df -r73bd43678d003eca592c2ce14a2500a983d9b4c9 Binary files differ