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)
{