Index: Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/Helpers/ConfigurationAssessmentSectionCategoryTypeConverter.cs
===================================================================
diff -u -r475dac0f99aaea7f80dc71aa0a85e51c1032b766 -rb3ba37f5a8ccaefa24540a0937434aa8718ac0e0
--- Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/Helpers/ConfigurationAssessmentSectionCategoryTypeConverter.cs (.../ConfigurationAssessmentSectionCategoryTypeConverter.cs) (revision 475dac0f99aaea7f80dc71aa0a85e51c1032b766)
+++ Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/Helpers/ConfigurationAssessmentSectionCategoryTypeConverter.cs (.../ConfigurationAssessmentSectionCategoryTypeConverter.cs) (revision b3ba37f5a8ccaefa24540a0937434aa8718ac0e0)
@@ -32,6 +32,38 @@
///
public class ConfigurationAssessmentSectionCategoryTypeConverter : TypeConverter
{
+ ///
+ /// Thrown when
+ /// contains an invalid value of .
+ public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+ {
+ var stepSize = (ConfigurationAssessmentSectionCategoryType)value;
+ if (!Enum.IsDefined(typeof(ConfigurationAssessmentSectionCategoryType), stepSize))
+ {
+ throw new InvalidEnumArgumentException(nameof(value),
+ (int)stepSize,
+ typeof(ConfigurationAssessmentSectionCategoryType));
+ }
+
+ if (destinationType == typeof(string))
+ {
+ switch (stepSize)
+ {
+ case ConfigurationAssessmentSectionCategoryType.FactorizedSignalingNorm:
+ return "A+->A";
+ case ConfigurationAssessmentSectionCategoryType.SignalingNorm:
+ return "A->B";
+ case ConfigurationAssessmentSectionCategoryType.LowerLimitNorm:
+ return "B->C";
+ case ConfigurationAssessmentSectionCategoryType.FactorizedLowerLimitNorm:
+ return "C->D";
+ default:
+ throw new NotSupportedException();
+ }
+ }
+ return base.ConvertTo(context, culture, value, destinationType);
+ }
+
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string)
Index: Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/Helpers/ConfigurationAssessmentSectionCategoryTypeConverterTest.cs
===================================================================
diff -u -r475dac0f99aaea7f80dc71aa0a85e51c1032b766 -rb3ba37f5a8ccaefa24540a0937434aa8718ac0e0
--- Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/Helpers/ConfigurationAssessmentSectionCategoryTypeConverterTest.cs (.../ConfigurationAssessmentSectionCategoryTypeConverterTest.cs) (revision 475dac0f99aaea7f80dc71aa0a85e51c1032b766)
+++ Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/Helpers/ConfigurationAssessmentSectionCategoryTypeConverterTest.cs (.../ConfigurationAssessmentSectionCategoryTypeConverterTest.cs) (revision b3ba37f5a8ccaefa24540a0937434aa8718ac0e0)
@@ -21,6 +21,7 @@
using System;
using System.ComponentModel;
+using System.Globalization;
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.Common.Data.AssessmentSection;
@@ -43,6 +44,65 @@
}
[Test]
+ public void CanConvertTo_String_ReturnTrue()
+ {
+ // Setup
+ var converter = new ConfigurationAssessmentSectionCategoryTypeConverter();
+
+ // Call
+ bool canConvertTo = converter.CanConvertTo(typeof(string));
+
+ // Assert
+ Assert.IsTrue(canConvertTo);
+ }
+
+ [Test]
+ public void CanConvertTo_OtherType_ReturnFalse()
+ {
+ // Setup
+ var converter = new ConfigurationAssessmentSectionCategoryTypeConverter();
+
+ // Call
+ bool canConvertTo = converter.CanConvertTo(typeof(object));
+
+ // Assert
+ Assert.IsFalse(canConvertTo);
+ }
+
+ [Test]
+ [TestCase(ConfigurationAssessmentSectionCategoryType.FactorizedSignalingNorm, "A+->A")]
+ [TestCase(ConfigurationAssessmentSectionCategoryType.SignalingNorm, "A->B")]
+ [TestCase(ConfigurationAssessmentSectionCategoryType.LowerLimitNorm, "B->C")]
+ [TestCase(ConfigurationAssessmentSectionCategoryType.FactorizedLowerLimitNorm, "C->D")]
+ public void ConvertTo_ValidConfigurationAssessmentSectionCategoryType_ReturnExpectedText(
+ ConfigurationAssessmentSectionCategoryType value, string expectedText)
+ {
+ // Setup
+ var converter = new ConfigurationAssessmentSectionCategoryTypeConverter();
+
+ // Call
+ object convertTo = converter.ConvertTo(null, CultureInfo.CurrentCulture, value, typeof(string));
+
+ // Assert
+ Assert.AreEqual(expectedText, convertTo);
+ }
+
+ [Test]
+ public void ConvertTo_StringInvalidConfigurationWaveConditionsInputStepSize_ThrowInvalidEnumArgumentException()
+ {
+ // Setup
+ const ConfigurationAssessmentSectionCategoryType invalidValue = (ConfigurationAssessmentSectionCategoryType) 99;
+ var converter = new ConfigurationAssessmentSectionCategoryTypeConverter();
+
+ // Call
+ TestDelegate call = () => converter.ConvertTo(invalidValue, typeof(string));
+
+ // Assert
+ string expectedMessage = $"The value of argument 'value' ({invalidValue}) is invalid for Enum type '{nameof(ConfigurationAssessmentSectionCategoryType)}'.";
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage);
+ }
+
+ [Test]
public void CanConvertFrom_String_ReturnTrue()
{
// Setup