Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter.cs =================================================================== diff -u -rcabc2b86c92f510eb4afcf6889e7464630507fb3 -r89376e2e2629c1e722515a852b455b3810d0d98f --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter.cs (.../FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter.cs) (revision cabc2b86c92f510eb4afcf6889e7464630507fb3) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter.cs (.../FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter.cs) (revision 89376e2e2629c1e722515a852b455b3810d0d98f) @@ -33,7 +33,7 @@ /// Exports a failure mechanism category wave conditions calculation configuration and stores it as an XML file. /// public class FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter : WaveConditionsCalculationConfigurationExporter< - FailureMechanismCategoryWaveConditionsCalculationConfigurationWriter, + GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter, GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration, ICalculation> { @@ -47,9 +47,9 @@ public FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter(IEnumerable calculations, string filePath) : base(calculations, filePath) {} - protected override FailureMechanismCategoryWaveConditionsCalculationConfigurationWriter CreateWriter(string filePath) + protected override GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter CreateWriter(string filePath) { - return new FailureMechanismCategoryWaveConditionsCalculationConfigurationWriter(filePath); + return new GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter(filePath); } protected override GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration ToConfiguration(ICalculation calculation) Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter.cs =================================================================== diff -u --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter.cs (revision 0) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter.cs (revision 89376e2e2629c1e722515a852b455b3810d0d98f) @@ -0,0 +1,65 @@ +// Copyright (C) Stichting Deltares 2017. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Xml; +using Ringtoets.GrassCoverErosionOutwards.IO.Configurations.Converters; +using Ringtoets.Revetment.Data; +using Ringtoets.Revetment.IO.Configurations; + +namespace Ringtoets.GrassCoverErosionOutwards.IO.Configurations +{ + /// + /// Writer for calculations that contain as input, + /// to XML format. + /// + public class GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter + : WaveConditionsCalculationConfigurationWriter + { + /// + /// 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 GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter(string filePath) + : base(filePath) {} + + protected override void WriteConfigurationCategoryTypeWhenAvailable( + XmlWriter writer, GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration configuration) + { + if (!configuration.CategoryType.HasValue) + { + return; + } + + var converter = new ConfigurationGrassCoverErosionOutwardsCategoryTypeConverter(); + writer.WriteElementString(WaveConditionsCalculationConfigurationSchemaIdentifiers.CategoryType, + converter.ConvertToInvariantString(configuration.CategoryType.Value)); + } + } +} \ No newline at end of file Fisheye: Tag 89376e2e2629c1e722515a852b455b3810d0d98f refers to a dead (removed) revision in file `Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/failureMechanismCategoryWaveConditionsCalculationConfigurationWriter.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Ringtoets.GrassCoverErosionOutwards.IO.csproj =================================================================== diff -u -rcabc2b86c92f510eb4afcf6889e7464630507fb3 -r89376e2e2629c1e722515a852b455b3810d0d98f --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Ringtoets.GrassCoverErosionOutwards.IO.csproj (.../Ringtoets.GrassCoverErosionOutwards.IO.csproj) (revision cabc2b86c92f510eb4afcf6889e7464630507fb3) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Ringtoets.GrassCoverErosionOutwards.IO.csproj (.../Ringtoets.GrassCoverErosionOutwards.IO.csproj) (revision 89376e2e2629c1e722515a852b455b3810d0d98f) @@ -20,7 +20,7 @@ - + Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationExporterTest.cs =================================================================== diff -u -rcabc2b86c92f510eb4afcf6889e7464630507fb3 -r89376e2e2629c1e722515a852b455b3810d0d98f --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationExporterTest.cs (.../FailureMechanismCategoryWaveConditionsCalculationConfigurationExporterTest.cs) (revision cabc2b86c92f510eb4afcf6889e7464630507fb3) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationExporterTest.cs (.../FailureMechanismCategoryWaveConditionsCalculationConfigurationExporterTest.cs) (revision 89376e2e2629c1e722515a852b455b3810d0d98f) @@ -38,7 +38,7 @@ public class FailureMechanismCategoryWaveConditionsCalculationConfigurationExporterTest : CustomCalculationConfigurationExporterDesignGuidelinesTestFixture< FailureMechanismCategoryWaveConditionsCalculationConfigurationExporter, - FailureMechanismCategoryWaveConditionsCalculationConfigurationWriter, + GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter, ICalculation, GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration> { Fisheye: Tag 89376e2e2629c1e722515a852b455b3810d0d98f refers to a dead (removed) revision in file `Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/FailureMechanismCategoryWaveConditionsCalculationConfigurationWriterTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriterTest.cs =================================================================== diff -u --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriterTest.cs (revision 0) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriterTest.cs (revision 89376e2e2629c1e722515a852b455b3810d0d98f) @@ -0,0 +1,155 @@ +// Copyright (C) Stichting Deltares 2017. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.ComponentModel; +using System.IO; +using Core.Common.Base.Data; +using Core.Common.IO.Exceptions; +using Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.Common.IO.Configurations; +using Ringtoets.Common.IO.TestUtil; +using Ringtoets.GrassCoverErosionOutwards.IO.Configurations; +using Ringtoets.Revetment.IO.Configurations; + +namespace Ringtoets.GrassCoverErosionOutwards.IO.Test.Configurations +{ + [TestFixture] + public class GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriterTest : CustomCalculationConfigurationWriterDesignGuidelinesTestFixture< + GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter, + GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration> + { + [Test] + public void Write_SparseCalculation_WritesSparseConfigurationToFile() + { + // Setup + string filePath = TestHelper.GetScratchPadPath( + $"{nameof(Write_SparseCalculation_WritesSparseConfigurationToFile)}.xml"); + + string expectedXmlFilePath = TestHelper.GetTestDataPath( + TestDataPath.Ringtoets.Revetment.IO, + Path.Combine(nameof(GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter), "sparseConfiguration.xml")); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration("Berekening 1"); + + try + { + var writer = new GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter(filePath); + + // Call + writer.Write(new[] + { + calculation + }); + + // Assert + string actualXml = File.ReadAllText(filePath); + string expectedXml = File.ReadAllText(expectedXmlFilePath); + + Assert.AreEqual(expectedXml, actualXml); + } + finally + { + File.Delete(filePath); + } + } + + [Test] + public void Write_CompleteCalculation_WritesCompleteConfigurationToFile() + { + // Setup + string filePath = TestHelper.GetScratchPadPath( + $"{nameof(Write_CompleteCalculation_WritesCompleteConfigurationToFile)}.xml"); + + string expectedXmlFilePath = TestHelper.GetTestDataPath( + TestDataPath.Ringtoets.Revetment.IO, + Path.Combine(nameof(GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter), "completeConfiguration.xml")); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration("Berekening 1") + { + HydraulicBoundaryLocationName = "Locatie1", + CategoryType = ConfigurationGrassCoverErosionOutwardsCategoryType.LowerLimitNorm, + UpperBoundaryRevetment = (RoundedDouble) 1.5, + LowerBoundaryRevetment = (RoundedDouble) 0.5, + UpperBoundaryWaterLevels = (RoundedDouble) 1.4, + LowerBoundaryWaterLevels = (RoundedDouble) 0.6, + StepSize = ConfigurationWaveConditionsInputStepSize.One, + ForeshoreProfileId = "profiel1", + Orientation = (RoundedDouble) 67.1, + WaveReduction = new WaveReductionConfiguration + { + UseForeshoreProfile = true, + UseBreakWater = true, + BreakWaterHeight = (RoundedDouble) 1.23, + BreakWaterType = ConfigurationBreakWaterType.Dam + } + }; + + try + { + var writer = new GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter(filePath); + + // Call + writer.Write(new[] + { + calculation + }); + + // Assert + string actualXml = File.ReadAllText(filePath); + string expectedXml = File.ReadAllText(expectedXmlFilePath); + + Assert.AreEqual(expectedXml, actualXml); + } + finally + { + File.Delete(filePath); + } + } + + [Test] + public void Write_InvalidCategoryType_ThrowsCriticalFileWriteException() + { + // Setup + var configuration = new GrassCoverErosionOutwardsWaveConditionsCalculationConfiguration("fail") + { + CategoryType = (ConfigurationGrassCoverErosionOutwardsCategoryType?) 99 + }; + + var writer = new GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter("valid"); + + // Call + TestDelegate call = () => writer.Write(new[] + { + configuration + }); + + // Assert + var exception = Assert.Throws(call); + Assert.IsInstanceOf(exception.InnerException); + } + + protected override GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter CreateWriterInstance(string filePath) + { + return new GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationWriter(filePath); + } + } +} \ No newline at end of file Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Ringtoets.GrassCoverErosionOutwards.IO.Test.csproj =================================================================== diff -u -rcabc2b86c92f510eb4afcf6889e7464630507fb3 -r89376e2e2629c1e722515a852b455b3810d0d98f --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Ringtoets.GrassCoverErosionOutwards.IO.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.IO.Test.csproj) (revision cabc2b86c92f510eb4afcf6889e7464630507fb3) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Ringtoets.GrassCoverErosionOutwards.IO.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.IO.Test.csproj) (revision 89376e2e2629c1e722515a852b455b3810d0d98f) @@ -22,7 +22,7 @@ - +