Index: Ringtoets/Common/src/Ringtoets.Common.Service/HydraRingInputParser.cs =================================================================== diff -u -rb3b6c13cf736c134476b3db34281332d01ca86b1 -r8c4d6b66b27822afabcee01087a961f055fda01c --- Ringtoets/Common/src/Ringtoets.Common.Service/HydraRingInputParser.cs (.../HydraRingInputParser.cs) (revision b3b6c13cf736c134476b3db34281332d01ca86b1) +++ Ringtoets/Common/src/Ringtoets.Common.Service/HydraRingInputParser.cs (.../HydraRingInputParser.cs) (revision 8c4d6b66b27822afabcee01087a961f055fda01c) @@ -19,7 +19,9 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using Ringtoets.Common.Data.DikeProfiles; using Ringtoets.HydraRing.Calculation.Data; @@ -49,9 +51,38 @@ /// A calculation input object that implements . /// A object, null if /// is false + /// Thrown when the break water type is an invalid value. + /// Thrown when the break water type is a valid value but unsupported. public static HydraRingBreakWater ParseBreakWater(IUseBreakWater input) { - return input.UseBreakWater ? new HydraRingBreakWater((int) input.BreakWater.Type, input.BreakWater.Height) : null; + return input.UseBreakWater ? new HydraRingBreakWater(ConvertBreakWaterType(input.BreakWater.Type), input.BreakWater.Height) : null; } + + /// + /// Converts into an integer value to be used by Hydra-Ring. + /// + /// The to convert. + /// The integer value to be used by Hydra-Ring. + /// Thrown when is an invalid value. + /// Thrown when is a valid value but unsupported. + private static int ConvertBreakWaterType(BreakWaterType type) + { + if (!Enum.IsDefined(type.GetType(), type)) + { + throw new InvalidEnumArgumentException(nameof(type), (int) type, type.GetType()); + } + + switch (type) + { + case BreakWaterType.Caisson: + return 1; + case BreakWaterType.Wall: + return 2; + case BreakWaterType.Dam: + return 3; + default: + throw new NotSupportedException($"Value '{type}' is not supported."); + } + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/HydraRingInputParserTest.cs =================================================================== diff -u -r1bbf51443c907b5f202e80764fa05f2e7f842c04 -r8c4d6b66b27822afabcee01087a961f055fda01c --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/HydraRingInputParserTest.cs (.../HydraRingInputParserTest.cs) (revision 1bbf51443c907b5f202e80764fa05f2e7f842c04) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/HydraRingInputParserTest.cs (.../HydraRingInputParserTest.cs) (revision 8c4d6b66b27822afabcee01087a961f055fda01c) @@ -83,10 +83,10 @@ } [Test] - [TestCase(BreakWaterType.Wall)] - [TestCase(BreakWaterType.Caisson)] - [TestCase(BreakWaterType.Dam)] - public void ParseBreakWater_Use_ReturnHydraRingBreakWater(BreakWaterType breakWaterType) + [TestCase(BreakWaterType.Caisson, 1)] + [TestCase(BreakWaterType.Wall, 2)] + [TestCase(BreakWaterType.Dam, 3)] + public void ParseBreakWater_Use_ReturnHydraRingBreakWater(BreakWaterType breakWaterType, int expectedBreakWaterType) { // Setup var random = new Random(22); @@ -103,14 +103,14 @@ HydraRingBreakWater parsedBreakWater = HydraRingInputParser.ParseBreakWater(breakWater); // Assert - Assert.AreEqual((int) expectedBreakWater.Type, parsedBreakWater.Type); + Assert.AreEqual(expectedBreakWaterType, parsedBreakWater.Type); Assert.AreEqual(expectedBreakWater.Height, parsedBreakWater.Height, expectedBreakWater.Height.GetAccuracy()); mockRepository.VerifyAll(); } [Test] - [TestCase(BreakWaterType.Wall)] [TestCase(BreakWaterType.Caisson)] + [TestCase(BreakWaterType.Wall)] [TestCase(BreakWaterType.Dam)] public void ParseBreakWater_DoesNotUse_ReturnNull(BreakWaterType breakWaterType) {