Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/Exporters/StabilityPointStructuresCalculationConfigurationWriter.cs =================================================================== diff -u -r05772f7de5cf48deadb93cab09b6476af1a6e4c6 -rf5b1a2d20962607a2e063bd6e5582dfaec00002d --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/Exporters/StabilityPointStructuresCalculationConfigurationWriter.cs (.../StabilityPointStructuresCalculationConfigurationWriter.cs) (revision 05772f7de5cf48deadb93cab09b6476af1a6e4c6) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/Exporters/StabilityPointStructuresCalculationConfigurationWriter.cs (.../StabilityPointStructuresCalculationConfigurationWriter.cs) (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -52,6 +52,18 @@ WriteElementWhenContentAvailable(writer, StabilityPointStructuresConfigurationSchemaIdentifiers.FailureProbabilityRepairClosureElement, configuration.FailureProbabilityRepairClosure); + + WriteConfigurationInflowModelTypeWhenAvailable(writer, configuration.InflowModelType); + + WriteElementWhenContentAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.LevellingCountElement, + configuration.LevellingCount); + WriteElementWhenContentAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.ProbabilityCollisionSecondaryStructureElement, + configuration.ProbabilityCollisionSecondaryStructure); + WriteElementWhenContentAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.VerticalDistanceElement, + configuration.VerticalDistance); } protected override void WriteSpecificStochasts(StabilityPointStructuresCalculationConfiguration configuration, XmlWriter writer) @@ -74,6 +86,42 @@ WriteDistributionWhenAvailable(writer, StabilityPointStructuresConfigurationSchemaIdentifiers.FlowVelocityStructureClosableStochastName, configuration.FlowVelocityStructureClosable); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.InsideWaterLevelStochastName, + configuration.InsideWaterLevel); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.InsideWaterLevelFailureConstructionStochastName, + configuration.InsideWaterLevelFailureConstruction); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.LevelCrestStructureStochastName, + configuration.LevelCrestStructure); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.ShipMassStochastName, + configuration.ShipMass); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.ShipVelocityStochastName, + configuration.ShipVelocity); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.StabilityLinearLoadModelStochastName, + configuration.StabilityLinearLoadModel); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.StabilityQuadraticLoadModelStochastName, + configuration.StabilityQuadraticLoadModel); + WriteDistributionWhenAvailable(writer, + StabilityPointStructuresConfigurationSchemaIdentifiers.ThresholdHeightOpenWeirStochastName, + configuration.ThresholdHeightOpenWeir); } + + private static void WriteConfigurationInflowModelTypeWhenAvailable(XmlWriter writer, ConfigurationInflowModelType? configuration) + { + if (!configuration.HasValue) + { + return; + } + + var converter = new ConfigurationInflowModelTypeConverter(); + writer.WriteElementString(StabilityPointStructuresConfigurationSchemaIdentifiers.InflowModelTypeElement, + converter.ConvertToInvariantString(configuration.Value)); + } } } \ No newline at end of file Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/StabilityPointStructuresCalculationConfiguration.cs =================================================================== diff -u -r239e0091ca8c9878fc6d324b5a0b85179c45dbb7 -rf5b1a2d20962607a2e063bd6e5582dfaec00002d --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/StabilityPointStructuresCalculationConfiguration.cs (.../StabilityPointStructuresCalculationConfiguration.cs) (revision 239e0091ca8c9878fc6d324b5a0b85179c45dbb7) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/StabilityPointStructuresCalculationConfiguration.cs (.../StabilityPointStructuresCalculationConfiguration.cs) (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -79,7 +79,7 @@ /// /// Gets or sets the inflow model type of the structure. /// - public ConfigurationInflowModelType InflowModelType { get; set; } + public ConfigurationInflowModelType? InflowModelType { get; set; } /// /// Gets or sets the stochast configuration for the inside water level of the structure. Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/Exporters/StabilityPointStructuresCalculationConfigurationWriterTest.cs =================================================================== diff -u -rf53bbfd52a477ea865f97ce02525b1fe96d05a30 -rf5b1a2d20962607a2e063bd6e5582dfaec00002d --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/Exporters/StabilityPointStructuresCalculationConfigurationWriterTest.cs (.../StabilityPointStructuresCalculationConfigurationWriterTest.cs) (revision f53bbfd52a477ea865f97ce02525b1fe96d05a30) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/Exporters/StabilityPointStructuresCalculationConfigurationWriterTest.cs (.../StabilityPointStructuresCalculationConfigurationWriterTest.cs) (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -19,7 +19,11 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Collections.Generic; +using System.IO; +using Core.Common.TestUtil; using NUnit.Framework; +using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.TestUtil; using Ringtoets.Common.IO.Writers; using Ringtoets.StabilityPointStructures.IO.Exporters; @@ -32,6 +36,199 @@ StabilityPointStructuresCalculationConfigurationWriter, StabilityPointStructuresCalculationConfiguration> { + private readonly string testDataPath = TestHelper.GetTestDataPath( + TestDataPath.Ringtoets.StabilityPointStructures.IO, + nameof(StabilityPointStructuresCalculationConfigurationWriter)); + + private static IEnumerable Calculations + { + get + { + yield return new TestCaseData("sparseConfiguration", new[] + { + new StabilityPointStructuresCalculationConfiguration("sparse config") + }) + .SetName("Calculation configuration with none of its parameters set"); + yield return new TestCaseData("completeConfiguration", new[] + { + CreateFullCalculation() + }) + .SetName("Calculation configuration with all parameters set"); + yield return new TestCaseData("folderWithSubfolderAndCalculation", new IConfigurationItem[] + { + new CalculationGroupConfiguration("Testmap", new IConfigurationItem[] + { + CreateFullCalculation(), + new CalculationGroupConfiguration("Nested", new IConfigurationItem[] + { + new StabilityPointStructuresCalculationConfiguration("Berekening 2") + }) + }) + }) + .SetName("Two nested calculation configurations"); + } + } + + [Test] + [TestCaseSource(nameof(Calculations))] + public void Write_ValidCalculation_ValidFile(string expectedFileName, IConfigurationItem[] configuration) + { + // Setup + string filePath = TestHelper.GetScratchPadPath($"{nameof(StabilityPointStructuresCalculationConfigurationWriterTest)}" + + $".{nameof(Write_ValidCalculation_ValidFile)}.{expectedFileName}.xml"); + + try + { + var writer = new StabilityPointStructuresCalculationConfigurationWriter(filePath); + + // Call + writer.Write(configuration); + + // Assert + Assert.IsTrue(File.Exists(filePath)); + + string actualXml = File.ReadAllText(filePath); + string expectedXmlFilePath = Path.Combine(testDataPath, $"{expectedFileName}.xml"); + string expectedXml = File.ReadAllText(expectedXmlFilePath); + + Assert.AreEqual(expectedXml, actualXml); + } + finally + { + File.Delete(filePath); + } + } + + private static StabilityPointStructuresCalculationConfiguration CreateFullCalculation() + { + return new StabilityPointStructuresCalculationConfiguration("Berekening 1") + { + AllowedLevelIncreaseStorage = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.01, + StandardDeviation = 0.11 + }, + AreaFlowApertures = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.02, + StandardDeviation = 0.12 + }, + BankWidth = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.03, + StandardDeviation = 0.13 + }, + ConstructiveStrengthLinearLoadModel = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.04, + VariationCoefficient = 0.14 + }, + ConstructiveStrengthQuadraticLoadModel = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.05, + VariationCoefficient = 0.15 + }, + CriticalOvertoppingDischarge = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.06, + VariationCoefficient = 0.16 + }, + EvaluationLevel = 1.1, + FailureCollisionEnergy = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.07, + VariationCoefficient = 0.17 + }, + FailureProbabilityRepairClosure = 2.2, + FailureProbabilityStructureWithErosion = 3.3, + FlowVelocityStructureClosable = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.08, + VariationCoefficient = 0.18 + }, + FlowWidthAtBottomProtection = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.09, + StandardDeviation = 0.19 + }, + ForeshoreProfileName = "profiel1", + HydraulicBoundaryLocationName = "Locatie1", + InflowModelType = ConfigurationInflowModelType.FloodedCulvert, + InsideWaterLevel = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.1, + StandardDeviation = 0.20 + }, + InsideWaterLevelFailureConstruction = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.11, + StandardDeviation = 0.21 + }, + LevelCrestStructure = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.12, + StandardDeviation = 0.22 + }, + LevellingCount = 4, + ModelFactorSuperCriticalFlow = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.13, + StandardDeviation = 0.23 + }, + ProbabilityCollisionSecondaryStructure = 5.5, + ShipMass = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.14, + VariationCoefficient = 0.24 + }, + ShipVelocity = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.15, + VariationCoefficient = 0.25 + }, + StabilityLinearLoadModel = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.16, + VariationCoefficient = 0.26 + }, + StabilityQuadraticLoadModel = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.17, + VariationCoefficient = 0.27 + }, + StormDuration = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.18, + VariationCoefficient = 0.28 + }, + StructureName = "kunstwerk1", + StructureNormalOrientation = 6.6, + StorageStructureArea = new MeanVariationCoefficientStochastConfiguration + { + Mean = 0.19, + VariationCoefficient = 0.29 + }, + ThresholdHeightOpenWeir = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.20, + StandardDeviation = 0.30 + }, + VerticalDistance = 7.7, + WidthFlowApertures = new MeanStandardDeviationStochastConfiguration + { + Mean = 0.21, + StandardDeviation = 0.31 + }, + WaveReduction = new WaveReductionConfiguration + { + UseBreakWater = true, + BreakWaterType = ConfigurationBreakWaterType.Dam, + BreakWaterHeight = 8.8, + UseForeshoreProfile = true + } + }; + } + protected override StabilityPointStructuresCalculationConfigurationWriter CreateWriterInstance(string filePath) { return new StabilityPointStructuresCalculationConfigurationWriter(filePath); Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/StabilityPointStructuresCalculationConfigurationTest.cs =================================================================== diff -u -r239e0091ca8c9878fc6d324b5a0b85179c45dbb7 -rf5b1a2d20962607a2e063bd6e5582dfaec00002d --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/StabilityPointStructuresCalculationConfigurationTest.cs (.../StabilityPointStructuresCalculationConfigurationTest.cs) (revision 239e0091ca8c9878fc6d324b5a0b85179c45dbb7) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/StabilityPointStructuresCalculationConfigurationTest.cs (.../StabilityPointStructuresCalculationConfigurationTest.cs) (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -60,7 +60,7 @@ Assert.IsNull(configuration.FailureCollisionEnergy); Assert.IsNull(configuration.FailureProbabilityRepairClosure); Assert.IsNull(configuration.FlowVelocityStructureClosable); - Assert.AreEqual((ConfigurationInflowModelType) 0, configuration.InflowModelType); + Assert.IsNull(configuration.InflowModelType); Assert.IsNull(configuration.InsideWaterLevel); Assert.IsNull(configuration.InsideWaterLevelFailureConstruction); Assert.IsNull(configuration.LevelCrestStructure); Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/completeConfiguration.xml =================================================================== diff -u --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/completeConfiguration.xml (revision 0) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/completeConfiguration.xml (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -0,0 +1,108 @@ + + + + Locatie1 + kunstwerk1 + 6.6 + 3.3 + profiel1 + 1.1 + 2.2 + verdronkenkoker + 4 + 5.5 + 7.7 + + true + havendam + 8.8 + true + + + + 0.09 + 0.19 + + + 0.21 + 0.31 + + + 0.19 + 0.29 + + + 0.06 + 0.16 + + + 0.13 + 0.23 + + + 0.01 + 0.11 + + + 0.18 + 0.28 + + + 0.02 + 0.12 + + + 0.03 + 0.13 + + + 0.04 + 0.14 + + + 0.05 + 0.15 + + + 0.07 + 0.17 + + + 0.08 + 0.18 + + + 0.1 + 0.2 + + + 0.11 + 0.21 + + + 0.12 + 0.22 + + + 0.14 + 0.24 + + + 0.15 + 0.25 + + + 0.16 + 0.26 + + + 0.17 + 0.27 + + + 0.2 + 0.3 + + + + \ No newline at end of file Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml =================================================================== diff -u --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml (revision 0) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -0,0 +1,115 @@ + + + + + Locatie1 + kunstwerk1 + 6.6 + 3.3 + profiel1 + 1.1 + 2.2 + verdronkenkoker + 4 + 5.5 + 7.7 + + true + havendam + 8.8 + true + + + + 0.09 + 0.19 + + + 0.21 + 0.31 + + + 0.19 + 0.29 + + + 0.06 + 0.16 + + + 0.13 + 0.23 + + + 0.01 + 0.11 + + + 0.18 + 0.28 + + + 0.02 + 0.12 + + + 0.03 + 0.13 + + + 0.04 + 0.14 + + + 0.05 + 0.15 + + + 0.07 + 0.17 + + + 0.08 + 0.18 + + + 0.1 + 0.2 + + + 0.11 + 0.21 + + + 0.12 + 0.22 + + + 0.14 + 0.24 + + + 0.15 + 0.25 + + + 0.16 + 0.26 + + + 0.17 + 0.27 + + + 0.2 + 0.3 + + + + + + + + + + \ No newline at end of file Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/sparseConfiguration.xml =================================================================== diff -u --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/sparseConfiguration.xml (revision 0) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/test-data/StabilityPointStructuresCalculationConfigurationWriter/sparseConfiguration.xml (revision f5b1a2d20962607a2e063bd6e5582dfaec00002d) @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file