Index: Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/CombinationTypeConverter.cs
===================================================================
diff -u -rfe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf -rcf5fa63f05c1018cdb14d5c664fa21f26026150c
--- Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/CombinationTypeConverter.cs (.../CombinationTypeConverter.cs) (revision fe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf)
+++ Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/CombinationTypeConverter.cs (.../CombinationTypeConverter.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c)
@@ -19,7 +19,8 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
-using Ringtoets.Common.Data.Exceptions;
+using System;
+using System.ComponentModel;
using Ringtoets.Common.Data.IllustrationPoints;
using HydraRingCombinationType = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.CombinationType;
@@ -36,20 +37,27 @@
/// The
/// to convert.
/// The .
- /// Thrown when
+ /// Thrown when
/// has an invalid value.
+ /// Thrown when a valid value of
+ /// cannot be converted.
public static CombinationType Convert(HydraRingCombinationType hydraRingCombinationType)
{
+ if (!Enum.IsDefined(typeof(HydraRingCombinationType), hydraRingCombinationType))
+ {
+ throw new InvalidEnumArgumentException(nameof(hydraRingCombinationType),
+ (int)hydraRingCombinationType,
+ typeof(HydraRingCombinationType));
+ }
+
switch (hydraRingCombinationType)
{
case HydraRingCombinationType.Or:
return CombinationType.Or;
case HydraRingCombinationType.And:
return CombinationType.And;
default:
- string errorMessage = $"The value of {(int) hydraRingCombinationType} for {nameof(hydraRingCombinationType)} " +
- $"could not be converted into a {typeof(CombinationType)}.";
- throw new IllustrationPointConversionException(errorMessage);
+ throw new NotSupportedException($"A value of {hydraRingCombinationType} is not supported.");
}
}
}
Index: Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/FaultTreeIllustrationPointConverter.cs
===================================================================
diff -u -rfe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf -rcf5fa63f05c1018cdb14d5c664fa21f26026150c
--- Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/FaultTreeIllustrationPointConverter.cs (.../FaultTreeIllustrationPointConverter.cs) (revision fe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf)
+++ Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/FaultTreeIllustrationPointConverter.cs (.../FaultTreeIllustrationPointConverter.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c)
@@ -21,10 +21,12 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Linq;
using Ringtoets.Common.Data.Exceptions;
using Ringtoets.Common.Data.IllustrationPoints;
using HydraRingFaultTreeIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.FaultTreeIllustrationPoint;
+using HydraRingCombinationType = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.CombinationType;
namespace Ringtoets.Common.Service.IllustrationPoints
{
@@ -52,14 +54,25 @@
throw new ArgumentNullException(nameof(hydraRingFaultTreeIllustrationPoint));
}
- CombinationType combinationType = CombinationTypeConverter.Convert(hydraRingFaultTreeIllustrationPoint.CombinationType);
- IEnumerable stochasts = hydraRingFaultTreeIllustrationPoint
- .Stochasts.Select(StochastConverter.Convert);
+ FaultTreeIllustrationPoint illustrationPoint;
+ try
+ {
+ CombinationType combinationType = CombinationTypeConverter.Convert(hydraRingFaultTreeIllustrationPoint.CombinationType);
+ IEnumerable stochasts = hydraRingFaultTreeIllustrationPoint
+ .Stochasts.Select(StochastConverter.Convert);
- return new FaultTreeIllustrationPoint(hydraRingFaultTreeIllustrationPoint.Name,
- hydraRingFaultTreeIllustrationPoint.Beta,
- stochasts,
- combinationType);
+ illustrationPoint = new FaultTreeIllustrationPoint(hydraRingFaultTreeIllustrationPoint.Name,
+ hydraRingFaultTreeIllustrationPoint.Beta,
+ stochasts,
+ combinationType);
+ }
+ catch (Exception e) when (e is NotSupportedException || e is InvalidEnumArgumentException)
+ {
+ string errorMessage = $"Could not convert the {typeof(HydraRingCombinationType)} into a {typeof(CombinationType)}.";
+ throw new IllustrationPointConversionException(errorMessage, e);
+ }
+
+ return illustrationPoint;
}
}
}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/IllustrationPointNodeConverter.cs
===================================================================
diff -u -rc77ccbb8b26516270f36ef53110be573839f3470 -rcf5fa63f05c1018cdb14d5c664fa21f26026150c
--- Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/IllustrationPointNodeConverter.cs (.../IllustrationPointNodeConverter.cs) (revision c77ccbb8b26516270f36ef53110be573839f3470)
+++ Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/IllustrationPointNodeConverter.cs (.../IllustrationPointNodeConverter.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c)
@@ -23,7 +23,7 @@
using System.Linq;
using Ringtoets.Common.Data.Exceptions;
using Ringtoets.Common.Data.IllustrationPoints;
-using Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints;
+using HydraRingIIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.IIllustrationPoint;
using HydraRingFaultTreeIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.FaultTreeIllustrationPoint;
using HydraRingSubMechanismIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.SubMechanismIllustrationPoint;
using HydraRingIllustrationPointTreeNode = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.IllustrationPointTreeNode;
@@ -56,13 +56,17 @@
throw new ArgumentNullException(nameof(hydraRingIllustrationPointTreeNode));
}
- IllustrationPointBase data = ConvertIllustrationPointTreeNodeData(hydraRingIllustrationPointTreeNode.Data);
+ IllustrationPointBase data;
- if (data == null)
+ try
{
+ data = ConvertIllustrationPointTreeNodeData(hydraRingIllustrationPointTreeNode.Data);
+ }
+ catch (NotSupportedException e)
+ {
string errorMessage = "An illustration point containing a Hydra ring data type of " +
$"{hydraRingIllustrationPointTreeNode.Data.GetType()} is not supported.";
- throw new IllustrationPointConversionException(errorMessage);
+ throw new IllustrationPointConversionException(errorMessage, e);
}
var illustrationPointNode = new IllustrationPointNode(data);
@@ -71,15 +75,33 @@
return illustrationPointNode;
}
- private static IllustrationPointBase ConvertIllustrationPointTreeNodeData(IIllustrationPoint data)
+ ///
+ /// Creates a new instance of a based on the
+ /// .
+ ///
+ /// The to base the
+ /// to create on.
+ /// A , null when no appropriate
+ /// conversion was found.
+ /// Thrown when
+ /// could not be converted.
+ /// Thrown when no suitable conversion for
+ /// was found.
+ private static IllustrationPointBase ConvertIllustrationPointTreeNodeData(HydraRingIIllustrationPoint data)
{
var faultTreeIllustrationPoint = data as HydraRingFaultTreeIllustrationPoint;
+ if (faultTreeIllustrationPoint != null)
+ {
+ return FaultTreeIllustrationPointConverter.Convert(faultTreeIllustrationPoint);
+ }
+
var subMechanismIllustrationPoint = data as HydraRingSubMechanismIllustrationPoint;
- return faultTreeIllustrationPoint != null
- ? (IllustrationPointBase) FaultTreeIllustrationPointConverter.Convert(faultTreeIllustrationPoint)
- : (subMechanismIllustrationPoint != null
- ? SubMechanismIllustrationPointConverter.Convert(subMechanismIllustrationPoint)
- : null);
+ if (subMechanismIllustrationPoint != null)
+ {
+ return SubMechanismIllustrationPointConverter.Convert(subMechanismIllustrationPoint);
+ }
+
+ throw new NotSupportedException($"Cannot convert {data.GetType()}.");
}
}
}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/CombinationTypeConverterTest.cs
===================================================================
diff -u -rfe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf -rcf5fa63f05c1018cdb14d5c664fa21f26026150c
--- Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/CombinationTypeConverterTest.cs (.../CombinationTypeConverterTest.cs) (revision fe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf)
+++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/CombinationTypeConverterTest.cs (.../CombinationTypeConverterTest.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c)
@@ -19,8 +19,9 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System.ComponentModel;
+using Core.Common.TestUtil;
using NUnit.Framework;
-using Ringtoets.Common.Data.Exceptions;
using Ringtoets.Common.Data.IllustrationPoints;
using Ringtoets.Common.Service.IllustrationPoints;
using HydraRingCombinationType = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.CombinationType;
@@ -31,22 +32,21 @@
public class CombinationTypeConverterTest
{
[Test]
- public void Convert_InvalidEnumValue_ThrowsIllustrationPointConversionException()
+ public void Convert_InvalidEnumValue_ThrowsInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => CombinationTypeConverter.Convert((HydraRingCombinationType) 99);
// Assert
- var exception = Assert.Throws(test);
- string message = $"The value of 99 for hydraRingCombinationType could not be converted into a {typeof(CombinationType)}.";
- Assert.AreEqual(message, exception.Message);
+ const string message = "The value of argument 'hydraRingCombinationType' (99) is invalid for Enum type 'CombinationType'.";
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, message);
}
[Test]
[TestCase(HydraRingCombinationType.And, CombinationType.And)]
[TestCase(HydraRingCombinationType.Or, CombinationType.Or)]
public void Convert_HydraRingCombinationType_ReturnCombinationType(HydraRingCombinationType hydraRingCombinationType,
- CombinationType expectedCombinationType)
+ CombinationType expectedCombinationType)
{
// Call
CombinationType combinationType = CombinationTypeConverter.Convert(hydraRingCombinationType);
Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/FaultTreeIllustrationPointConverterTest.cs
===================================================================
diff -u -rfe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf -rcf5fa63f05c1018cdb14d5c664fa21f26026150c
--- Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/FaultTreeIllustrationPointConverterTest.cs (.../FaultTreeIllustrationPointConverterTest.cs) (revision fe0220615a6da7fcf3d1d1ad910c1c5ea95b42bf)
+++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/FaultTreeIllustrationPointConverterTest.cs (.../FaultTreeIllustrationPointConverterTest.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c)
@@ -93,8 +93,9 @@
// Assert
var exception = Assert.Throws(call);
- string expectedMessage = $"The value of 999999 for hydraRingCombinationType could not be converted into a {typeof(CombinationType)}.";
+ string expectedMessage = $"Could not convert the {typeof(HydraRingCombinationType)} into a {typeof(CombinationType)}.";
Assert.AreEqual(expectedMessage, exception.Message);
+ Assert.IsInstanceOf(exception.InnerException);
}
}
}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/IllustrationPointNodeConverterTest.cs
===================================================================
diff -u -rc77ccbb8b26516270f36ef53110be573839f3470 -rcf5fa63f05c1018cdb14d5c664fa21f26026150c
--- Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/IllustrationPointNodeConverterTest.cs (.../IllustrationPointNodeConverterTest.cs) (revision c77ccbb8b26516270f36ef53110be573839f3470)
+++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/IllustrationPointNodeConverterTest.cs (.../IllustrationPointNodeConverterTest.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c)
@@ -26,8 +26,6 @@
using Ringtoets.Common.Data.IllustrationPoints;
using Ringtoets.Common.Data.TestUtil;
using Ringtoets.Common.Service.IllustrationPoints;
-using CombinationType = Ringtoets.Common.Data.IllustrationPoints.CombinationType;
-using FaultTreeIllustrationPoint = Ringtoets.Common.Data.IllustrationPoints.FaultTreeIllustrationPoint;
using HydraRingIllustrationPointTreeNode = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.IllustrationPointTreeNode;
using HydraRingStochast = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.Stochast;
using HydraRingFaultTreeIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.FaultTreeIllustrationPoint;
@@ -38,10 +36,6 @@
using TestHydraRingFaultTreeIllustrationPoint = Ringtoets.HydraRing.Calculation.TestUtil.IllustrationPoints.TestFaultTreeIllustrationPoint;
using HydraRingCombinationType = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.CombinationType;
using HydraRingIIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.IIllustrationPoint;
-using IllustrationPointResult = Ringtoets.Common.Data.IllustrationPoints.IllustrationPointResult;
-using Stochast = Ringtoets.Common.Data.IllustrationPoints.Stochast;
-using SubMechanismIllustrationPoint = Ringtoets.Common.Data.IllustrationPoints.SubMechanismIllustrationPoint;
-using SubMechanismIllustrationPointStochast = Ringtoets.Common.Data.IllustrationPoints.SubMechanismIllustrationPointStochast;
namespace Ringtoets.Common.Service.Test.IllustrationPoints
{
@@ -173,6 +167,12 @@
var exception = Assert.Throws(call);
string expectedMessage = $"An illustration point containing a Hydra ring data type of {hydraRingIllustrationPointData.GetType()} is not supported.";
Assert.AreEqual(expectedMessage, exception.Message);
+
+ string expectedMessageInnerException = $"Cannot convert {hydraRingIllustrationPointData.GetType()}.";
+ Exception innerException = exception.InnerException;
+ Assert.IsNotNull(innerException);
+ Assert.IsInstanceOf(innerException);
+ Assert.AreEqual(expectedMessageInnerException, innerException.Message);
}
[Test]
@@ -201,6 +201,12 @@
var exception = Assert.Throws(call);
string expectedMessage = $"An illustration point containing a Hydra ring data type of {typeof(TestHydraRingIllustrationPointData)} is not supported.";
Assert.AreEqual(expectedMessage, exception.Message);
+
+ string expectedMessageInnerException = $"Cannot convert {typeof(TestHydraRingIllustrationPointData)}.";
+ Exception innerException = exception.InnerException;
+ Assert.IsNotNull(innerException);
+ Assert.IsInstanceOf(innerException);
+ Assert.AreEqual(expectedMessageInnerException, innerException.Message);
}
private class TestHydraRingIllustrationPointData : HydraRingIIllustrationPoint {}