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 + + + +