Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs =================================================================== diff -u -r821ea9c9eada82e432462f9be0390dd5b45ffb29 -rb741ba716e73996ab805398ae44a1bb3cd675fc9 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision 821ea9c9eada82e432462f9be0390dd5b45ffb29) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision b741ba716e73996ab805398ae44a1bb3cd675fc9) @@ -44,7 +44,7 @@ /// create an for. /// An . /// Thrown when any parameter is null. - /// Thrown when the serializable assembly cannot be created. + /// Thrown when the inputs are invalid to create a serializable counterpart for. /// Thrown when the /// contains unsupported items in the failure mechanism section assembly results. public static AggregatedSerializableFailureMechanism Create(IdentifierGenerator idGenerator, @@ -92,7 +92,7 @@ /// create an for. /// An . /// Thrown when any parameter is null. - /// Thrown when the serializable assembly cannot be created. + /// Thrown when the inputs are invalid to create a serializable counterpart for. /// Thrown when the /// contains unsupported items in the failure mechanism section assembly results. public static AggregatedSerializableFailureMechanism Create(IdentifierGenerator idGenerator, @@ -140,7 +140,7 @@ /// An aggregated failure mechanism section assembly result to /// create an for. /// An . - /// Thrown when the assembly result cannot be created. + /// Thrown when the inputs are invalid to create a serializable counterpart for. /// Thrown when an /// cannot be created for . private static AggregatedSerializableFailureMechanismSectionAssembly CreateFailureMechanismSectionAssembly( Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableAssemblyCreator.cs =================================================================== diff -u -r9c6a10855fb4ce6a5667226abc5a27308439c842 -rb741ba716e73996ab805398ae44a1bb3cd675fc9 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableAssemblyCreator.cs (.../SerializableAssemblyCreator.cs) (revision 9c6a10855fb4ce6a5667226abc5a27308439c842) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableAssemblyCreator.cs (.../SerializableAssemblyCreator.cs) (revision b741ba716e73996ab805398ae44a1bb3cd675fc9) @@ -46,7 +46,8 @@ /// A . /// Thrown when /// is null. - /// Thrown when the serializable assembly cannot be created. + /// Thrown when the is invalid + /// to create a serializable counterpart for. public static SerializableAssembly Create(ExportableAssessmentSection assessmentSection) { if (assessmentSection == null) Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableFailureMechanismCreator.cs =================================================================== diff -u -r3265c6b7b2cb65fd707b885d698bf106eb2a3307 -rb741ba716e73996ab805398ae44a1bb3cd675fc9 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableFailureMechanismCreator.cs (.../SerializableFailureMechanismCreator.cs) (revision 3265c6b7b2cb65fd707b885d698bf106eb2a3307) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableFailureMechanismCreator.cs (.../SerializableFailureMechanismCreator.cs) (revision b741ba716e73996ab805398ae44a1bb3cd675fc9) @@ -22,6 +22,7 @@ using System; using Ringtoets.AssemblyTool.IO.Model; using Ringtoets.Integration.IO.Assembly; +using Ringtoets.Integration.IO.Exceptions; using Ringtoets.Integration.IO.Helpers; using Ringtoets.Integration.IO.Properties; @@ -42,6 +43,8 @@ /// without a probability assembly result to create a for. /// A /// Thrown when any parameter is null. + /// Thrown when is invalid to + /// create a serializable counterpart for. public static SerializableFailureMechanism Create(IdentifierGenerator idGenerator, SerializableTotalAssemblyResult serializableTotalAssembly, ExportableFailureMechanism failureMechanism) @@ -78,6 +81,8 @@ /// with a probability assembly result to create a for. /// A . /// Thrown when any parameter is null. + /// Thrown when is invalid to + /// create a serializable counterpart for. public static SerializableFailureMechanism Create(IdentifierGenerator idGenerator, SerializableTotalAssemblyResult serializableTotalAssembly, ExportableFailureMechanism failureMechanism) Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableFailureMechanismResultCreator.cs =================================================================== diff -u -re8210040e3962fda1daa0ec9d90ecfb10e351eb3 -rb741ba716e73996ab805398ae44a1bb3cd675fc9 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableFailureMechanismResultCreator.cs (.../SerializableFailureMechanismResultCreator.cs) (revision e8210040e3962fda1daa0ec9d90ecfb10e351eb3) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/SerializableFailureMechanismResultCreator.cs (.../SerializableFailureMechanismResultCreator.cs) (revision b741ba716e73996ab805398ae44a1bb3cd675fc9) @@ -20,8 +20,10 @@ // All rights reserved. using System; +using Ringtoets.AssemblyTool.Data; using Ringtoets.AssemblyTool.IO.Model.DataTypes; using Ringtoets.Integration.IO.Assembly; +using Ringtoets.Integration.IO.Exceptions; namespace Ringtoets.Integration.IO.Creators { @@ -39,13 +41,16 @@ /// A . /// Thrown when /// is null. + /// Thrown when is invalid to create a serializable counterpart for. public static SerializableFailureMechanismAssemblyResult Create(ExportableFailureMechanismAssemblyResult result) { if (result == null) { throw new ArgumentNullException(nameof(result)); } + ValidateAssemblyResult(result); + return new SerializableFailureMechanismAssemblyResult(SerializableAssemblyMethodCreator.Create(result.AssemblyMethod), SerializableFailureMechanismCategoryGroupCreator.Create(result.AssemblyCategory)); } @@ -59,16 +64,33 @@ /// A . /// Thrown when /// is null. + /// Thrown when is invalid to create a serializable counterpart for. public static SerializableFailureMechanismAssemblyResult Create(ExportableFailureMechanismAssemblyResultWithProbability result) { if (result == null) { throw new ArgumentNullException(nameof(result)); } + ValidateAssemblyResult(result); + return new SerializableFailureMechanismAssemblyResult(SerializableAssemblyMethodCreator.Create(result.AssemblyMethod), SerializableFailureMechanismCategoryGroupCreator.Create(result.AssemblyCategory), result.Probability); } + + /// + /// Validates the to determine whether a serializable assembly result can be created. + /// + /// The to validate. + /// Thrown when is invalid + /// and a serializable assembly result cannot be created. + private static void ValidateAssemblyResult(ExportableFailureMechanismAssemblyResult result) + { + if (result.AssemblyCategory == FailureMechanismAssemblyCategoryGroup.None) + { + throw new AssemblyCreatorException(@"The assembly result is invalid and cannot be created."); + } + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/SerializableFailureMechanismResultCreatorTest.cs =================================================================== diff -u -r58cc931c9371c4aaed515fdef590cfc67b5303b6 -rb741ba716e73996ab805398ae44a1bb3cd675fc9 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/SerializableFailureMechanismResultCreatorTest.cs (.../SerializableFailureMechanismResultCreatorTest.cs) (revision 58cc931c9371c4aaed515fdef590cfc67b5303b6) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/SerializableFailureMechanismResultCreatorTest.cs (.../SerializableFailureMechanismResultCreatorTest.cs) (revision b741ba716e73996ab805398ae44a1bb3cd675fc9) @@ -26,6 +26,7 @@ using Ringtoets.AssemblyTool.IO.Model.DataTypes; using Ringtoets.Integration.IO.Assembly; using Ringtoets.Integration.IO.Creators; +using Ringtoets.Integration.IO.Exceptions; using Ringtoets.Integration.IO.TestUtil; namespace Ringtoets.Integration.IO.Test.Creators @@ -45,12 +46,38 @@ } [Test] + public void Create_WithFailureMechanismAssemblyResultNone_ThrowsAssemblyCreatorException() + { + // Setup + var random = new Random(21); + var result = new ExportableFailureMechanismAssemblyResult(random.NextEnumValue(), + FailureMechanismAssemblyCategoryGroup.None); + + // Call + TestDelegate call = () => SerializableFailureMechanismResultCreator.Create(result); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("The assembly result is invalid and cannot be created.", exception.Message); + } + + [Test] public void Create_WithFailureMechanismAssemblyResult_ReturnsSerializableFailureMechanismAssemblyResult() { // Setup var random = new Random(21); var result = new ExportableFailureMechanismAssemblyResult(random.NextEnumValue(), - random.NextEnumValue()); + random.NextEnumValue(new[] + { + FailureMechanismAssemblyCategoryGroup.NotApplicable, + FailureMechanismAssemblyCategoryGroup.It, + FailureMechanismAssemblyCategoryGroup.IIt, + FailureMechanismAssemblyCategoryGroup.IIIt, + FailureMechanismAssemblyCategoryGroup.IVt, + FailureMechanismAssemblyCategoryGroup.Vt, + FailureMechanismAssemblyCategoryGroup.VIt, + FailureMechanismAssemblyCategoryGroup.VIIt, + })); // Call SerializableFailureMechanismAssemblyResult serializableAssemblyResult = SerializableFailureMechanismResultCreator.Create(result); @@ -74,12 +101,39 @@ } [Test] + public void Create_WithFailureMechanismAssemblyResultWithProbabilityAndResultNone_ThrowsAssemblyCreatorException() + { + // Setup + var random = new Random(21); + var result = new ExportableFailureMechanismAssemblyResultWithProbability(random.NextEnumValue(), + FailureMechanismAssemblyCategoryGroup.None, + random.NextDouble()); + + // Call + TestDelegate call = () => SerializableFailureMechanismResultCreator.Create(result); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("The assembly result is invalid and cannot be created.", exception.Message); + } + + [Test] public void Create_WithFailureMechanismAssemblyResultWithProbability_ReturnsSerializableFailureMechanismAssemblyResult() { // Setup var random = new Random(21); var result = new ExportableFailureMechanismAssemblyResultWithProbability(random.NextEnumValue(), - random.NextEnumValue(), + random.NextEnumValue(new[] + { + FailureMechanismAssemblyCategoryGroup.NotApplicable, + FailureMechanismAssemblyCategoryGroup.It, + FailureMechanismAssemblyCategoryGroup.IIt, + FailureMechanismAssemblyCategoryGroup.IIIt, + FailureMechanismAssemblyCategoryGroup.IVt, + FailureMechanismAssemblyCategoryGroup.Vt, + FailureMechanismAssemblyCategoryGroup.VIt, + FailureMechanismAssemblyCategoryGroup.VIIt, + }), random.NextDouble()); // Call