Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfiguration.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfiguration.cs (.../PipingCalculationConfiguration.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfiguration.cs (.../PipingCalculationConfiguration.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -77,26 +77,16 @@ public string StochasticSoilProfile { get; set; } /// - /// Gets the mean of the phreatic level exit of the piping calculation. + /// Gets the configuration of the phreatic level exit of the piping calculation. /// - public double? PhreaticLevelExitMean { get; set; } + public StochastConfiguration PhreaticLevelExit{ get; set; } /// - /// Gets the standard deviation of the phreatic level exit of the piping calculation. + /// Gets the configuration of the damping factor exit of the piping calculation. /// - public double? PhreaticLevelExitStandardDeviation { get; set; } + public StochastConfiguration DampingFactorExit { get; set; } /// - /// Gets the mean of the damping factor exit of the piping calculation. - /// - public double? DampingFactorExitMean { get; set; } - - /// - /// Gets the standard deviation of the damping factor exit of the piping calculation. - /// - public double? DampingFactorExitStandardDeviation { get; set; } - - /// /// Gets or sets the name of the piping calculation. /// /// Thrown when is null. @@ -115,71 +105,5 @@ name = value; } } - - /// - /// Class holding the various construction parameters for . - /// - public class ConstructionProperties - { - /// - /// Gets or sets the value for . - /// - public string Name { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? AssessmentLevel { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public string HydraulicBoundaryLocation { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public string SurfaceLine { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? EntryPointL { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? ExitPointL { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public string StochasticSoilModel { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public string StochasticSoilProfile { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? PhreaticLevelExitMean { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? PhreaticLevelExitStandardDeviation { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? DampingFactorExitMean { internal get; set; } - - /// - /// Gets or sets the value for . - /// - public double? DampingFactorExitStandardDeviation { internal get; set; } - } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs (.../PipingCalculationConfigurationExporter.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs (.../PipingCalculationConfigurationExporter.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -23,14 +23,15 @@ using System.Collections.Generic; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.IO.Configurations.Export; +using Ringtoets.Common.IO.Configurations.Helpers; using Ringtoets.Piping.Data; namespace Ringtoets.Piping.IO.Configurations { /// /// Exports a piping calculation configuration and stores it as an XML file. /// - public class PipingCalculationConfigurationExporter : CalculationConfigurationExporter + public class PipingCalculationConfigurationExporter : SchemaCalculationConfigurationExporter { /// /// Creates a new instance of . @@ -40,5 +41,28 @@ /// Thrown when is null. /// Thrown when is invalid. public PipingCalculationConfigurationExporter(IEnumerable configuration, string filePath) : base(configuration, filePath) {} + + protected override PipingCalculationConfigurationWriter CreateWriter(string filePath) + { + return new PipingCalculationConfigurationWriter(filePath); + } + + protected override PipingCalculationConfiguration ToConfiguration(PipingCalculation calculation) + { + PipingInput input = calculation.InputParameters; + + return new PipingCalculationConfiguration(calculation.Name) + { + HydraulicBoundaryLocation = input.HydraulicBoundaryLocation?.Name, + AssessmentLevel = input.HydraulicBoundaryLocation == null ? input.AssessmentLevel : (double?)null, + DampingFactorExit = input.DampingFactorExit.ToStochastConfiguration(), + PhreaticLevelExit = input.PhreaticLevelExit.ToStochastConfiguration(), + SurfaceLine = input.SurfaceLine?.Name, + EntryPointL = input.EntryPointL, + ExitPointL = input.ExitPointL, + StochasticSoilModel = input.StochasticSoilModel?.Name, + StochasticSoilProfile = input.StochasticSoilProfile?.SoilProfile.Name + }; + } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationImporter.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationImporter.cs (.../PipingCalculationConfigurationImporter.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationImporter.cs (.../PipingCalculationConfigurationImporter.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -311,34 +311,26 @@ private bool TryReadDampingFactorExit(PipingCalculationConfiguration calculationConfiguration, PipingCalculationScenario pipingCalculation) { - var distribution = (LogNormalDistribution) pipingCalculation.InputParameters.DampingFactorExit.Clone(); - - if (!distribution.TrySetDistributionProperties(calculationConfiguration.DampingFactorExitMean, - calculationConfiguration.DampingFactorExitStandardDeviation, - PipingCalculationConfigurationSchemaIdentifiers.DampingFactorExitStochastName, - pipingCalculation.Name)) - { - return false; - } - - pipingCalculation.InputParameters.DampingFactorExit = distribution; - return true; + return ConfigurationImportHelper.TrySetStandardDeviationStochast( + PipingCalculationConfigurationSchemaIdentifiers.DampingFactorExitStochastName, + pipingCalculation.Name, + pipingCalculation.InputParameters, + calculationConfiguration.DampingFactorExit, + i => i.DampingFactorExit, + (i,s) => i.DampingFactorExit = s, + Log); } private bool TryReadPhreaticLevelExit(PipingCalculationConfiguration calculationConfiguration, PipingCalculationScenario pipingCalculation) { - var distribution = (NormalDistribution) pipingCalculation.InputParameters.PhreaticLevelExit.Clone(); - - if (!distribution.TrySetDistributionProperties(calculationConfiguration.PhreaticLevelExitMean, - calculationConfiguration.PhreaticLevelExitStandardDeviation, - PipingCalculationConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName, - pipingCalculation.Name)) - { - return false; - } - - pipingCalculation.InputParameters.PhreaticLevelExit = distribution; - return true; + return ConfigurationImportHelper.TrySetStandardDeviationStochast( + PipingCalculationConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName, + pipingCalculation.Name, + pipingCalculation.InputParameters, + calculationConfiguration.PhreaticLevelExit, + i => i.PhreaticLevelExit, + (i, s) => i.PhreaticLevelExit = s, + Log); } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationReader.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationReader.cs (.../PipingCalculationConfigurationReader.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationReader.cs (.../PipingCalculationConfigurationReader.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -76,23 +76,11 @@ EntryPointL = calculationElement.GetDoubleValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.EntryPointLElement), ExitPointL = calculationElement.GetDoubleValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.ExitPointLElement), StochasticSoilModel = calculationElement.GetStringValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilModelElement), - StochasticSoilProfile = calculationElement.GetStringValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilProfileElement) + StochasticSoilProfile = calculationElement.GetStringValueFromDescendantElement(PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilProfileElement), + PhreaticLevelExit = calculationElement.GetStochastConfiguration(PipingCalculationConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName), + DampingFactorExit = calculationElement.GetStochastConfiguration(PipingCalculationConfigurationSchemaIdentifiers.DampingFactorExitStochastName) }; - XElement phreaticLevelExitElement = calculationElement.GetStochastElement(PipingCalculationConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName); - if (phreaticLevelExitElement != null) - { - calculation.PhreaticLevelExitMean = phreaticLevelExitElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.MeanElement); - calculation.PhreaticLevelExitStandardDeviation = phreaticLevelExitElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.StandardDeviationElement); - } - - XElement dampingFactorExitElement = calculationElement.GetStochastElement(PipingCalculationConfigurationSchemaIdentifiers.DampingFactorExitStochastName); - if (dampingFactorExitElement != null) - { - calculation.DampingFactorExitMean = dampingFactorExitElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.MeanElement); - calculation.DampingFactorExitStandardDeviation = dampingFactorExitElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.StandardDeviationElement); - } - return calculation; } } Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationWriter.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationWriter.cs (.../PipingCalculationConfigurationWriter.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationWriter.cs (.../PipingCalculationConfigurationWriter.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using System.Xml; using Ringtoets.Common.Data.Probabilistics; @@ -31,66 +32,80 @@ /// /// Writer for writing a piping calculation configuration to XML. /// - public class PipingCalculationConfigurationWriter : CalculationConfigurationWriter + public class PipingCalculationConfigurationWriter : SchemaCalculationConfigurationWriter { - protected override void WriteCalculation(PipingCalculation calculation, XmlWriter writer) + /// + /// Creates a new instance of . + /// + /// The path of the file to write to. + /// Thrown when is invalid. + /// A valid path: + /// + /// is not empty or null, + /// does not consist out of only whitespace characters, + /// does not contain an invalid character, + /// does not end with a directory or path separator (empty file name). + /// + public PipingCalculationConfigurationWriter(string filePath) : base(filePath) {} + + protected override void WriteCalculation(PipingCalculationConfiguration configuration, XmlWriter writer) { writer.WriteStartElement(ConfigurationSchemaIdentifiers.CalculationElement); - writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, calculation.Name); + writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, configuration.Name); - PipingInput calculationInputParameters = calculation.InputParameters; - - if (calculationInputParameters.UseAssessmentLevelManualInput) + if (configuration.AssessmentLevel.HasValue) { - writer.WriteElementString(PipingCalculationConfigurationSchemaIdentifiers.AssessmentLevelElement, - XmlConvert.ToString(calculationInputParameters.AssessmentLevel)); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.AssessmentLevelElement, + configuration.AssessmentLevel); } - else if (calculationInputParameters.HydraulicBoundaryLocation != null) + else { - writer.WriteElementString(ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, - calculationInputParameters.HydraulicBoundaryLocation.Name); + WriteElementWhenContentAvailable(writer, + ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, + configuration.HydraulicBoundaryLocation); } - if (calculationInputParameters.SurfaceLine != null) + if (configuration.SurfaceLine != null) { - writer.WriteElementString(PipingCalculationConfigurationSchemaIdentifiers.SurfaceLineElement, - calculationInputParameters.SurfaceLine.Name); - writer.WriteElementString(PipingCalculationConfigurationSchemaIdentifiers.EntryPointLElement, - XmlConvert.ToString(calculationInputParameters.EntryPointL)); - writer.WriteElementString(PipingCalculationConfigurationSchemaIdentifiers.ExitPointLElement, - XmlConvert.ToString(calculationInputParameters.ExitPointL)); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.SurfaceLineElement, + configuration.SurfaceLine); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.EntryPointLElement, + configuration.EntryPointL); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.ExitPointLElement, + configuration.ExitPointL); } - if (calculationInputParameters.StochasticSoilModel != null) + if (configuration.StochasticSoilModel != null) { - writer.WriteElementString(PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilModelElement, - calculationInputParameters.StochasticSoilModel.Name); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilModelElement, + configuration.StochasticSoilModel); - if (calculationInputParameters.StochasticSoilProfile?.SoilProfile != null) + if (configuration.StochasticSoilProfile != null) { - writer.WriteElementString(PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilProfileElement, - calculationInputParameters.StochasticSoilProfile.SoilProfile.Name); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilProfileElement, + configuration.StochasticSoilProfile); } } - WriteDistributions(CreateInputDistributions(calculationInputParameters), writer); + writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastsElement); + WriteDistributionWhenAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName, + configuration.PhreaticLevelExit); + + WriteDistributionWhenAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.DampingFactorExitStochastName, + configuration.DampingFactorExit); + writer.WriteEndElement(); - } - private static IDictionary CreateInputDistributions(PipingInput calculationInputParameters) - { - return new Dictionary - { - { - PipingCalculationConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName, - calculationInputParameters.PhreaticLevelExit - }, - { - PipingCalculationConfigurationSchemaIdentifiers.DampingFactorExitStochastName, - calculationInputParameters.DampingFactorExit - } - }; + writer.WriteEndElement(); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationExporterTest.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationExporterTest.cs (.../PipingCalculationConfigurationExporterTest.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationExporterTest.cs (.../PipingCalculationConfigurationExporterTest.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -19,6 +19,7 @@ // 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.Base.Data; using Core.Common.TestUtil; @@ -35,10 +36,11 @@ { [TestFixture] public class PipingCalculationConfigurationExporterTest - : CustomCalculationConfigurationExporterDesignGuidelinesTestFixture< + : CustomSchemaCalculationConfigurationExporterDesignGuidelinesTestFixture< PipingCalculationConfigurationExporter, PipingCalculationConfigurationWriter, - PipingCalculation> + PipingCalculation, + PipingCalculationConfiguration> { [Test] public void Export_ValidData_ReturnTrueAndWritesFile() @@ -95,5 +97,10 @@ { return PipingTestDataGenerator.GetPipingCalculation(); } + + protected override PipingCalculationConfigurationExporter CallConfigurationFilePathConstructor(IEnumerable calculations, string filePath) + { + return new PipingCalculationConfigurationExporter(calculations, filePath); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationReaderTest.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationReaderTest.cs (.../PipingCalculationConfigurationReaderTest.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationReaderTest.cs (.../PipingCalculationConfigurationReaderTest.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -183,10 +183,8 @@ Assert.IsNull(calculation.ExitPointL); Assert.IsNull(calculation.StochasticSoilModel); Assert.IsNull(calculation.StochasticSoilProfile); - Assert.IsNull(calculation.PhreaticLevelExitMean); - Assert.IsNull(calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNull(calculation.DampingFactorExitMean); - Assert.IsNull(calculation.DampingFactorExitStandardDeviation); + Assert.IsNull(calculation.PhreaticLevelExit); + Assert.IsNull(calculation.DampingFactorExit); } [Test] @@ -203,10 +201,8 @@ Assert.AreEqual(1, readConfigurationItems.Count); var calculation = (PipingCalculationConfiguration) readConfigurationItems[0]; - Assert.IsNull(calculation.PhreaticLevelExitMean); - Assert.IsNull(calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNull(calculation.DampingFactorExitMean); - Assert.IsNull(calculation.DampingFactorExitStandardDeviation); + Assert.IsNull(calculation.PhreaticLevelExit); + Assert.IsNull(calculation.DampingFactorExit); } [Test] @@ -226,10 +222,10 @@ Assert.IsNaN(calculation.AssessmentLevel); Assert.IsNaN(calculation.EntryPointL); Assert.IsNaN(calculation.ExitPointL); - Assert.IsNaN(calculation.PhreaticLevelExitMean); - Assert.IsNaN(calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNaN(calculation.DampingFactorExitMean); - Assert.IsNaN(calculation.DampingFactorExitStandardDeviation); + Assert.IsNaN(calculation.PhreaticLevelExit.Mean); + Assert.IsNaN(calculation.PhreaticLevelExit.StandardDeviation); + Assert.IsNaN(calculation.DampingFactorExit.Mean); + Assert.IsNaN(calculation.DampingFactorExit.StandardDeviation); } [Test] @@ -250,18 +246,18 @@ Assert.IsNotNull(calculation.AssessmentLevel); Assert.IsNotNull(calculation.EntryPointL); Assert.IsNotNull(calculation.ExitPointL); - Assert.IsNotNull(calculation.PhreaticLevelExitMean); - Assert.IsNotNull(calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNotNull(calculation.DampingFactorExitMean); - Assert.IsNotNull(calculation.DampingFactorExitStandardDeviation); + Assert.IsNotNull(calculation.PhreaticLevelExit.Mean); + Assert.IsNotNull(calculation.PhreaticLevelExit.StandardDeviation); + Assert.IsNotNull(calculation.DampingFactorExit.Mean); + Assert.IsNotNull(calculation.DampingFactorExit.StandardDeviation); Assert.IsTrue(double.IsNegativeInfinity(calculation.AssessmentLevel.Value)); Assert.IsTrue(double.IsNegativeInfinity(calculation.EntryPointL.Value)); Assert.IsTrue(double.IsPositiveInfinity(calculation.ExitPointL.Value)); - Assert.IsTrue(double.IsNegativeInfinity(calculation.PhreaticLevelExitMean.Value)); - Assert.IsTrue(double.IsPositiveInfinity(calculation.PhreaticLevelExitStandardDeviation.Value)); - Assert.IsTrue(double.IsPositiveInfinity(calculation.DampingFactorExitMean.Value)); - Assert.IsTrue(double.IsPositiveInfinity(calculation.DampingFactorExitStandardDeviation.Value)); + Assert.IsTrue(double.IsNegativeInfinity(calculation.PhreaticLevelExit.Mean.Value)); + Assert.IsTrue(double.IsPositiveInfinity(calculation.PhreaticLevelExit.StandardDeviation.Value)); + Assert.IsTrue(double.IsPositiveInfinity(calculation.DampingFactorExit.Mean.Value)); + Assert.IsTrue(double.IsPositiveInfinity(calculation.DampingFactorExit.StandardDeviation.Value)); } [Test] @@ -290,10 +286,10 @@ Assert.AreEqual(3.3, calculation.ExitPointL); Assert.AreEqual("Ondergrondmodel", calculation.StochasticSoilModel); Assert.AreEqual("Ondergrondschematisatie", calculation.StochasticSoilProfile); - Assert.AreEqual(4.4, calculation.PhreaticLevelExitMean); - Assert.AreEqual(5.5, calculation.PhreaticLevelExitStandardDeviation); - Assert.AreEqual(6.6, calculation.DampingFactorExitMean); - Assert.AreEqual(7.7, calculation.DampingFactorExitStandardDeviation); + Assert.AreEqual(4.4, calculation.PhreaticLevelExit.Mean); + Assert.AreEqual(5.5, calculation.PhreaticLevelExit.StandardDeviation); + Assert.AreEqual(6.6, calculation.DampingFactorExit.Mean); + Assert.AreEqual(7.7, calculation.DampingFactorExit.StandardDeviation); } [Test] @@ -322,10 +318,10 @@ Assert.AreEqual(3.3, calculation.ExitPointL); Assert.AreEqual("Ondergrondmodel", calculation.StochasticSoilModel); Assert.AreEqual("Ondergrondschematisatie", calculation.StochasticSoilProfile); - Assert.AreEqual(4.4, calculation.PhreaticLevelExitMean); - Assert.AreEqual(5.5, calculation.PhreaticLevelExitStandardDeviation); - Assert.AreEqual(6.6, calculation.DampingFactorExitMean); - Assert.AreEqual(7.7, calculation.DampingFactorExitStandardDeviation); + Assert.AreEqual(4.4, calculation.PhreaticLevelExit.Mean); + Assert.AreEqual(5.5, calculation.PhreaticLevelExit.StandardDeviation); + Assert.AreEqual(6.6, calculation.DampingFactorExit.Mean); + Assert.AreEqual(7.7, calculation.DampingFactorExit.StandardDeviation); } [Test] @@ -350,10 +346,9 @@ Assert.AreEqual(2.2, calculation.ExitPointL); Assert.IsNull(calculation.StochasticSoilModel); Assert.AreEqual("Ondergrondschematisatie", calculation.StochasticSoilProfile); - Assert.AreEqual(3.3, calculation.PhreaticLevelExitMean); - Assert.AreEqual(4.4, calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNull(calculation.DampingFactorExitMean); - Assert.IsNull(calculation.DampingFactorExitStandardDeviation); + Assert.AreEqual(3.3, calculation.PhreaticLevelExit.Mean); + Assert.AreEqual(4.4, calculation.PhreaticLevelExit.StandardDeviation); + Assert.IsNull(calculation.DampingFactorExit); } [Test] @@ -370,10 +365,10 @@ Assert.AreEqual(1, readConfigurationItems.Count); var calculation = (PipingCalculationConfiguration) readConfigurationItems[0]; - Assert.IsNull(calculation.PhreaticLevelExitMean); - Assert.AreEqual(0.1, calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNull(calculation.DampingFactorExitMean); - Assert.AreEqual(7.7, calculation.DampingFactorExitStandardDeviation); + Assert.IsNull(calculation.PhreaticLevelExit.Mean); + Assert.AreEqual(0.1, calculation.PhreaticLevelExit.StandardDeviation); + Assert.IsNull(calculation.DampingFactorExit.Mean); + Assert.AreEqual(7.7, calculation.DampingFactorExit.StandardDeviation); } [Test] @@ -390,10 +385,10 @@ Assert.AreEqual(1, readConfigurationItems.Count); var calculation = (PipingCalculationConfiguration) readConfigurationItems[0]; - Assert.AreEqual(0.0, calculation.PhreaticLevelExitMean); - Assert.IsNull(calculation.PhreaticLevelExitStandardDeviation); - Assert.AreEqual(6.6, calculation.DampingFactorExitMean); - Assert.IsNull(calculation.DampingFactorExitStandardDeviation); + Assert.AreEqual(0.0, calculation.PhreaticLevelExit.Mean); + Assert.IsNull(calculation.PhreaticLevelExit.StandardDeviation); + Assert.AreEqual(6.6, calculation.DampingFactorExit.Mean); + Assert.IsNull(calculation.DampingFactorExit.StandardDeviation); } [Test] @@ -410,10 +405,10 @@ Assert.AreEqual(1, readConfigurationItems.Count); var calculation = (PipingCalculationConfiguration) readConfigurationItems[0]; - Assert.IsNull(calculation.PhreaticLevelExitMean); - Assert.IsNull(calculation.PhreaticLevelExitStandardDeviation); - Assert.IsNull(calculation.DampingFactorExitMean); - Assert.IsNull(calculation.DampingFactorExitStandardDeviation); + Assert.IsNull(calculation.PhreaticLevelExit.Mean); + Assert.IsNull(calculation.PhreaticLevelExit.StandardDeviation); + Assert.IsNull(calculation.DampingFactorExit.Mean); + Assert.IsNull(calculation.DampingFactorExit.StandardDeviation); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationTest.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationTest.cs (.../PipingCalculationConfigurationTest.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationTest.cs (.../PipingCalculationConfigurationTest.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -43,7 +43,7 @@ public void Constructor_ConstructionPropertiesWithoutValues_PropertiesAreDefault() { // Setup - var name = "some name"; + const string name = "some name"; // Call var readPipingCalculation = new PipingCalculationConfiguration(name); @@ -58,10 +58,8 @@ Assert.IsNull(readPipingCalculation.ExitPointL); Assert.IsNull(readPipingCalculation.StochasticSoilModel); Assert.IsNull(readPipingCalculation.StochasticSoilProfile); - Assert.IsNull(readPipingCalculation.PhreaticLevelExitMean); - Assert.IsNull(readPipingCalculation.PhreaticLevelExitStandardDeviation); - Assert.IsNull(readPipingCalculation.DampingFactorExitMean); - Assert.IsNull(readPipingCalculation.DampingFactorExitStandardDeviation); + Assert.IsNull(readPipingCalculation.PhreaticLevelExit); + Assert.IsNull(readPipingCalculation.DampingFactorExit); } [Test] @@ -91,10 +89,16 @@ ExitPointL = exitPointL, StochasticSoilModel = stochasticSoilModel, StochasticSoilProfile = stochasticSoilProfile, - PhreaticLevelExitMean = phreaticLevelExitMean, - PhreaticLevelExitStandardDeviation = phreaticLevelExitStandardDeviation, - DampingFactorExitMean = dampingFactorExitMean, - DampingFactorExitStandardDeviation = dampingFactorExitStandardDeviation + PhreaticLevelExit = new StochastConfiguration + { + Mean = phreaticLevelExitMean, + StandardDeviation = phreaticLevelExitStandardDeviation, + }, + DampingFactorExit = new StochastConfiguration + { + Mean = dampingFactorExitMean, + StandardDeviation = dampingFactorExitStandardDeviation + } }; // Assert @@ -106,10 +110,10 @@ Assert.AreEqual(exitPointL, readPipingCalculation.ExitPointL); Assert.AreEqual(stochasticSoilModel, readPipingCalculation.StochasticSoilModel); Assert.AreEqual(stochasticSoilProfile, readPipingCalculation.StochasticSoilProfile); - Assert.AreEqual(phreaticLevelExitMean, readPipingCalculation.PhreaticLevelExitMean); - Assert.AreEqual(phreaticLevelExitStandardDeviation, readPipingCalculation.PhreaticLevelExitStandardDeviation); - Assert.AreEqual(dampingFactorExitMean, readPipingCalculation.DampingFactorExitMean); - Assert.AreEqual(dampingFactorExitStandardDeviation, readPipingCalculation.DampingFactorExitStandardDeviation); + Assert.AreEqual(phreaticLevelExitMean, readPipingCalculation.PhreaticLevelExit.Mean); + Assert.AreEqual(phreaticLevelExitStandardDeviation, readPipingCalculation.PhreaticLevelExit.StandardDeviation); + Assert.AreEqual(dampingFactorExitMean, readPipingCalculation.DampingFactorExit.Mean); + Assert.AreEqual(dampingFactorExitStandardDeviation, readPipingCalculation.DampingFactorExit.StandardDeviation); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs =================================================================== diff -u -r6df044b18d205d87d4f38a623cc6e29146d4e95e -r756064ca162892256021ac1616fe4680b2bba320 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs (.../PipingCalculationConfigurationWriterTest.cs) (revision 6df044b18d205d87d4f38a623cc6e29146d4e95e) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs (.../PipingCalculationConfigurationWriterTest.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) @@ -21,49 +21,87 @@ using System.Collections.Generic; using System.IO; -using Core.Common.Base.Data; +using Core.Common.Base.Geometry; using Core.Common.TestUtil; using NUnit.Framework; -using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.TestUtil; -using Ringtoets.Piping.Data; -using Ringtoets.Piping.Integration.TestUtils; using Ringtoets.Piping.IO.Configurations; using Ringtoets.Piping.Primitives; namespace Ringtoets.Piping.IO.Test.Configurations { [TestFixture] public class PipingCalculationConfigurationWriterTest - : CustomCalculationConfigurationWriterDesignGuidelinesTestFixture< + : CustomSchemaCalculationConfigurationWriterDesignGuidelinesTestFixture< PipingCalculationConfigurationWriter, - PipingCalculation> + PipingCalculationConfiguration> { private static IEnumerable Calculations { get { + + var calculation = CreateFullCalculationConfiguration(); + calculation.HydraulicBoundaryLocation = null; + calculation.EntryPointL = 0.0; + calculation.ExitPointL = 10; yield return new TestCaseData("calculationWithoutHydraulicLocation", - PipingTestDataGenerator.GetPipingCalculationWithoutHydraulicLocationAndAssessmentLevel()) + calculation) .SetName("calculationWithoutHydraulicLocation"); + + calculation = CreateFullCalculationConfiguration(); + calculation.AssessmentLevel = 3.0; + calculation.EntryPointL = 0.0; + calculation.ExitPointL = 10; yield return new TestCaseData("calculationWithAssessmentLevel", - PipingTestDataGenerator.GetPipingCalculationWithAssessmentLevel()) + calculation) .SetName("calculationWithAssessmentLevel"); + + calculation = CreateFullCalculationConfiguration(); + calculation.SurfaceLine = null; yield return new TestCaseData("calculationWithoutSurfaceLine", - PipingTestDataGenerator.GetPipingCalculationWithoutSurfaceLine()) + calculation) .SetName("calculationWithoutSurfaceLine"); + + calculation = CreateFullCalculationConfiguration(); + calculation.StochasticSoilModel = null; + calculation.EntryPointL = 0.0; + calculation.ExitPointL = 10; yield return new TestCaseData("calculationWithoutSoilModel", - PipingTestDataGenerator.GetPipingCalculationWithoutSoilModel()) + calculation) .SetName("calculationWithoutSoilModel"); + + calculation = CreateFullCalculationConfiguration(); + calculation.StochasticSoilProfile = null; + calculation.EntryPointL = 0.0; + calculation.ExitPointL = 10; yield return new TestCaseData("calculationWithoutSoilProfile", - PipingTestDataGenerator.GetPipingCalculationWithoutSoilProfile()) + calculation) .SetName("calculationWithoutSoilProfile"); + + calculation = CreateFullCalculationConfiguration(); + calculation.AssessmentLevel = double.NaN; + calculation.EntryPointL = double.NaN; + calculation.ExitPointL = double.NaN; + calculation.PhreaticLevelExit.Mean = double.NaN; + calculation.PhreaticLevelExit.StandardDeviation = double.NaN; + calculation.DampingFactorExit.Mean = double.NaN; + calculation.DampingFactorExit.StandardDeviation = double.NaN; yield return new TestCaseData("calculationWithNaNs", - PipingTestDataGenerator.GetPipingCalculationWithNaNs()) + calculation) .SetName("calculationWithNaNs"); + + calculation = CreateFullCalculationConfiguration(); + calculation.AssessmentLevel = double.NegativeInfinity; + calculation.EntryPointL = double.NegativeInfinity; + calculation.ExitPointL = double.PositiveInfinity; + calculation.PhreaticLevelExit.Mean = double.NegativeInfinity; + calculation.PhreaticLevelExit.StandardDeviation = double.PositiveInfinity; + calculation.DampingFactorExit.Mean = double.PositiveInfinity; + calculation.DampingFactorExit.StandardDeviation = double.PositiveInfinity; yield return new TestCaseData("calculationWithInfinities", - PipingTestDataGenerator.GetPipingCalculationWithInfinities()) + calculation) .SetName("calculationWithInfinities"); } } @@ -74,49 +112,46 @@ // Setup string filePath = TestHelper.GetScratchPadPath("test.xml"); - PipingCalculation calculation = PipingTestDataGenerator.GetPipingCalculation(); - calculation.InputParameters.EntryPointL = (RoundedDouble) 0.1; - calculation.InputParameters.ExitPointL = (RoundedDouble) 0.2; - - PipingCalculation calculation2 = PipingTestDataGenerator.GetPipingCalculation(); - calculation2.Name = "PK001_0002 W1-6_4_1D1"; - calculation2.InputParameters.HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "PUNT_SCH_17", 0, 0); - calculation2.InputParameters.SurfaceLine.Name = "PK001_0002"; - calculation2.InputParameters.EntryPointL = (RoundedDouble) 0.3; - calculation2.InputParameters.ExitPointL = (RoundedDouble) 0.4; - calculation2.InputParameters.StochasticSoilModel = new StochasticSoilModel(1, "PK001_0002_Piping", string.Empty); - calculation2.InputParameters.StochasticSoilProfile = new StochasticSoilProfile(0, SoilProfileType.SoilProfile1D, 0) + var surfaceline = new RingtoetsPipingSurfaceLine { - SoilProfile = new PipingSoilProfile("W1-6_4_1D1", 0, new[] - { - new PipingSoilLayer(0) - }, SoilProfileType.SoilProfile1D, 0) + ReferenceLineIntersectionWorldPoint = new Point2D(0, 5), + Name = "PK001_0001" }; + surfaceline.SetGeometry(new[] + { + new Point3D(0, 0, 0), + new Point3D(0, 10, 0) + }); - var calculationGroup2 = new CalculationGroup("PK001_0002", false) + var calculation = CreateFullCalculationConfiguration(); + + var calculation2 = CreateFullCalculationConfiguration(); + calculation2.Name = "PK001_0002 W1-6_4_1D1"; + calculation2.HydraulicBoundaryLocation = "PUNT_SCH_17"; + calculation2.SurfaceLine = "PK001_0002"; + calculation2.StochasticSoilModel = "PK001_0002_Piping"; + calculation2.StochasticSoilProfile = "W1-6_4_1D1"; + calculation2.EntryPointL = 0.3; + calculation2.ExitPointL = 0.4; + + var calculationGroup2 = new CalculationGroupConfiguration("PK001_0002", new IConfigurationItem[] { - Children = - { - calculation2 - } - }; + calculation2 + }); - var calculationGroup = new CalculationGroup("PK001_0001", false) + var calculationGroup = new CalculationGroupConfiguration("PK001_0001", new IConfigurationItem[] { - Children = - { - calculation, - calculationGroup2 - } - }; + calculation, + calculationGroup2 + }); try { // Call - new PipingCalculationConfigurationWriter().Write(new[] + new PipingCalculationConfigurationWriter(filePath).Write(new[] { calculationGroup - }, filePath); + }); // Assert Assert.IsTrue(File.Exists(filePath)); @@ -135,20 +170,43 @@ } } + private static PipingCalculationConfiguration CreateFullCalculationConfiguration() + { + return new PipingCalculationConfiguration("PK001_0001 W1-6_0_1D1") + { + HydraulicBoundaryLocation = "PUNT_KAT_18", + SurfaceLine = "PK001_0001", + StochasticSoilModel = "PK001_0001_Piping", + StochasticSoilProfile = "W1-6_0_1D1", + EntryPointL = 0.1, + ExitPointL = 0.2, + PhreaticLevelExit = new StochastConfiguration + { + Mean = 0, + StandardDeviation = 0.1 + }, + DampingFactorExit = new StochastConfiguration + { + Mean = 0.7, + StandardDeviation = 0.1 + } + }; + } + [Test] [TestCaseSource(nameof(Calculations))] - public void Write_ValidCalculation_ValidFile(string expectedFileName, PipingCalculation calculation) + public void Write_ValidCalculation_ValidFile(string expectedFileName, PipingCalculationConfiguration calculation) { // Setup string filePath = TestHelper.GetScratchPadPath("test.xml"); try { // Call - new PipingCalculationConfigurationWriter().Write(new[] + new PipingCalculationConfigurationWriter(filePath).Write(new[] { calculation - }, filePath); + }); // Assert Assert.IsTrue(File.Exists(filePath)); @@ -164,5 +222,10 @@ File.Delete(filePath); } } + + protected override PipingCalculationConfigurationWriter CreateWriterInstance(string filePath) + { + return new PipingCalculationConfigurationWriter(filePath); + } } } \ No newline at end of file