Index: Ringtoets/Common/src/Ringtoets.Common.IO/Schema/ConfigurationSchemaIdentifiers.cs
===================================================================
diff -u -r4011a127978bb211ddb1101a2c608ed9c991d06d -r928b72eb0fe0476d085e49e21ffd325b749a7db9
--- Ringtoets/Common/src/Ringtoets.Common.IO/Schema/ConfigurationSchemaIdentifiers.cs (.../ConfigurationSchemaIdentifiers.cs) (revision 4011a127978bb211ddb1101a2c608ed9c991d06d)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Schema/ConfigurationSchemaIdentifiers.cs (.../ConfigurationSchemaIdentifiers.cs) (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -86,37 +86,37 @@
///
/// The identifier for the phreatic level exit stochast name.
///
- internal const string AllowedLevelIncreaseStorageStochastName = "peilverhogingkomberging";
+ public const string AllowedLevelIncreaseStorageStochastName = "peilverhogingkomberging";
///
/// The identifier for the critical overtopping discharge stochast name.
///
- internal const string CriticalOvertoppingDischargeStochastName = "kritiekinstromenddebiet";
+ public const string CriticalOvertoppingDischargeStochastName = "kritiekinstromenddebiet";
///
/// The identifier for the model factor super critical flow stochast name.
///
- internal const string ModelFactorSuperCriticalFlowStochastName = "modelfactoroverloopdebiet";
+ public const string ModelFactorSuperCriticalFlowStochastName = "modelfactoroverloopdebiet";
///
/// The identifier for the model factor super critical flow stochast name.
///
- internal const string FlowWidthAtBottomProtectionStochastName = "breedtebodembescherming";
+ public const string FlowWidthAtBottomProtectionStochastName = "breedtebodembescherming";
///
/// The identifier for the storage structure area stochast name.
///
- internal const string StorageStructureAreaStochastName = "kombergendoppervlak";
+ public const string StorageStructureAreaStochastName = "kombergendoppervlak";
///
/// The identifier for the storm duration stochast name.
///
- internal const string StormDurationStochastName = "stormduur";
+ public const string StormDurationStochastName = "stormduur";
///
/// The identifier for the width flow apertures stochast name.
///
- internal const string WidthFlowAperturesStochastName = "breedtedoorstroomopening";
+ public const string WidthFlowAperturesStochastName = "breedtedoorstroomopening";
#endregion
Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresCalculationConfigurationReader.cs
===================================================================
diff -u -rd393a6e22ba176f0ce9731629a37ce3272b1f433 -r928b72eb0fe0476d085e49e21ffd325b749a7db9
--- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresCalculationConfigurationReader.cs (.../HeightStructuresCalculationConfigurationReader.cs) (revision d393a6e22ba176f0ce9731629a37ce3272b1f433)
+++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresCalculationConfigurationReader.cs (.../HeightStructuresCalculationConfigurationReader.cs) (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -21,6 +21,8 @@
using System.Collections.Generic;
using System.Xml.Linq;
+using Ringtoets.Common.IO;
+using Ringtoets.Common.IO.Configurations;
using Ringtoets.Common.IO.Readers;
using Ringtoets.Common.IO.Schema;
using Ringtoets.HeightStructures.IO.Properties;
@@ -72,7 +74,71 @@
protected override HeightStructuresCalculationConfiguration ParseCalculationElement(XElement calculationElement)
{
- return new HeightStructuresCalculationConfiguration(calculationElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute).Value);
+ var configuration = new HeightStructuresCalculationConfiguration(calculationElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute).Value);
+ configuration.FailureProbabilityStructureWithErosion = calculationElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.FailureProbabilityStructureWithErosionElement);
+ configuration.StructureNormalOrientation = calculationElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.Orientation);
+
+ configuration.ForeshoreProfileName = calculationElement.GetStringValueFromDescendantElement(ConfigurationSchemaIdentifiers.ForeshoreProfileNameElement);
+ configuration.HydraulicBoundaryLocationName = calculationElement.GetStringValueFromDescendantElement(ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement);
+ configuration.StructureName = calculationElement.GetStringValueFromDescendantElement(ConfigurationSchemaIdentifiers.StructureElement);
+
+ configuration.WaveReduction = GetWaveReductionParameters(calculationElement);
+
+ configuration.LevelCrestStructure = GetStandardDeviationStochastParameters(calculationElement, HeightStructuresConfigurationSchemaIdentifiers.LevelCrestStructureStochastName);
+ configuration.AllowedLevelIncreaseStorage = GetStandardDeviationStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.AllowedLevelIncreaseStorageStochastName);
+ configuration.FlowWidthAtBottomProtection = GetStandardDeviationStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.FlowWidthAtBottomProtectionStochastName);
+ configuration.ModelFactorSuperCriticalFlow = GetStandardDeviationStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.ModelFactorSuperCriticalFlowStochastName);
+ configuration.WidthFlowApertures = GetStandardDeviationStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.WidthFlowAperturesStochastName);
+
+ configuration.CriticalOvertoppingDischarge = GetVariationCoefficientStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.CriticalOvertoppingDischargeStochastName);
+ configuration.StorageStructureArea = GetVariationCoefficientStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.StorageStructureAreaStochastName);
+ configuration.StormDuration = GetVariationCoefficientStochastParameters(calculationElement, ConfigurationSchemaIdentifiers.StormDurationStochastName);
+
+ return configuration;
}
+
+ private WaveReductionConfiguration GetWaveReductionParameters(XElement calculationElement)
+ {
+ XElement waveReduction = calculationElement.GetDescendantElement(ConfigurationSchemaIdentifiers.WaveReduction);
+ if (waveReduction != null)
+ {
+ return new WaveReductionConfiguration
+ {
+ BreakWaterType = (ReadBreakWaterType?) calculationElement.GetConvertedValueFromDescendantStringElement(ConfigurationSchemaIdentifiers.BreakWaterType),
+ BreakWaterHeight = calculationElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.BreakWaterHeight),
+ UseBreakWater = calculationElement.GetBoolValueFromDescendantElement(ConfigurationSchemaIdentifiers.UseBreakWater),
+ UseForeshoreProfile = calculationElement.GetBoolValueFromDescendantElement(ConfigurationSchemaIdentifiers.UseForeshore)
+ };
+ }
+ return null;
+ }
+
+ private static MeanVariationCoefficientStochastConfiguration GetVariationCoefficientStochastParameters(XElement calculationElement, string stochastName)
+ {
+ XElement element = calculationElement.GetStochastElement(stochastName);
+ if (element != null)
+ {
+ return new MeanVariationCoefficientStochastConfiguration
+ {
+ Mean = element.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.MeanElement),
+ VariationCoefficient = element.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.VariationCoefficientElement)
+ };
+ }
+ return null;
+ }
+
+ private static MeanStandardDeviationStochastConfiguration GetStandardDeviationStochastParameters(XElement calculationElement, string stochastName)
+ {
+ XElement element = calculationElement.GetStochastElement(stochastName);
+ if (element != null)
+ {
+ return new MeanStandardDeviationStochastConfiguration
+ {
+ Mean = element.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.MeanElement),
+ StandardDeviation = element.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.StandardDeviationElement)
+ };
+ }
+ return null;
+ }
}
}
\ No newline at end of file
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresCalculationConfigurationReaderTest.cs
===================================================================
diff -u -rd393a6e22ba176f0ce9731629a37ce3272b1f433 -r928b72eb0fe0476d085e49e21ffd325b749a7db9
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresCalculationConfigurationReaderTest.cs (.../HeightStructuresCalculationConfigurationReaderTest.cs) (revision d393a6e22ba176f0ce9731629a37ce3272b1f433)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresCalculationConfigurationReaderTest.cs (.../HeightStructuresCalculationConfigurationReaderTest.cs) (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -24,8 +24,11 @@
using NUnit.Framework;
using Ringtoets.Common.IO.Readers;
using System.IO;
+using System.Linq;
using System.Xml.Schema;
using Core.Common.Base.IO;
+using Ringtoets.Common.IO;
+using Ringtoets.Common.IO.Configurations;
namespace Ringtoets.HeightStructures.IO.Test
{
@@ -162,14 +165,14 @@
"The 'damgebruiken' element is invalid - The value 'string' is invalid according to its datatype 'Boolean'")
.SetName("invalidUseBreakWaterNoBoolean");
yield return new TestCaseData("invalidMultipleUseBreakWaters.xml",
- "The element 'golfreductie' has invalid child element 'damgebruiken'.")
+ "Element 'damgebruiken' cannot appear more than once if content model type is \"all\".")
.SetName("invalidMultipleUseBreakWaters");
yield return new TestCaseData("invalidBreakWaterTypeEmpty.xml",
"The 'damtype' element is invalid - The value '' is invalid according to its datatype 'String' - The Enumeration constraint failed.")
.SetName("invalidBreakWaterTypeEmpty");
yield return new TestCaseData("invalidMultipleBreakWaterTypes.xml",
- "The element 'golfreductie' has invalid child element 'damtype'.")
+ "Element 'damtype' cannot appear more than once if content model type is \"all\".")
.SetName("invalidMultipleBreakWaterTypes");
yield return new TestCaseData("invalidBreakWaterTypeUnsupportedString.xml",
"The 'damtype' element is invalid - The value 'invalid' is invalid according to its datatype 'String' - The Enumeration constraint failed.")
@@ -185,7 +188,7 @@
"The 'damhoogte' element is invalid - The value '1,2' is invalid according to its datatype 'Double'")
.SetName("invalidBreakWaterHeightWrongCulture");
yield return new TestCaseData("invalidMultipleBreakWaterHeights.xml",
- "The element 'golfreductie' has invalid child element 'damhoogte'.")
+ "Element 'damhoogte' cannot appear more than once if content model type is \"all\".")
.SetName("invalidMultipleBreakWaterHeights");
yield return new TestCaseData("invalidUseForeshoreEmpty.xml",
@@ -195,7 +198,7 @@
"The 'voorlandgebruiken' element is invalid - The value 'string' is invalid according to its datatype 'Boolean'")
.SetName("invalidUseForeshoreNoBoolean");
yield return new TestCaseData("invalidMultipleUseForeshore.xml",
- "The element 'golfreductie' has invalid child element 'voorlandgebruiken'.")
+ "Element 'voorlandgebruiken' cannot appear more than once if content model type is \"all\".")
.SetName("invalidMultipleUseForeshores");
}
}
@@ -228,5 +231,254 @@
Assert.IsInstanceOf(exception.InnerException);
StringAssert.Contains(expectedParsingMessage, exception.InnerException?.Message);
}
+
+ [Test]
+ [TestCase("validConfigurationEmptyStochasts")]
+ [TestCase("validConfigurationEmptyCalculation")]
+ public void Read_ValidConfigurationWithEmptyCalculationOrWithEmptyStochasts_NoValuesSet(string fileName)
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, $"{fileName}.xml");
+ var reader = new HeightStructuresCalculationConfigurationReader(filePath);
+
+ // Call
+ IList readConfigurationItems = reader.Read().ToList();
+
+ // Assert
+ Assert.AreEqual(1, readConfigurationItems.Count);
+
+ var calculation = (HeightStructuresCalculationConfiguration) readConfigurationItems[0];
+ Assert.IsNull(calculation.StructureNormalOrientation);
+ Assert.IsNull(calculation.StructureName);
+ Assert.IsNull(calculation.HydraulicBoundaryLocationName);
+ Assert.IsNull(calculation.ForeshoreProfileName);
+ Assert.IsNull(calculation.FailureProbabilityStructureWithErosion);
+
+ Assert.IsNull(calculation.LevelCrestStructure);
+ Assert.IsNull(calculation.AllowedLevelIncreaseStorage);
+ Assert.IsNull(calculation.CriticalOvertoppingDischarge);
+ Assert.IsNull(calculation.FlowWidthAtBottomProtection);
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow);
+ Assert.IsNull(calculation.StorageStructureArea);
+ Assert.IsNull(calculation.StormDuration);
+ Assert.IsNull(calculation.WidthFlowApertures);
+
+ Assert.IsNull(calculation.WaveReduction);
+ }
+
+ [Test]
+ [TestCase("validFullConfiguration")]
+ [TestCase("validFullConfiguration_differentOrder")]
+ public void Read_ValidFullConfigurations_ExpectedValues(string fileName)
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, $"{fileName}.xml");
+ var reader = new HeightStructuresCalculationConfigurationReader(filePath);
+
+ // Call
+ IList readConfigurationItems = reader.Read().ToList();
+
+ // Assert
+ Assert.AreEqual(1, readConfigurationItems.Count);
+
+ var calculation = (HeightStructuresCalculationConfiguration) readConfigurationItems[0];
+ Assert.AreEqual(67.1, calculation.StructureNormalOrientation);
+ Assert.AreEqual("kunstwerk1", calculation.StructureName);
+ Assert.AreEqual("Locatie1", calculation.HydraulicBoundaryLocationName);
+ Assert.AreEqual("profiel1", calculation.ForeshoreProfileName);
+ Assert.AreEqual(1e-6, calculation.FailureProbabilityStructureWithErosion);
+
+ Assert.AreEqual(4.3, calculation.LevelCrestStructure.Mean);
+ Assert.AreEqual(0.1, calculation.LevelCrestStructure.StandardDeviation);
+
+ Assert.AreEqual(0.2, calculation.AllowedLevelIncreaseStorage.Mean);
+ Assert.AreEqual(0.01, calculation.AllowedLevelIncreaseStorage.StandardDeviation);
+ Assert.AreEqual(2, calculation.CriticalOvertoppingDischarge.Mean);
+ Assert.AreEqual(0.1, calculation.CriticalOvertoppingDischarge.VariationCoefficient);
+ Assert.AreEqual(15.2, calculation.FlowWidthAtBottomProtection.Mean);
+ Assert.AreEqual(0.1, calculation.FlowWidthAtBottomProtection.StandardDeviation);
+ Assert.AreEqual(1.10, calculation.ModelFactorSuperCriticalFlow.Mean);
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow.StandardDeviation);
+ Assert.AreEqual(15000, calculation.StorageStructureArea.Mean);
+ Assert.AreEqual(0.01, calculation.StorageStructureArea.VariationCoefficient);
+ Assert.AreEqual(6.0, calculation.StormDuration.Mean);
+ Assert.IsNull(calculation.StormDuration.VariationCoefficient);
+ Assert.AreEqual(15.2, calculation.WidthFlowApertures.Mean);
+ Assert.AreEqual(0.1, calculation.WidthFlowApertures.StandardDeviation);
+
+ Assert.AreEqual(ReadBreakWaterType.Dam, calculation.WaveReduction.BreakWaterType);
+ Assert.AreEqual(1.234, calculation.WaveReduction.BreakWaterHeight);
+ Assert.IsTrue(calculation.WaveReduction.UseBreakWater);
+ Assert.IsTrue(calculation.WaveReduction.UseForeshoreProfile);
+ }
+
+ [Test]
+ public void Read_ValidFullConfigurationsContainingInfinity_ExpectedValues()
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, "validFullConfigurationContainingInfinity.xml");
+ var reader = new HeightStructuresCalculationConfigurationReader(filePath);
+
+ // Call
+ IList readConfigurationItems = reader.Read().ToList();
+
+ // Assert
+ Assert.AreEqual(1, readConfigurationItems.Count);
+
+ var calculation = (HeightStructuresCalculationConfiguration) readConfigurationItems[0];
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.StructureNormalOrientation.Value));
+ Assert.IsNull(calculation.StructureName);
+ Assert.IsNull(calculation.HydraulicBoundaryLocationName);
+ Assert.IsNull(calculation.ForeshoreProfileName);
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.FailureProbabilityStructureWithErosion.Value));
+
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.LevelCrestStructure.Mean.Value));
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.LevelCrestStructure.StandardDeviation.Value));
+
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.AllowedLevelIncreaseStorage.Mean.Value));
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.AllowedLevelIncreaseStorage.StandardDeviation.Value));
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.CriticalOvertoppingDischarge.Mean.Value));
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.CriticalOvertoppingDischarge.VariationCoefficient.Value));
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.FlowWidthAtBottomProtection.Mean.Value));
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.FlowWidthAtBottomProtection.StandardDeviation.Value));
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.ModelFactorSuperCriticalFlow.Mean.Value));
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow.StandardDeviation);
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.StorageStructureArea.Mean.Value));
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.StorageStructureArea.VariationCoefficient.Value));
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.StormDuration.Mean.Value));
+ Assert.IsNull(calculation.StormDuration.VariationCoefficient);
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.WidthFlowApertures.Mean.Value));
+ Assert.IsTrue(double.IsPositiveInfinity(calculation.WidthFlowApertures.StandardDeviation.Value));
+
+ Assert.IsNull(calculation.WaveReduction.BreakWaterType);
+ Assert.IsTrue(double.IsNegativeInfinity(calculation.WaveReduction.BreakWaterHeight.Value));
+ Assert.IsNull(calculation.WaveReduction.UseBreakWater);
+ Assert.IsNull(calculation.WaveReduction.UseForeshoreProfile);
+ }
+
+ [Test]
+ public void Read_ValidFullConfigurationsContainingNaN_ExpectedValues()
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, "validFullConfigurationContainingNaN.xml");
+ var reader = new HeightStructuresCalculationConfigurationReader(filePath);
+
+ // Call
+ IList readConfigurationItems = reader.Read().ToList();
+
+ // Assert
+ Assert.AreEqual(1, readConfigurationItems.Count);
+
+ var calculation = (HeightStructuresCalculationConfiguration) readConfigurationItems[0];
+ Assert.IsNaN(calculation.StructureNormalOrientation);
+ Assert.IsNull(calculation.StructureName);
+ Assert.IsNull(calculation.HydraulicBoundaryLocationName);
+ Assert.IsNull(calculation.ForeshoreProfileName);
+ Assert.IsNaN(calculation.FailureProbabilityStructureWithErosion);
+
+ Assert.IsNaN(calculation.LevelCrestStructure.Mean);
+ Assert.IsNaN(calculation.LevelCrestStructure.StandardDeviation);
+
+ Assert.IsNaN(calculation.AllowedLevelIncreaseStorage.Mean);
+ Assert.IsNaN(calculation.AllowedLevelIncreaseStorage.StandardDeviation);
+ Assert.IsNaN(calculation.CriticalOvertoppingDischarge.Mean);
+ Assert.IsNaN(calculation.CriticalOvertoppingDischarge.VariationCoefficient);
+ Assert.IsNaN(calculation.FlowWidthAtBottomProtection.Mean);
+ Assert.IsNaN(calculation.FlowWidthAtBottomProtection.StandardDeviation);
+ Assert.IsNaN(calculation.ModelFactorSuperCriticalFlow.Mean);
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow.StandardDeviation);
+ Assert.IsNaN(calculation.StorageStructureArea.Mean);
+ Assert.IsNaN(calculation.StorageStructureArea.VariationCoefficient);
+ Assert.IsNaN(calculation.StormDuration.Mean);
+ Assert.IsNull(calculation.StormDuration.VariationCoefficient);
+ Assert.IsNaN(calculation.WidthFlowApertures.Mean);
+ Assert.IsNaN(calculation.WidthFlowApertures.StandardDeviation);
+
+ Assert.IsNull(calculation.WaveReduction.BreakWaterType);
+ Assert.IsNaN(calculation.WaveReduction.BreakWaterHeight);
+ Assert.IsNull(calculation.WaveReduction.UseBreakWater);
+ Assert.IsNull(calculation.WaveReduction.UseForeshoreProfile);
+ }
+
+ [Test]
+ public void Read_ValidPartialConfigurations_ExpectedValues()
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, "validPartialConfiguration.xml");
+ var reader = new HeightStructuresCalculationConfigurationReader(filePath);
+
+ // Call
+ IList readConfigurationItems = reader.Read().ToList();
+
+ // Assert
+ Assert.AreEqual(1, readConfigurationItems.Count);
+
+ var calculation = (HeightStructuresCalculationConfiguration) readConfigurationItems[0];
+ Assert.IsNull(calculation.StructureNormalOrientation);
+ Assert.IsNull(calculation.StructureName);
+ Assert.AreEqual("Locatie1", calculation.HydraulicBoundaryLocationName);
+ Assert.AreEqual("profiel1", calculation.ForeshoreProfileName);
+ Assert.IsNull(calculation.FailureProbabilityStructureWithErosion);
+
+ Assert.IsNull(calculation.LevelCrestStructure);
+
+ Assert.IsNull(calculation.AllowedLevelIncreaseStorage);
+ Assert.AreEqual(2, calculation.CriticalOvertoppingDischarge.Mean);
+ Assert.AreEqual(0.1, calculation.CriticalOvertoppingDischarge.VariationCoefficient);
+ Assert.IsNull(calculation.FlowWidthAtBottomProtection);
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow);
+ Assert.AreEqual(15000, calculation.StorageStructureArea.Mean);
+ Assert.IsNull(calculation.StorageStructureArea.VariationCoefficient);
+ Assert.AreEqual(6.0, calculation.StormDuration.Mean);
+ Assert.IsNull(calculation.StormDuration.VariationCoefficient);
+ Assert.IsNull(calculation.WidthFlowApertures.Mean);
+ Assert.AreEqual(0.1, calculation.WidthFlowApertures.StandardDeviation);
+
+ Assert.IsNull(calculation.WaveReduction.BreakWaterType);
+ Assert.IsNull(calculation.WaveReduction.BreakWaterHeight);
+ Assert.IsTrue(calculation.WaveReduction.UseBreakWater);
+ Assert.IsTrue(calculation.WaveReduction.UseForeshoreProfile);
+ }
+
+ [Test]
+ public void Read_ValidConfigurationsEmptyStochastElements_ExpectedValues()
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, "validConfigurationEmptyStochastElements.xml");
+ var reader = new HeightStructuresCalculationConfigurationReader(filePath);
+
+ // Call
+ IList readConfigurationItems = reader.Read().ToList();
+
+ // Assert
+ Assert.AreEqual(1, readConfigurationItems.Count);
+
+ var calculation = (HeightStructuresCalculationConfiguration) readConfigurationItems[0];
+ Assert.IsNull(calculation.StructureNormalOrientation);
+ Assert.IsNull(calculation.StructureName);
+ Assert.IsNull(calculation.HydraulicBoundaryLocationName);
+ Assert.IsNull(calculation.ForeshoreProfileName);
+ Assert.IsNull(calculation.FailureProbabilityStructureWithErosion);
+
+ Assert.IsNull(calculation.LevelCrestStructure.Mean);
+ Assert.IsNull(calculation.LevelCrestStructure.StandardDeviation);
+
+ Assert.IsNull(calculation.AllowedLevelIncreaseStorage.Mean);
+ Assert.IsNull(calculation.AllowedLevelIncreaseStorage.StandardDeviation);
+ Assert.IsNull(calculation.CriticalOvertoppingDischarge.Mean);
+ Assert.IsNull(calculation.CriticalOvertoppingDischarge.VariationCoefficient);
+ Assert.IsNull(calculation.FlowWidthAtBottomProtection.Mean);
+ Assert.IsNull(calculation.FlowWidthAtBottomProtection.StandardDeviation);
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow.Mean);
+ Assert.IsNull(calculation.ModelFactorSuperCriticalFlow.StandardDeviation);
+ Assert.IsNull(calculation.StorageStructureArea.Mean);
+ Assert.IsNull(calculation.StorageStructureArea.VariationCoefficient);
+ Assert.IsNull(calculation.StormDuration.Mean);
+ Assert.IsNull(calculation.StormDuration.VariationCoefficient);
+ Assert.IsNull(calculation.WidthFlowApertures.Mean);
+ Assert.IsNull(calculation.WidthFlowApertures.StandardDeviation);
+
+ Assert.IsNull(calculation.WaveReduction);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validConfigurationEmptyStochastElements.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validConfigurationEmptyStochastElements.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validConfigurationEmptyStochastElements.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validConfigurationEmptyStochasts.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validConfigurationEmptyStochasts.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validConfigurationEmptyStochasts.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfiguration.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfiguration.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfiguration.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,48 @@
+
+
+
+ Locatie1
+ kunstwerk1
+ 67.1
+ 1E-6
+ profiel1
+
+ true
+ havendam
+ 1.234
+ true
+
+
+
+ 6.0
+
+
+ 1.10
+
+
+ 15.2
+ 0.1
+
+
+ 15.2
+ 0.1
+
+
+ 15000
+ 0.01
+
+
+ 0.2
+ 0.01
+
+
+ 4.3
+ 0.1
+
+
+ 2
+ 0.1
+
+
+
+
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfigurationContainingInfinity.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfigurationContainingInfinity.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfigurationContainingInfinity.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,42 @@
+
+
+
+ -INF
+ -INF
+
+ -INF
+
+
+
+ -INF
+
+
+ -INF
+
+
+ -INF
+ INF
+
+
+ INF
+ INF
+
+
+ INF
+ INF
+
+
+ INF
+ -INF
+
+
+ -INF
+ -INF
+
+
+ INF
+ INF
+
+
+
+
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfigurationContainingNaN.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfigurationContainingNaN.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfigurationContainingNaN.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,42 @@
+
+
+
+ NaN
+ NaN
+
+ NaN
+
+
+
+ NaN
+
+
+ NaN
+
+
+ NaN
+ NaN
+
+
+ NaN
+ NaN
+
+
+ NaN
+ NaN
+
+
+ NaN
+ NaN
+
+
+ NaN
+ NaN
+
+
+ NaN
+ NaN
+
+
+
+
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfiguration_differentOrder.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfiguration_differentOrder.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validFullConfiguration_differentOrder.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,48 @@
+
+
+
+
+
+ 6.0
+
+
+ 4.3
+ 0.1
+
+
+ 2
+ 0.1
+
+
+ 1.10
+
+
+ 15.2
+ 0.1
+
+
+ 15000
+ 0.01
+
+
+ 15.2
+ 0.1
+
+
+ 0.2
+ 0.01
+
+
+
+ true
+ 1.234
+ havendam
+ true
+
+ profiel1
+ 1E-6
+ 67.1
+ kunstwerk1
+ Locatie1
+
+
Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validPartialConfiguration.xml
===================================================================
diff -u
--- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validPartialConfiguration.xml (revision 0)
+++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/test-data/HeightStructuresCalculationConfigurationReader/validPartialConfiguration.xml (revision 928b72eb0fe0476d085e49e21ffd325b749a7db9)
@@ -0,0 +1,26 @@
+
+
+
+ Locatie1
+ profiel1
+
+ true
+ true
+
+
+
+ 6.0
+
+
+ 0.1
+
+
+ 15000
+
+
+ 2
+ 0.1
+
+
+
+