Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfiguration.cs =================================================================== diff -u -rb1fd20384e0835b604bb68d94e16e8ead46ed93e -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfiguration.cs (.../GrassCoverErosionInwardsCalculationConfiguration.cs) (revision b1fd20384e0835b604bb68d94e16e8ead46ed93e) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfiguration.cs (.../GrassCoverErosionInwardsCalculationConfiguration.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -52,7 +52,7 @@ /// /// Gets the Id of the dike profile of the read grass cover erosion inwards calculation. /// - public string DikeProfileId { get; set; } + public string DikeProfile { get; set; } /// /// Gets the orientation of the grass cover erosion inwards calculation. Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationExporter.cs =================================================================== diff -u -r237b9031d74382e26141395ff845d5e43f44981d -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationExporter.cs (.../GrassCoverErosionInwardsCalculationConfigurationExporter.cs) (revision 237b9031d74382e26141395ff845d5e43f44981d) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationExporter.cs (.../GrassCoverErosionInwardsCalculationConfigurationExporter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -22,16 +22,23 @@ using System; using System.Collections.Generic; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.DikeProfiles; +using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.Configurations.Export; +using Ringtoets.Common.IO.Configurations.Helpers; using Ringtoets.GrassCoverErosionInwards.Data; +using Ringtoets.GrassCoverErosionInwards.IO.Configurations.Helpers; namespace Ringtoets.GrassCoverErosionInwards.IO.Configurations { /// /// Exports a grass cover erosion inwards calculation configuration and stores it as an XML file. /// public class GrassCoverErosionInwardsCalculationConfigurationExporter - : CalculationConfigurationExporter + : SchemaCalculationConfigurationExporter< + GrassCoverErosionInwardsCalculationConfigurationWriter, + GrassCoverErosionInwardsCalculation, + GrassCoverErosionInwardsCalculationConfiguration> { /// /// Creates a new instance of . @@ -42,5 +49,53 @@ /// Thrown when is invalid. public GrassCoverErosionInwardsCalculationConfigurationExporter(IEnumerable configuration, string filePath) : base(configuration, filePath) {} + + protected override GrassCoverErosionInwardsCalculationConfigurationWriter CreateWriter(string filePath) + { + return new GrassCoverErosionInwardsCalculationConfigurationWriter(filePath); + } + + protected override GrassCoverErosionInwardsCalculationConfiguration ToConfiguration(GrassCoverErosionInwardsCalculation calculation) + { + GrassCoverErosionInwardsInput input = calculation.InputParameters; + var configuration = new GrassCoverErosionInwardsCalculationConfiguration(calculation.Name); + + configuration.HydraulicBoundaryLocation = input.HydraulicBoundaryLocation?.Name; + + if (input.DikeProfile != null) + { + configuration.DikeProfile = input.DikeProfile.Id; + configuration.DikeHeight = input.DikeHeight; + configuration.Orientation = input.Orientation; + + configuration.WaveReduction = new WaveReductionConfiguration + { + UseForeshoreProfile = input.UseForeshore, + UseBreakWater = input.UseBreakWater, + BreakWaterHeight = input.BreakWater.Height + }; + + if (Enum.IsDefined(typeof(BreakWaterType), input.BreakWater.Type)) + { + configuration.WaveReduction.BreakWaterType = (ConfigurationBreakWaterType?) + new ConfigurationBreakWaterTypeConverter().ConvertFrom(input.BreakWater.Type); + } + } + + if (Enum.IsDefined(typeof(DikeHeightCalculationType), input.DikeHeightCalculationType)) + { + configuration.DikeHeightCalculationType = (ConfigurationHydraulicLoadsCalculationType?) + new ConfigurationHydraulicLoadsCalculationTypeConverter().ConvertFrom(input.DikeHeightCalculationType); + } + if (Enum.IsDefined(typeof(OvertoppingRateCalculationType), input.OvertoppingRateCalculationType)) + { + configuration.OvertoppingRateCalculationType = (ConfigurationHydraulicLoadsCalculationType?) + new ConfigurationHydraulicLoadsCalculationTypeConverter().ConvertFrom(input.OvertoppingRateCalculationType); + } + + configuration.CriticalFlowRate = input.CriticalFlowRate.ToStochastConfiguration(); + + return configuration; + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationImporter.cs =================================================================== diff -u -rb1fd20384e0835b604bb68d94e16e8ead46ed93e -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationImporter.cs (.../GrassCoverErosionInwardsCalculationConfigurationImporter.cs) (revision b1fd20384e0835b604bb68d94e16e8ead46ed93e) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationImporter.cs (.../GrassCoverErosionInwardsCalculationConfigurationImporter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -105,7 +105,7 @@ if (TryReadCriticalWaveReduction(calculationConfiguration, calculation) && TryReadHydraulicBoundaryLocation(calculationConfiguration.HydraulicBoundaryLocation, calculation) - && TryReadDikeProfile(calculationConfiguration.DikeProfileId, calculation) + && TryReadDikeProfile(calculationConfiguration.DikeProfile, calculation) && TryReadOrientation(calculationConfiguration, calculation) && TryReadDikeHeight(calculationConfiguration, calculation) && ValidateWaveReduction(calculationConfiguration, calculation)) @@ -286,7 +286,7 @@ { Log.LogCalculationConversionError(string.Format( Resources.GrassCoverErosionInwardsCalculationConfigurationImporter_ValidateWaveReduction_DikeProfile_0_has_no_geometry_and_cannot_be_used, - calculationConfiguration.DikeProfileId), + calculationConfiguration.DikeProfile), calculation.Name); return false; } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationReader.cs =================================================================== diff -u -rb1fd20384e0835b604bb68d94e16e8ead46ed93e -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationReader.cs (.../GrassCoverErosionInwardsCalculationConfigurationReader.cs) (revision b1fd20384e0835b604bb68d94e16e8ead46ed93e) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationReader.cs (.../GrassCoverErosionInwardsCalculationConfigurationReader.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -85,7 +85,7 @@ var configuration = new GrassCoverErosionInwardsCalculationConfiguration(calculationElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute).Value) { HydraulicBoundaryLocation = calculationElement.GetStringValueFromDescendantElement(ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement), - DikeProfileId = calculationElement.GetStringValueFromDescendantElement(GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeProfileElement), + DikeProfile = calculationElement.GetStringValueFromDescendantElement(GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeProfileElement), Orientation = calculationElement.GetDoubleValueFromDescendantElement(ConfigurationSchemaIdentifiers.Orientation), DikeHeight = calculationElement.GetDoubleValueFromDescendantElement(GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightElement), DikeHeightCalculationType = (ConfigurationHydraulicLoadsCalculationType?) calculationElement.GetConvertedValueFromDescendantStringElement( Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriter.cs =================================================================== diff -u -r8336ede0837d35257e8b85c3b0090b0774342d90 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriter.cs (.../GrassCoverErosionInwardsCalculationConfigurationWriter.cs) (revision 8336ede0837d35257e8b85c3b0090b0774342d90) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriter.cs (.../GrassCoverErosionInwardsCalculationConfigurationWriter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -19,135 +19,93 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; +using System; using System.Xml; -using Ringtoets.Common.Data.Probabilistics; using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.Configurations.Export; -using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionInwards.IO.Configurations.Helpers; namespace Ringtoets.GrassCoverErosionInwards.IO.Configurations { /// /// Writer for writing a grass cover erosion inwards calculation configuration to XML. /// - public class GrassCoverErosionInwardsCalculationConfigurationWriter : CalculationConfigurationWriter + public class GrassCoverErosionInwardsCalculationConfigurationWriter : SchemaCalculationConfigurationWriter { - protected override void WriteCalculation(GrassCoverErosionInwardsCalculation 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 GrassCoverErosionInwardsCalculationConfigurationWriter(string filePath) : base(filePath) {} + + protected override void WriteCalculation(GrassCoverErosionInwardsCalculationConfiguration configuration, XmlWriter writer) { writer.WriteStartElement(ConfigurationSchemaIdentifiers.CalculationElement); - writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, calculation.Name); + writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, configuration.Name); - GrassCoverErosionInwardsInput input = calculation.InputParameters; + WriteElementWhenContentAvailable( + writer, + ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, + configuration.HydraulicBoundaryLocation); - WriteHydraulicBoundaryLocation(input, writer); + WriteElementWhenContentAvailable( + writer, + GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeProfileElement, + configuration.DikeProfile); + WriteElementWhenContentAvailable( + writer, + ConfigurationSchemaIdentifiers.Orientation, + configuration.Orientation); + WriteElementWhenContentAvailable( + writer, + GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightElement, + configuration.DikeHeight); - WriteDikeProfileId(input, writer); - - WriteOrientation(input, writer); - - WriteDikeHeight(input, writer); - - writer.WriteElementString( + WriteConfigurationLoadSchematizationTypeWhenAvailable( + writer, GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightCalculationTypeElement, - HydraulicLoadsCalculationTypeAsXmlString((ConfigurationHydraulicLoadsCalculationType) input.DikeHeightCalculationType)); + configuration.DikeHeightCalculationType); - writer.WriteElementString( + WriteConfigurationLoadSchematizationTypeWhenAvailable( + writer, GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.OvertoppingRateCalculationTypeElement, - HydraulicLoadsCalculationTypeAsXmlString((ConfigurationHydraulicLoadsCalculationType) input.OvertoppingRateCalculationType)); + configuration.OvertoppingRateCalculationType); - WriteWaveReduction(input, writer); + WriteWaveReductionWhenAvailable(writer, configuration.WaveReduction); - WriteDistributions(CreateInputDistributions(input), writer); + writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastsElement); + WriteDistributionWhenAvailable( + writer, + GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.CriticalFlowRateStochastName, + configuration.CriticalFlowRate); + writer.WriteEndElement(); - } - private static void WriteHydraulicBoundaryLocation(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.HydraulicBoundaryLocation == null) - { - return; - } - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, - input.HydraulicBoundaryLocation.Name); + writer.WriteEndElement(); } - private static void WriteDikeProfileId(GrassCoverErosionInwardsInput input, XmlWriter writer) + private static void WriteConfigurationLoadSchematizationTypeWhenAvailable( + XmlWriter writer, + string elementName, + ConfigurationHydraulicLoadsCalculationType? configuration) { - if (input.DikeProfile == null) + if (!configuration.HasValue) { return; } - writer.WriteElementString( - GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeProfileElement, - input.DikeProfile.Id); + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + writer.WriteElementString(elementName, + converter.ConvertToInvariantString(configuration.Value)); } - - private static void WriteOrientation(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.DikeProfile == null) - { - return; - } - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.Orientation, - XmlConvert.ToString(input.Orientation)); - } - - private static void WriteDikeHeight(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.DikeProfile == null) - { - return; - } - - writer.WriteElementString( - GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightElement, - XmlConvert.ToString(input.DikeHeight)); - } - - private static string HydraulicLoadsCalculationTypeAsXmlString(ConfigurationHydraulicLoadsCalculationType type) - { - return new ConfigurationHydraulicLoadsCalculationTypeConverter().ConvertToInvariantString(type); - } - - private static void WriteWaveReduction(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.DikeProfile == null) - { - return; - } - - writer.WriteStartElement(ConfigurationSchemaIdentifiers.WaveReduction); - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.UseBreakWater, - XmlConvert.ToString(input.UseBreakWater)); - - WriteBreakWaterProperties(input.BreakWater, writer); - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.UseForeshore, - XmlConvert.ToString(input.UseForeshore)); - - writer.WriteEndElement(); - } - - private static IDictionary CreateInputDistributions(GrassCoverErosionInwardsInput calculationInputParameters) - { - return new Dictionary - { - { - GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.CriticalFlowRateStochastName, - calculationInputParameters.CriticalFlowRate - } - }; - } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/Helpers/ConfigurationHydraulicLoadsCalculationTypeConverter.cs =================================================================== diff -u -r8336ede0837d35257e8b85c3b0090b0774342d90 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/Helpers/ConfigurationHydraulicLoadsCalculationTypeConverter.cs (.../ConfigurationHydraulicLoadsCalculationTypeConverter.cs) (revision 8336ede0837d35257e8b85c3b0090b0774342d90) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/Helpers/ConfigurationHydraulicLoadsCalculationTypeConverter.cs (.../ConfigurationHydraulicLoadsCalculationTypeConverter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -22,6 +22,7 @@ using System; using System.ComponentModel; using System.Globalization; +using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionInwards.IO.Properties; namespace Ringtoets.GrassCoverErosionInwards.IO.Configurations.Helpers @@ -31,11 +32,47 @@ /// public class ConfigurationHydraulicLoadsCalculationTypeConverter : TypeConverter { + public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) + { + return destinationType == typeof(DikeHeightCalculationType) + || destinationType == typeof(OvertoppingRateCalculationType) + || base.CanConvertTo(context, destinationType); + } + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { + var readHydraulicLoadsCalculationType = (ConfigurationHydraulicLoadsCalculationType) value; + + if (destinationType == typeof(DikeHeightCalculationType)) + { + switch (readHydraulicLoadsCalculationType) + { + case ConfigurationHydraulicLoadsCalculationType.NoCalculation: + return DikeHeightCalculationType.NoCalculation; + case ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm: + return DikeHeightCalculationType.CalculateByAssessmentSectionNorm; + case ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability: + return DikeHeightCalculationType.CalculateByProfileSpecificRequiredProbability; + default: + throw new NotSupportedException(); + } + } + if (destinationType == typeof(OvertoppingRateCalculationType)) + { + switch (readHydraulicLoadsCalculationType) + { + case ConfigurationHydraulicLoadsCalculationType.NoCalculation: + return OvertoppingRateCalculationType.NoCalculation; + case ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm: + return OvertoppingRateCalculationType.CalculateByAssessmentSectionNorm; + case ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability: + return OvertoppingRateCalculationType.CalculateByProfileSpecificRequiredProbability; + default: + throw new NotSupportedException(); + } + } if (destinationType == typeof(string)) { - var readHydraulicLoadsCalculationType = (ConfigurationHydraulicLoadsCalculationType) value; switch (readHydraulicLoadsCalculationType) { case ConfigurationHydraulicLoadsCalculationType.NoCalculation: @@ -53,15 +90,42 @@ public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { - if (sourceType == typeof(string)) - { - return true; - } - return base.CanConvertFrom(context, sourceType); + return sourceType == typeof(string) + || sourceType == typeof(DikeHeightCalculationType) + || sourceType == typeof(OvertoppingRateCalculationType) + || base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { + if (value is DikeHeightCalculationType) + { + switch ((DikeHeightCalculationType) value) + { + case DikeHeightCalculationType.NoCalculation: + return ConfigurationHydraulicLoadsCalculationType.NoCalculation; + case DikeHeightCalculationType.CalculateByAssessmentSectionNorm: + return ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm; + case DikeHeightCalculationType.CalculateByProfileSpecificRequiredProbability: + return ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability; + default: + throw new NotSupportedException(); + } + } + if (value is OvertoppingRateCalculationType) + { + switch ((OvertoppingRateCalculationType) value) + { + case OvertoppingRateCalculationType.NoCalculation: + return ConfigurationHydraulicLoadsCalculationType.NoCalculation; + case OvertoppingRateCalculationType.CalculateByAssessmentSectionNorm: + return ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm; + case OvertoppingRateCalculationType.CalculateByProfileSpecificRequiredProbability: + return ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability; + default: + throw new NotSupportedException(); + } + } var text = value as string; if (text != null) { Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationExporterTest.cs =================================================================== diff -u -r237b9031d74382e26141395ff845d5e43f44981d -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationExporterTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationExporterTest.cs) (revision 237b9031d74382e26141395ff845d5e43f44981d) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationExporterTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationExporterTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -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.TestUtil; using NUnit.Framework; @@ -31,10 +32,11 @@ { [TestFixture] public class GrassCoverErosionInwardsCalculationConfigurationExporterTest - : CustomCalculationConfigurationExporterDesignGuidelinesTestFixture< + : CustomSchemaCalculationConfigurationExporterDesignGuidelinesTestFixture< GrassCoverErosionInwardsCalculationConfigurationExporter, GrassCoverErosionInwardsCalculationConfigurationWriter, - GrassCoverErosionInwardsCalculation> + GrassCoverErosionInwardsCalculation, + GrassCoverErosionInwardsCalculationConfiguration> { [Test] public void Export_ValidData_ReturnTrueAndWritesFile() @@ -81,5 +83,10 @@ { return new GrassCoverErosionInwardsCalculation(); } + + protected override GrassCoverErosionInwardsCalculationConfigurationExporter CallConfigurationFilePathConstructor(IEnumerable calculations, string filePath) + { + return new GrassCoverErosionInwardsCalculationConfigurationExporter(calculations, filePath); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationReaderTest.cs =================================================================== diff -u -rb1fd20384e0835b604bb68d94e16e8ead46ed93e -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationReaderTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationReaderTest.cs) (revision b1fd20384e0835b604bb68d94e16e8ead46ed93e) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationReaderTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationReaderTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -218,7 +218,7 @@ Assert.IsNotNull(calculation); Assert.AreEqual("Calculation", calculation.Name); Assert.IsNull(calculation.HydraulicBoundaryLocation); - Assert.IsNull(calculation.DikeProfileId); + Assert.IsNull(calculation.DikeProfile); Assert.IsNull(calculation.Orientation); Assert.IsNull(calculation.DikeHeight); Assert.IsNull(calculation.DikeHeightCalculationType); @@ -317,7 +317,7 @@ Assert.IsNotNull(calculation); Assert.AreEqual("Berekening 1", calculation.Name); Assert.AreEqual("Some_hydraulic_boundary_location", calculation.HydraulicBoundaryLocation); - Assert.AreEqual("some_dike_profile", calculation.DikeProfileId); + Assert.AreEqual("some_dike_profile", calculation.DikeProfile); Assert.AreEqual(67.1, calculation.Orientation); Assert.AreEqual(3.45, calculation.DikeHeight); Assert.AreEqual(ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm, calculation.DikeHeightCalculationType); @@ -347,7 +347,7 @@ Assert.IsNotNull(calculation); Assert.AreEqual("Partial calculation 2", calculation.Name); Assert.IsNull(calculation.HydraulicBoundaryLocation); - Assert.AreEqual("id_of_dikeprofile", calculation.DikeProfileId); + Assert.AreEqual("id_of_dikeprofile", calculation.DikeProfile); Assert.IsNull(calculation.Orientation); Assert.AreEqual(-1.2, calculation.DikeHeight); Assert.IsNull(calculation.DikeHeightCalculationType); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationTest.cs =================================================================== diff -u -rb1fd20384e0835b604bb68d94e16e8ead46ed93e -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationTest.cs) (revision b1fd20384e0835b604bb68d94e16e8ead46ed93e) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -52,7 +52,7 @@ Assert.IsInstanceOf(readCalculation); Assert.AreEqual(name, readCalculation.Name); Assert.IsNull(readCalculation.HydraulicBoundaryLocation); - Assert.IsNull(readCalculation.DikeProfileId); + Assert.IsNull(readCalculation.DikeProfile); Assert.IsNull(readCalculation.Orientation); Assert.IsNull(readCalculation.DikeHeight); Assert.IsNull(readCalculation.DikeHeightCalculationType); @@ -84,7 +84,7 @@ { Name = calculationName, HydraulicBoundaryLocation = hydraulicBoundaryLocationName, - DikeProfileId = dikeProfileId, + DikeProfile = dikeProfileId, Orientation = orientation, DikeHeight = dikeHeight, DikeHeightCalculationType = dikeHeightCalculationType, @@ -106,7 +106,7 @@ // Assert Assert.AreEqual(calculationName, readCalculation.Name); Assert.AreEqual(hydraulicBoundaryLocationName, readCalculation.HydraulicBoundaryLocation); - Assert.AreEqual(dikeProfileId, readCalculation.DikeProfileId); + Assert.AreEqual(dikeProfileId, readCalculation.DikeProfile); Assert.AreEqual(orientation, readCalculation.Orientation); Assert.AreEqual(dikeHeight, readCalculation.DikeHeight); Assert.AreEqual(dikeHeightCalculationType, readCalculation.DikeHeightCalculationType); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriterTest.cs =================================================================== diff -u -r237b9031d74382e26141395ff845d5e43f44981d -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriterTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationWriterTest.cs) (revision 237b9031d74382e26141395ff845d5e43f44981d) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriterTest.cs (.../GrassCoverErosionInwardsCalculationConfigurationWriterTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -20,49 +20,42 @@ // All rights reserved. using System.IO; -using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; -using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.DikeProfiles; -using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.TestUtil; -using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionInwards.IO.Configurations; namespace Ringtoets.GrassCoverErosionInwards.IO.Test.Configurations { [TestFixture] public class GrassCoverErosionInwardsCalculationConfigurationWriterTest - : CustomCalculationConfigurationWriterDesignGuidelinesTestFixture< + : CustomSchemaCalculationConfigurationWriterDesignGuidelinesTestFixture< GrassCoverErosionInwardsCalculationConfigurationWriter, - GrassCoverErosionInwardsCalculation> + GrassCoverErosionInwardsCalculationConfiguration> { [Test] - public void WriteConfiguration_SparseCalculation_WritesSparseConfigurationToFile() + public void WriteConfiguration_SparseConfiguration_WritesSparseConfigurationToFile() { // Setup string filePath = TestHelper.GetScratchPadPath( - $"{nameof(WriteConfiguration_SparseCalculation_WritesSparseConfigurationToFile)}.xml"); + $"{nameof(WriteConfiguration_SparseConfiguration_WritesSparseConfigurationToFile)}.xml"); string expectedXmlFilePath = TestHelper.GetTestDataPath( TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, Path.Combine(nameof(GrassCoverErosionInwardsCalculationConfigurationWriter), "sparseConfiguration.xml")); - var calculation = new GrassCoverErosionInwardsCalculation - { - Name = "Berekening 1" - }; + var calculation = new GrassCoverErosionInwardsCalculationConfiguration("Berekening 1"); try { - var writer = new GrassCoverErosionInwardsCalculationConfigurationWriter(); + var writer = new GrassCoverErosionInwardsCalculationConfigurationWriter(filePath); // Call writer.Write(new[] { calculation - }, filePath); + }); // Assert string actualXml = File.ReadAllText(filePath); @@ -77,27 +70,27 @@ } [Test] - public void WriteConfiguration_CompleteCalculation_WritesCompleteConfigurationToFile() + public void WriteConfiguration_CompleteConfiguration_WritesCompleteConfigurationToFile() { // Setup string filePath = TestHelper.GetScratchPadPath( - $"{nameof(WriteConfiguration_CompleteCalculation_WritesCompleteConfigurationToFile)}.xml"); + $"{nameof(WriteConfiguration_CompleteConfiguration_WritesCompleteConfigurationToFile)}.xml"); string expectedXmlFilePath = TestHelper.GetTestDataPath( TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, Path.Combine(nameof(GrassCoverErosionInwardsCalculationConfigurationWriter), "completeConfiguration.xml")); - GrassCoverErosionInwardsCalculation calculation = CreateCompleteCalculation(); + GrassCoverErosionInwardsCalculationConfiguration calculation = CreateCompleteCalculation(); try { - var writer = new GrassCoverErosionInwardsCalculationConfigurationWriter(); + var writer = new GrassCoverErosionInwardsCalculationConfigurationWriter(filePath); // Call writer.Write(new[] { calculation - }, filePath); + }); // Assert string actualXml = File.ReadAllText(filePath); @@ -117,35 +110,28 @@ // Setup string filePath = TestHelper.GetScratchPadPath("test.xml"); - GrassCoverErosionInwardsCalculation calculation = CreateCompleteCalculation(); - var calculation2 = new GrassCoverErosionInwardsCalculation + GrassCoverErosionInwardsCalculationConfiguration calculation = CreateCompleteCalculation(); + var calculation2 = new GrassCoverErosionInwardsCalculationConfiguration("Berekening 2"); + var calculationGroup2 = new CalculationGroupConfiguration("Nested", new IConfigurationItem[] { - Name = "Berekening 2" - }; - var calculationGroup2 = new CalculationGroup("Nested", false) - { - Children = - { - calculation2 - } - }; + calculation2 + }); - var calculationGroup = new CalculationGroup("Testmap", false) + var calculationGroup = new CalculationGroupConfiguration("Testmap", new IConfigurationItem[] { - Children = - { - calculation, - calculationGroup2 - } - }; + calculation, + calculationGroup2 + }); try { + var writer = new GrassCoverErosionInwardsCalculationConfigurationWriter(filePath); + // Call - new GrassCoverErosionInwardsCalculationConfigurationWriter().Write(new[] + writer.Write(new[] { calculationGroup - }, filePath); + }); // Assert Assert.IsTrue(File.Exists(filePath)); @@ -164,30 +150,34 @@ } } - private static GrassCoverErosionInwardsCalculation CreateCompleteCalculation() + private static GrassCoverErosionInwardsCalculationConfiguration CreateCompleteCalculation() { - return new GrassCoverErosionInwardsCalculation + return new GrassCoverErosionInwardsCalculationConfiguration("Berekening 1") { - Name = "Berekening 1", - InputParameters = + HydraulicBoundaryLocation = "Locatie1", + DikeProfile = "id", + Orientation = 67.1, + DikeHeightCalculationType = ConfigurationHydraulicLoadsCalculationType.NoCalculation, + OvertoppingRateCalculationType = ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm, + DikeHeight = 0, + WaveReduction = new WaveReductionConfiguration { - HydraulicBoundaryLocation = new TestHydraulicBoundaryLocation("Locatie1"), - DikeProfile = new TestDikeProfile("dijkProfiel", "id"), - Orientation = (RoundedDouble) 67.1, - UseForeshore = true, + UseForeshoreProfile = true, UseBreakWater = true, - BreakWater = - { - Height = (RoundedDouble) 1.23, - Type = BreakWaterType.Caisson - }, - CriticalFlowRate = - { - Mean = (RoundedDouble) 0.1, - StandardDeviation = (RoundedDouble) 0.1 - } + BreakWaterHeight = 1.23, + BreakWaterType = ConfigurationBreakWaterType.Caisson + }, + CriticalFlowRate = new StochastConfiguration + { + Mean = 0.1, + StandardDeviation = 0.1 } }; } + + protected override GrassCoverErosionInwardsCalculationConfigurationWriter CreateWriterInstance(string filePath) + { + return new GrassCoverErosionInwardsCalculationConfigurationWriter(filePath); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/Helpers/ConfigurationHydraulicLoadsCalculationTypeConverterTest.cs =================================================================== diff -u -r8336ede0837d35257e8b85c3b0090b0774342d90 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/Helpers/ConfigurationHydraulicLoadsCalculationTypeConverterTest.cs (.../ConfigurationHydraulicLoadsCalculationTypeConverterTest.cs) (revision 8336ede0837d35257e8b85c3b0090b0774342d90) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/Configurations/Helpers/ConfigurationHydraulicLoadsCalculationTypeConverterTest.cs (.../ConfigurationHydraulicLoadsCalculationTypeConverterTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -22,6 +22,7 @@ using System; using System.ComponentModel; using NUnit.Framework; +using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionInwards.IO.Configurations; using Ringtoets.GrassCoverErosionInwards.IO.Configurations.Helpers; @@ -54,12 +55,38 @@ } [Test] - public void CanConvertTo_NotString_ReturnFalse() + public void CanConvertTo_DikeHeightCalculationType_ReturnTrue() { // Setup var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); // Call + bool canConvertToString = converter.CanConvertTo(typeof(DikeHeightCalculationType)); + + // Assert + Assert.IsTrue(canConvertToString); + } + + [Test] + public void CanConvertTo_OvertoppingRateCalculationType_ReturnTrue() + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + bool canConvertToString = converter.CanConvertTo(typeof(OvertoppingRateCalculationType)); + + // Assert + Assert.IsTrue(canConvertToString); + } + + [Test] + public void CanConvertTo_OtherType_ReturnFalse() + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call bool canConvert = converter.CanConvertTo(typeof(object)); // Assert @@ -70,7 +97,7 @@ [TestCase(ConfigurationHydraulicLoadsCalculationType.NoCalculation, "niet")] [TestCase(ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm, "norm")] [TestCase(ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability, "doorsnede")] - public void ConvertTo_VariousCases_ReturnExpectedValues(ConfigurationHydraulicLoadsCalculationType value, string expectedResult) + public void ConvertTo_StringVariousCases_ReturnExpectedValues(ConfigurationHydraulicLoadsCalculationType value, string expectedResult) { // Setup var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); @@ -83,15 +110,64 @@ } [Test] - public void ConvertTo_InvalidReadHydraulicLoadsCalculationTypeValue_ThrowNotSupportedException() + [TestCase( + ConfigurationHydraulicLoadsCalculationType.NoCalculation, + DikeHeightCalculationType.NoCalculation)] + [TestCase( + ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm, + DikeHeightCalculationType.CalculateByAssessmentSectionNorm)] + [TestCase( + ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability, + DikeHeightCalculationType.CalculateByProfileSpecificRequiredProbability)] + public void ConvertTo_DikeHeightCalculationTypeVariousCases_ReturnExpectedValues( + ConfigurationHydraulicLoadsCalculationType value, DikeHeightCalculationType expectedResult) { // Setup var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + // Call + object result = converter.ConvertTo(value, typeof(DikeHeightCalculationType)); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] + [TestCase( + ConfigurationHydraulicLoadsCalculationType.NoCalculation, + OvertoppingRateCalculationType.NoCalculation)] + [TestCase( + ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm, + OvertoppingRateCalculationType.CalculateByAssessmentSectionNorm)] + [TestCase( + ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability, + OvertoppingRateCalculationType.CalculateByProfileSpecificRequiredProbability)] + public void ConvertTo_OvertoppingRateCalculationTypeVariousCases_ReturnExpectedValues( + ConfigurationHydraulicLoadsCalculationType value, OvertoppingRateCalculationType expectedResult) + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + object result = converter.ConvertTo(value, typeof(OvertoppingRateCalculationType)); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] + [TestCase(typeof(string))] + [TestCase(typeof(DikeHeightCalculationType))] + [TestCase(typeof(OvertoppingRateCalculationType))] + public void ConvertTo_InvalidReadHydraulicLoadsCalculationTypeValue_ThrowNotSupportedException(Type type) + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + const ConfigurationHydraulicLoadsCalculationType invalidValue = (ConfigurationHydraulicLoadsCalculationType) 9999999; // Call - TestDelegate call = () => converter.ConvertTo(invalidValue, typeof(string)); + TestDelegate call = () => converter.ConvertTo(invalidValue, type); // Assert Assert.Throws(call); @@ -124,12 +200,38 @@ } [Test] - public void CanConvertFrom_NonString_ReturnFalse() + public void CanConvertFrom_DikeHeightCalculationType_ReturnTrue() { // Setup var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); // Call + bool canConvertFromString = converter.CanConvertFrom(typeof(DikeHeightCalculationType)); + + // Assert + Assert.IsTrue(canConvertFromString); + } + + [Test] + public void CanConvertFrom_OvertoppingRateCalculationType_ReturnTrue() + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + bool canConvertFromString = converter.CanConvertFrom(typeof(OvertoppingRateCalculationType)); + + // Assert + Assert.IsTrue(canConvertFromString); + } + + [Test] + public void CanConvertFrom_OtherType_ReturnFalse() + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call bool canConvert = converter.CanConvertFrom(typeof(object)); // Assert @@ -140,7 +242,7 @@ [TestCase("niet", ConfigurationHydraulicLoadsCalculationType.NoCalculation)] [TestCase("norm", ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm)] [TestCase("doorsnede", ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability)] - public void ConvertFrom_VariousCases_ReturnExpectedValue(string value, ConfigurationHydraulicLoadsCalculationType expectedResult) + public void ConvertFrom_StringVariousCases_ReturnExpectedValue(string value, ConfigurationHydraulicLoadsCalculationType expectedResult) { // Setup var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); @@ -153,6 +255,52 @@ } [Test] + [TestCase( + DikeHeightCalculationType.NoCalculation, + ConfigurationHydraulicLoadsCalculationType.NoCalculation)] + [TestCase( + DikeHeightCalculationType.CalculateByAssessmentSectionNorm, + ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm)] + [TestCase( + DikeHeightCalculationType.CalculateByProfileSpecificRequiredProbability, + ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability)] + public void ConvertFrom_DikeHeightCalculationTypeVariousCases_ReturnExpectedValue( + DikeHeightCalculationType value, ConfigurationHydraulicLoadsCalculationType expectedResult) + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + object result = converter.ConvertFrom(value); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] + [TestCase( + OvertoppingRateCalculationType.NoCalculation, + ConfigurationHydraulicLoadsCalculationType.NoCalculation)] + [TestCase( + OvertoppingRateCalculationType.CalculateByAssessmentSectionNorm, + ConfigurationHydraulicLoadsCalculationType.CalculateByAssessmentSectionNorm)] + [TestCase( + OvertoppingRateCalculationType.CalculateByProfileSpecificRequiredProbability, + ConfigurationHydraulicLoadsCalculationType.CalculateByProfileSpecificRequiredProbability)] + public void ConvertFrom_OvertoppingRateCalculationTypeVariousCases_ReturnExpectedValue( + OvertoppingRateCalculationType value, ConfigurationHydraulicLoadsCalculationType expectedResult) + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + object result = converter.ConvertFrom(value); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] public void ConvertFrom_UnsupportedString_ThrowNotSupportedException() { // Setup @@ -164,5 +312,31 @@ // Assert Assert.Throws(call); } + + [Test] + public void ConvertFrom_UnsupportedDikeHeightCalculationType_ThrowNotSupportedException() + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + TestDelegate call = () => converter.ConvertFrom((DikeHeightCalculationType) 9999); + + // Assert + Assert.Throws(call); + } + + [Test] + public void ConvertFrom_UnsupportedOvertoppingRateCalculationType_ThrowNotSupportedException() + { + // Setup + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + + // Call + TestDelegate call = () => converter.ConvertFrom((OvertoppingRateCalculationType) 9999); + + // Assert + Assert.Throws(call); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/completeConfiguration.xml =================================================================== diff -u -r5196322c56646e0417694a2d8c161d707f56415c -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/completeConfiguration.xml (.../completeConfiguration.xml) (revision 5196322c56646e0417694a2d8c161d707f56415c) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/completeConfiguration.xml (.../completeConfiguration.xml) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -6,7 +6,7 @@ 67.1 0 niet - niet + norm true caisson Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml =================================================================== diff -u -r5196322c56646e0417694a2d8c161d707f56415c -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml (.../folderWithSubfolderAndCalculation.xml) (revision 5196322c56646e0417694a2d8c161d707f56415c) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/folderWithSubfolderAndCalculation.xml (.../folderWithSubfolderAndCalculation.xml) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -7,7 +7,7 @@ 67.1 0 niet - niet + norm true caisson @@ -23,14 +23,7 @@ - niet - niet - - - 0.004 - 0.0006 - - + Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/sparseConfiguration.xml =================================================================== diff -u -r194c06df5e2f55b8711d53c52f95fedd0262bdae -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/sparseConfiguration.xml (.../sparseConfiguration.xml) (revision 194c06df5e2f55b8711d53c52f95fedd0262bdae) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/test-data/GrassCoverErosionInwardsCalculationConfigurationWriter/sparseConfiguration.xml (.../sparseConfiguration.xml) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -1,13 +1,6 @@  - niet - niet - - - 0.004 - 0.0006 - - + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs =================================================================== diff -u -r756064ca162892256021ac1616fe4680b2bba320 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs (.../PipingCalculationConfigurationExporter.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationExporter.cs (.../PipingCalculationConfigurationExporter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -51,18 +51,34 @@ { PipingInput input = calculation.InputParameters; - return new PipingCalculationConfiguration(calculation.Name) + var calculationConfiguration = new PipingCalculationConfiguration(calculation.Name); + + if (input.HydraulicBoundaryLocation != null) { - 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 - }; + calculationConfiguration.HydraulicBoundaryLocation = input.HydraulicBoundaryLocation.Name; + } + else if(input.UseAssessmentLevelManualInput) + { + calculationConfiguration.AssessmentLevel = input.AssessmentLevel; + } + + calculationConfiguration.DampingFactorExit = input.DampingFactorExit.ToStochastConfiguration(); + calculationConfiguration.PhreaticLevelExit = input.PhreaticLevelExit.ToStochastConfiguration(); + + if (input.SurfaceLine != null) + { + calculationConfiguration.SurfaceLine = input.SurfaceLine.Name; + calculationConfiguration.EntryPointL = input.EntryPointL; + calculationConfiguration.ExitPointL = input.ExitPointL; + } + + if (input.StochasticSoilModel != null) + { + calculationConfiguration.StochasticSoilModel = input.StochasticSoilModel.Name; + calculationConfiguration.StochasticSoilProfile = input.StochasticSoilProfile?.SoilProfile.Name; + } + + return calculationConfiguration; } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationWriter.cs =================================================================== diff -u -r756064ca162892256021ac1616fe4680b2bba320 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationWriter.cs (.../PipingCalculationConfigurationWriter.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Configurations/PipingCalculationConfigurationWriter.cs (.../PipingCalculationConfigurationWriter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -20,12 +20,9 @@ // All rights reserved. using System; -using System.Collections.Generic; using System.Xml; -using Ringtoets.Common.Data.Probabilistics; using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.Configurations.Export; -using Ringtoets.Piping.Data; namespace Ringtoets.Piping.IO.Configurations { @@ -53,46 +50,29 @@ writer.WriteStartElement(ConfigurationSchemaIdentifiers.CalculationElement); writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, configuration.Name); - if (configuration.AssessmentLevel.HasValue) - { - WriteElementWhenContentAvailable(writer, - PipingCalculationConfigurationSchemaIdentifiers.AssessmentLevelElement, - configuration.AssessmentLevel); - } - else - { - WriteElementWhenContentAvailable(writer, - ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, - configuration.HydraulicBoundaryLocation); - } + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.AssessmentLevelElement, + configuration.AssessmentLevel); + WriteElementWhenContentAvailable(writer, + ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, + configuration.HydraulicBoundaryLocation); - if (configuration.SurfaceLine != null) - { - WriteElementWhenContentAvailable(writer, - PipingCalculationConfigurationSchemaIdentifiers.SurfaceLineElement, - configuration.SurfaceLine); - WriteElementWhenContentAvailable(writer, - PipingCalculationConfigurationSchemaIdentifiers.EntryPointLElement, - configuration.EntryPointL); - WriteElementWhenContentAvailable(writer, - PipingCalculationConfigurationSchemaIdentifiers.ExitPointLElement, - configuration.ExitPointL); - } + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.SurfaceLineElement, + configuration.SurfaceLine); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.EntryPointLElement, + configuration.EntryPointL); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.ExitPointLElement, + configuration.ExitPointL); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilModelElement, + configuration.StochasticSoilModel); + WriteElementWhenContentAvailable(writer, + PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilProfileElement, + configuration.StochasticSoilProfile); - if (configuration.StochasticSoilModel != null) - { - WriteElementWhenContentAvailable(writer, - PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilModelElement, - configuration.StochasticSoilModel); - - if (configuration.StochasticSoilProfile != null) - { - WriteElementWhenContentAvailable(writer, - PipingCalculationConfigurationSchemaIdentifiers.StochasticSoilProfileElement, - configuration.StochasticSoilProfile); - } - } - writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastsElement); WriteDistributionWhenAvailable(writer, Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationExporterTest.cs =================================================================== diff -u -r756064ca162892256021ac1616fe4680b2bba320 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationExporterTest.cs (.../PipingCalculationConfigurationExporterTest.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationExporterTest.cs (.../PipingCalculationConfigurationExporterTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -42,6 +42,35 @@ PipingCalculation, PipingCalculationConfiguration> { + + private static IEnumerable Calculations + { + get + { + yield return new TestCaseData("calculationWithoutHydraulicLocation", + PipingTestDataGenerator.GetPipingCalculationWithoutHydraulicLocationAndAssessmentLevel()) + .SetName("calculationWithoutHydraulicLocation"); + yield return new TestCaseData("calculationWithAssessmentLevel", + PipingTestDataGenerator.GetPipingCalculationWithAssessmentLevel()) + .SetName("calculationWithAssessmentLevel"); + yield return new TestCaseData("calculationWithoutSurfaceLine", + PipingTestDataGenerator.GetPipingCalculationWithoutSurfaceLine()) + .SetName("calculationWithoutSurfaceLine"); + yield return new TestCaseData("calculationWithoutSoilModel", + PipingTestDataGenerator.GetPipingCalculationWithoutSoilModel()) + .SetName("calculationWithoutSoilModel"); + yield return new TestCaseData("calculationWithoutSoilProfile", + PipingTestDataGenerator.GetPipingCalculationWithoutSoilProfile()) + .SetName("calculationWithoutSoilProfile"); + yield return new TestCaseData("calculationWithNaNs", + PipingTestDataGenerator.GetPipingCalculationWithNaNs()) + .SetName("calculationWithNaNs"); + yield return new TestCaseData("calculationWithInfinities", + PipingTestDataGenerator.GetPipingCalculationWithInfinities()) + .SetName("calculationWithInfinities"); + } + } + [Test] public void Export_ValidData_ReturnTrueAndWritesFile() { @@ -93,6 +122,20 @@ }, expectedXmlFilePath); } + [Test] + [TestCaseSource(nameof(Calculations))] + public void Write_ValidCalculation_ValidFile(string expectedFileName, PipingCalculation calculation) + { + // Setup + string expectedXmlFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, Path.Combine("PipingCalculationConfigurationWriter", $"{expectedFileName}.xml")); + + // Call and Assert + WriteAndValidate(new[] + { + calculation + }, expectedXmlFilePath); + } + protected override PipingCalculation CreateCalculation() { return PipingTestDataGenerator.GetPipingCalculation(); Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs =================================================================== diff -u -r756064ca162892256021ac1616fe4680b2bba320 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs (.../PipingCalculationConfigurationWriterTest.cs) (revision 756064ca162892256021ac1616fe4680b2bba320) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Configurations/PipingCalculationConfigurationWriterTest.cs (.../PipingCalculationConfigurationWriterTest.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -19,7 +19,6 @@ // 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.Geometry; using Core.Common.TestUtil; @@ -37,75 +36,6 @@ PipingCalculationConfigurationWriter, PipingCalculationConfiguration> { - private static IEnumerable Calculations - { - get - { - - var calculation = CreateFullCalculationConfiguration(); - calculation.HydraulicBoundaryLocation = null; - calculation.EntryPointL = 0.0; - calculation.ExitPointL = 10; - yield return new TestCaseData("calculationWithoutHydraulicLocation", - calculation) - .SetName("calculationWithoutHydraulicLocation"); - - calculation = CreateFullCalculationConfiguration(); - calculation.AssessmentLevel = 3.0; - calculation.EntryPointL = 0.0; - calculation.ExitPointL = 10; - yield return new TestCaseData("calculationWithAssessmentLevel", - calculation) - .SetName("calculationWithAssessmentLevel"); - - calculation = CreateFullCalculationConfiguration(); - calculation.SurfaceLine = null; - yield return new TestCaseData("calculationWithoutSurfaceLine", - calculation) - .SetName("calculationWithoutSurfaceLine"); - - calculation = CreateFullCalculationConfiguration(); - calculation.StochasticSoilModel = null; - calculation.EntryPointL = 0.0; - calculation.ExitPointL = 10; - yield return new TestCaseData("calculationWithoutSoilModel", - calculation) - .SetName("calculationWithoutSoilModel"); - - calculation = CreateFullCalculationConfiguration(); - calculation.StochasticSoilProfile = null; - calculation.EntryPointL = 0.0; - calculation.ExitPointL = 10; - yield return new TestCaseData("calculationWithoutSoilProfile", - 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", - 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", - calculation) - .SetName("calculationWithInfinities"); - } - } - [Test] public void Write_CalculationGroupsAndCalculation_ValidFile() { @@ -193,36 +123,6 @@ }; } - [Test] - [TestCaseSource(nameof(Calculations))] - public void Write_ValidCalculation_ValidFile(string expectedFileName, PipingCalculationConfiguration calculation) - { - // Setup - string filePath = TestHelper.GetScratchPadPath("test.xml"); - - try - { - // Call - new PipingCalculationConfigurationWriter(filePath).Write(new[] - { - calculation - }); - - // Assert - Assert.IsTrue(File.Exists(filePath)); - - string actualXml = File.ReadAllText(filePath); - string expectedXmlFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, Path.Combine("PipingCalculationConfigurationWriter", $"{expectedFileName}.xml")); - string expectedXml = File.ReadAllText(expectedXmlFilePath); - - Assert.AreEqual(expectedXml, actualXml); - } - finally - { - File.Delete(filePath); - } - } - protected override PipingCalculationConfigurationWriter CreateWriterInstance(string filePath) { return new PipingCalculationConfigurationWriter(filePath);