Index: Ringtoets/Common/src/Ringtoets.Common.IO/Writers/XmlWriterExtensions.cs =================================================================== diff -u -r5d8bda6e12681d1c019b449b298c464921a06ed7 -rbd630045ef64f5b7e321021205aae3a4d32f4a5e --- Ringtoets/Common/src/Ringtoets.Common.IO/Writers/XmlWriterExtensions.cs (.../XmlWriterExtensions.cs) (revision 5d8bda6e12681d1c019b449b298c464921a06ed7) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Writers/XmlWriterExtensions.cs (.../XmlWriterExtensions.cs) (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -29,7 +29,7 @@ public static class XmlWriterExtensions { /// - /// Writes a single distribution as a stochast element in file. + /// Writes a single as a stochast element in file. /// /// The writer to use to write the distribution. /// @@ -53,6 +53,14 @@ writer.WriteEndElement(); } + /// + /// Writes a single as a stochast element in file. + /// + /// The writer to use to write the distribution. + /// + /// The distribution to write. + /// Thrown when the is + /// in an invalid state for writing. public static void WriteDistribution(this XmlWriter writer, string name, MeanVariationCoefficientStochastConfiguration distribution) { writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastElement); @@ -69,5 +77,36 @@ writer.WriteEndElement(); } + + /// + /// Writes a single as a wave reduction element in file. + /// + /// The writer to use to write the wave reduction. + /// The wave reduction to write. + /// Thrown when the is + /// in an invalid state for writing. + public static void WriteWaveReduction(this XmlWriter writer, WaveReductionConfiguration waveReduction) + { + writer.WriteStartElement(ConfigurationSchemaIdentifiers.WaveReduction); + + if (waveReduction.UseBreakWater.HasValue) + { + writer.WriteElementString(ConfigurationSchemaIdentifiers.UseBreakWater, XmlConvert.ToString(waveReduction.UseBreakWater.Value)); + } + if (waveReduction.BreakWaterType.HasValue) + { + writer.WriteElementString(ConfigurationSchemaIdentifiers.BreakWaterType, new ReadBreakWaterTypeConverter().ConvertToInvariantString(waveReduction.BreakWaterType.Value)); + } + if (waveReduction.BreakWaterHeight.HasValue) + { + writer.WriteElementString(ConfigurationSchemaIdentifiers.BreakWaterHeight, XmlConvert.ToString(waveReduction.BreakWaterHeight.Value)); + } + if (waveReduction.UseForeshoreProfile.HasValue) + { + writer.WriteElementString(ConfigurationSchemaIdentifiers.UseForeshore, XmlConvert.ToString(waveReduction.UseForeshoreProfile.Value)); + } + + writer.WriteEndElement(); + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Writers/XmlWriterExtensionsTest.cs =================================================================== diff -u -r5d8bda6e12681d1c019b449b298c464921a06ed7 -rbd630045ef64f5b7e321021205aae3a4d32f4a5e --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Writers/XmlWriterExtensionsTest.cs (.../XmlWriterExtensionsTest.cs) (revision 5d8bda6e12681d1c019b449b298c464921a06ed7) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Writers/XmlWriterExtensionsTest.cs (.../XmlWriterExtensionsTest.cs) (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -99,12 +99,71 @@ .SetName("Variation coefficient distribution with mean and variation coefficient."); } + public static IEnumerable GetWaveReductions() + { + yield return new TestCaseData( + new WaveReductionConfiguration(), + "waveReductionWithoutParameters.xml") + .SetName("Wave reduction without any of its paramters set."); + + yield return new TestCaseData( + new WaveReductionConfiguration + { + UseBreakWater = true, + BreakWaterType = ReadBreakWaterType.Dam, + BreakWaterHeight = 2.33, + UseForeshoreProfile = false + }, + "waveReduction.xml") + .SetName("Wave reduction with all its paramters set."); + + yield return new TestCaseData( + new WaveReductionConfiguration + { + UseBreakWater = true, + BreakWaterType = ReadBreakWaterType.Caisson, + UseForeshoreProfile = false + }, + "waveReductionWithoutBreakWaterHeight.xml") + .SetName("Wave reduction without break water height set."); + + yield return new TestCaseData( + new WaveReductionConfiguration + { + UseBreakWater = false, + BreakWaterHeight = 12.66, + UseForeshoreProfile = true + }, + "waveReductionWithoutBreakWaterType.xml") + .SetName("Wave reduction without break water type set."); + + yield return new TestCaseData( + new WaveReductionConfiguration + { + BreakWaterType = ReadBreakWaterType.Wall, + BreakWaterHeight = 23.4, + UseForeshoreProfile = false + }, + "waveReductionWithoutUseBreakWater.xml") + .SetName("Wave reduction without use break water set."); + + yield return new TestCaseData( + new WaveReductionConfiguration + { + UseBreakWater = true, + BreakWaterType = ReadBreakWaterType.Dam, + BreakWaterHeight = 0.2, + }, + "waveReductionWithoutUseForeshoreProfile.xml") + .SetName("Wave reduction without use foreshore profile set."); + } + [Test] [TestCaseSource(nameof(GetDistributions))] - public void WriteDistribution_WithoutDifferentSetParameters_WritesStochastWithSetParameters(MeanStandardDeviationStochastConfiguration distribution, string fileName) + public void WriteDistribution_WithDifferentSetParameters_WritesStochastWithSetParameters(MeanStandardDeviationStochastConfiguration distribution, string fileName) { // Setup - string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_WithoutDifferentSetParameters_WritesStochastWithSetParameters)); + string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_WithDifferentSetParameters_WritesStochastWithSetParameters)); const string name = "normal"; try @@ -128,10 +187,10 @@ [Test] [TestCaseSource(nameof(GetVariationCoefficientDistributions))] - public void WriteDistribution_WithoutDifferentSetParameters_WritesStochastWithSetParameters(MeanVariationCoefficientStochastConfiguration distribution, string fileName) + public void WriteDistribution_WithDifferentSetParameters_WritesStochastWithSetParameters(MeanVariationCoefficientStochastConfiguration distribution, string fileName) { // Setup - string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_WithoutDifferentSetParameters_WritesStochastWithSetParameters)); + string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_WithDifferentSetParameters_WritesStochastWithSetParameters)); const string name = "variation coefficient normal"; try @@ -153,6 +212,32 @@ } } + [Test] + [TestCaseSource(nameof(GetWaveReductions))] + public void WriteWaveReduction_WithoutDifferentSetParameters_WritesStochastWithSetParameters(WaveReductionConfiguration waveReduction, string fileName) + { + // Setup + string filePath = TestHelper.GetScratchPadPath(nameof(WriteWaveReduction_WithoutDifferentSetParameters_WritesStochastWithSetParameters)); + + try + { + using (XmlWriter xmlWriter = CreateXmlWriter(filePath)) + { + // Call + xmlWriter.WriteWaveReduction(waveReduction); + } + + // Assert + string actualXml = File.ReadAllText(filePath); + string expectedXml = GetTestFileContent(fileName); + Assert.AreEqual(expectedXml, actualXml); + } + finally + { + File.Delete(filePath); + } + } + private string GetTestFileContent(string testFile) { return File.ReadAllText(Path.Combine(testDirectory, testFile)); Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReduction.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReduction.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReduction.xml (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -0,0 +1,6 @@ + + true + havendam + 2.33 + false + \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutBreakWaterHeight.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutBreakWaterHeight.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutBreakWaterHeight.xml (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -0,0 +1,5 @@ + + true + caisson + false + \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutBreakWaterType.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutBreakWaterType.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutBreakWaterType.xml (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -0,0 +1,5 @@ + + false + 12.66 + true + \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutParameters.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutParameters.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutParameters.xml (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -0,0 +1 @@ + \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutUseBreakWater.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutUseBreakWater.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutUseBreakWater.xml (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -0,0 +1,5 @@ + + verticalewand + 23.4 + false + \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutUseForeshoreProfile.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutUseForeshoreProfile.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/waveReductionWithoutUseForeshoreProfile.xml (revision bd630045ef64f5b7e321021205aae3a4d32f4a5e) @@ -0,0 +1,5 @@ + + true + havendam + 0.2 + \ No newline at end of file