Index: Ringtoets/Common/src/Ringtoets.Common.IO/Schema/ConfigurationSchemaIdentifiers.cs
===================================================================
diff -u -r2923096aeb41e1fb5d4ba0ad43ccb9f95ca7407a -r7ce0229b2d4293c464479e448b092c7f83eb94c3
--- Ringtoets/Common/src/Ringtoets.Common.IO/Schema/ConfigurationSchemaIdentifiers.cs (.../ConfigurationSchemaIdentifiers.cs) (revision 2923096aeb41e1fb5d4ba0ad43ccb9f95ca7407a)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Schema/ConfigurationSchemaIdentifiers.cs (.../ConfigurationSchemaIdentifiers.cs) (revision 7ce0229b2d4293c464479e448b092c7f83eb94c3)
@@ -72,6 +72,11 @@
public const string StandardDeviationElement = "standaardafwijking";
///
+ /// The identifier for variation coefficient elements.
+ ///
+ public const string VariationCoefficientElement = "variatiecoefficient";
+
+ ///
/// The tag of elements containing the orientation of the profile.
///
public const string Orientation = "orientatie";
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Writers/CalculationConfigurationWriter.cs
===================================================================
diff -u -r69c1988e3c492c44148e112151efb3c04a853fcc -r7ce0229b2d4293c464479e448b092c7f83eb94c3
--- Ringtoets/Common/src/Ringtoets.Common.IO/Writers/CalculationConfigurationWriter.cs (.../CalculationConfigurationWriter.cs) (revision 69c1988e3c492c44148e112151efb3c04a853fcc)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Writers/CalculationConfigurationWriter.cs (.../CalculationConfigurationWriter.cs) (revision 7ce0229b2d4293c464479e448b092c7f83eb94c3)
@@ -117,6 +117,33 @@
}
///
+ /// Writes the in XML format to file.
+ ///
+ /// The dictionary of variation coefficient distributions, keyed on name, to write.
+ /// The writer to use for writing.
+ /// Thrown when is null.
+ /// Thrown when the is closed.
+ protected static void WriteVariationCoefficientDistributions(IDictionary variationCoefficientDistributions, XmlWriter writer)
+ {
+ if (variationCoefficientDistributions == null)
+ {
+ throw new ArgumentNullException(nameof(variationCoefficientDistributions));
+ }
+
+ if (variationCoefficientDistributions.Count > 0)
+ {
+ writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastsElement);
+
+ foreach (KeyValuePair keyValuePair in variationCoefficientDistributions)
+ {
+ WriteVariationCoefficientDistribution(keyValuePair.Value, keyValuePair.Key, writer);
+ }
+
+ writer.WriteEndElement();
+ }
+ }
+
+ ///
/// Writes the properties of the in XML format to file.
///
/// The break water to write.
@@ -183,6 +210,19 @@
writer.WriteEndElement();
}
+ private static void WriteVariationCoefficientDistribution(IVariationCoefficientDistribution distribution, string elementName, XmlWriter writer)
+ {
+ writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastElement);
+
+ writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, elementName);
+ writer.WriteElementString(ConfigurationSchemaIdentifiers.MeanElement,
+ XmlConvert.ToString(distribution.Mean));
+ writer.WriteElementString(ConfigurationSchemaIdentifiers.VariationCoefficientElement,
+ XmlConvert.ToString(distribution.CoefficientOfVariation));
+
+ writer.WriteEndElement();
+ }
+
private void WriteCalculationGroup(CalculationGroup calculationGroup, XmlWriter writer)
{
writer.WriteStartElement(ConfigurationSchemaIdentifiers.FolderElement);
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Writers/CalculationConfigurationWriterTest.cs
===================================================================
diff -u -rb2288a6eae1568001c17d9ce7aaa5521a44595f2 -r7ce0229b2d4293c464479e448b092c7f83eb94c3
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Writers/CalculationConfigurationWriterTest.cs (.../CalculationConfigurationWriterTest.cs) (revision b2288a6eae1568001c17d9ce7aaa5521a44595f2)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Writers/CalculationConfigurationWriterTest.cs (.../CalculationConfigurationWriterTest.cs) (revision 7ce0229b2d4293c464479e448b092c7f83eb94c3)
@@ -47,7 +47,7 @@
public void WriteDistribution_WithoutDistributions_ArgumentNullException()
{
// Setup
- string filePath = TestHelper.GetScratchPadPath("test_distributions_write.xml");
+ string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_WithoutDistributions_ArgumentNullException));
try
{
@@ -74,7 +74,7 @@
public void WriteDistribution_EmptyDistributions_NothingWrittenToFile()
{
// Setup
- string filePath = TestHelper.GetScratchPadPath("test_distributions_write.xml");
+ string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_EmptyDistributions_NothingWrittenToFile));
try
{
@@ -101,7 +101,7 @@
public void WriteDistribution_WithDistributions_WritesEachDistributionAsElement()
{
// Setup
- string filePath = TestHelper.GetScratchPadPath("test_distributions_write.xml");
+ string filePath = TestHelper.GetScratchPadPath(nameof(WriteDistribution_WithDistributions_WritesEachDistributionAsElement));
string expectedXmlFilePath = TestHelper.GetTestDataPath(
TestDataPath.Ringtoets.Common.IO,
Path.Combine(nameof(CalculationConfigurationWriter), "distributions.xml"));
@@ -145,8 +145,113 @@
File.Delete(filePath);
}
}
+ [Test]
+ public void WriteVariationCoefficientDistribution_WithoutVariationCoefficientDistributions_ArgumentNullException()
+ {
+ // Setup
+ string filePath = TestHelper.GetScratchPadPath(
+ nameof(WriteVariationCoefficientDistribution_WithoutVariationCoefficientDistributions_ArgumentNullException));
+ try
+ {
+ using (XmlWriter xmlWriter = CreateXmlWriter(filePath))
+ {
+ var writer = new SimpleCalculationConfigurationWriter();
+
+ // Call
+ Assert.Throws(() => writer.PublicWriteDistributions(null, xmlWriter));
+ }
+
+ // Assert
+ string actualXml = File.ReadAllText(filePath);
+
+ Assert.IsEmpty(actualXml);
+ }
+ finally
+ {
+ File.Delete(filePath);
+ }
+ }
+
[Test]
+ public void WriteVariationCoefficientDistribution_EmptyVariationCoefficientDistributions_NothingWrittenToFile()
+ {
+ // Setup
+ string filePath = TestHelper.GetScratchPadPath(
+ nameof(WriteVariationCoefficientDistribution_EmptyVariationCoefficientDistributions_NothingWrittenToFile));
+
+ try
+ {
+ using (XmlWriter xmlWriter = CreateXmlWriter(filePath))
+ {
+ var writer = new SimpleCalculationConfigurationWriter();
+
+ // Call
+ writer.PublicWriteDistributions(new Dictionary(), xmlWriter);
+ }
+
+ // Assert
+ string actualXml = File.ReadAllText(filePath);
+
+ Assert.IsEmpty(actualXml);
+ }
+ finally
+ {
+ File.Delete(filePath);
+ }
+ }
+
+ [Test]
+ public void WriteVariationCoefficientDistribution_WithVariationCoefficientDistributions_WritesEachDistributionAsElement()
+ {
+ // Setup
+ string filePath = TestHelper.GetScratchPadPath(
+ nameof(WriteVariationCoefficientDistribution_WithVariationCoefficientDistributions_WritesEachDistributionAsElement));
+ string expectedXmlFilePath = TestHelper.GetTestDataPath(
+ TestDataPath.Ringtoets.Common.IO,
+ Path.Combine(nameof(CalculationConfigurationWriter), "variationCoefficientDistributions.xml"));
+
+ var distributions = new Dictionary
+ {
+ {
+ "normal", new VariationCoefficientNormalDistribution
+ {
+ Mean = (RoundedDouble) 0.2,
+ CoefficientOfVariation = (RoundedDouble) 0.1
+ }
+ },
+ {
+ "lognormal", new VariationCoefficientLogNormalDistribution
+ {
+ Mean = (RoundedDouble) 0.4,
+ CoefficientOfVariation = (RoundedDouble) 0.3
+ }
+ }
+ };
+
+ try
+ {
+ using (XmlWriter xmlWriter = CreateXmlWriter(filePath))
+ {
+ var writer = new SimpleCalculationConfigurationWriter();
+
+ // Call
+ writer.PublicWriteVariationCoefficientDistributions(distributions, xmlWriter);
+ }
+
+ // Assert
+ string actualXml = File.ReadAllText(filePath);
+ string expectedXml = File.ReadAllText(expectedXmlFilePath);
+
+ Assert.AreEqual(expectedXml, actualXml);
+ }
+ finally
+ {
+ File.Delete(filePath);
+ }
+ }
+
+ [Test]
public void WriteBreakWaterProperties_BreakWaterNull_NothingWrittenToFile()
{
// Setup
@@ -340,6 +445,12 @@
{
WriteDistributions(distributions, writer);
}
+ public void PublicWriteVariationCoefficientDistributions(
+ IDictionary distributions,
+ XmlWriter writer)
+ {
+ WriteVariationCoefficientDistributions(distributions, writer);
+ }
public void PublicWriteBreakWaterProperties(BreakWater breakWater, XmlWriter writer)
{
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/variationCoefficientDistributions.xml
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/variationCoefficientDistributions.xml (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CalculationConfigurationWriter/variationCoefficientDistributions.xml (revision 7ce0229b2d4293c464479e448b092c7f83eb94c3)
@@ -0,0 +1,10 @@
+
+
+ 0.2
+ 0.1
+
+
+ 0.4
+ 0.3
+
+
\ No newline at end of file