Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs
===================================================================
diff -u -ra71b1ceb1838d97cabf3abad83710ce49f9dced9 -r8d91ecbc49d0293111c03893d1751283e5360039
--- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision a71b1ceb1838d97cabf3abad83710ce49f9dced9)
+++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision 8d91ecbc49d0293111c03893d1751283e5360039)
@@ -21,6 +21,7 @@
using System;
using System.Linq;
+using Ringtoets.AssemblyTool.Data;
using Ringtoets.AssemblyTool.IO.Model;
using Ringtoets.Integration.IO.AggregatedSerializable;
using Ringtoets.Integration.IO.Assembly;
@@ -46,7 +47,7 @@
/// Thrown when any parameter is null.
/// Thrown when the assembly result cannot be created.
/// Thrown when the
- /// contains unsupported items in the failure mechanism section assembly results.
+ /// contains unsupported items in the failure mechanism (section) assembly results.
public static AggregatedSerializableFailureMechanism Create(IdentifierGenerator idGenerator,
SerializableTotalAssemblyResult serializableTotalAssemblyResult,
ExportableFailureMechanism failureMechanism)
@@ -66,6 +67,8 @@
throw new ArgumentNullException(nameof(failureMechanism));
}
+ ValidateFailureMechanismAssemblyResult(failureMechanism.FailureMechanismAssembly);
+
SerializableFailureMechanism serializableFailureMechanism = SerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssemblyResult, failureMechanism);
var serializableCollection = new SerializableFailureMechanismSectionCollection(idGenerator.GetNewId(Resources.SerializableFailureMechanismSectionCollection_IdPrefix));
@@ -94,7 +97,7 @@
/// Thrown when any parameter is null.
/// Thrown when the assembly result cannot be created.
/// Thrown when the
- /// contains unsupported items in the failure mechanism section assembly results.
+ /// contains unsupported items in the failure mechanism (section) assembly results.
public static AggregatedSerializableFailureMechanism Create(IdentifierGenerator idGenerator,
SerializableTotalAssemblyResult serializableTotalAssemblyResult,
ExportableFailureMechanism failureMechanism)
@@ -114,6 +117,8 @@
throw new ArgumentNullException(nameof(failureMechanism));
}
+ ValidateFailureMechanismAssemblyResult(failureMechanism.FailureMechanismAssembly);
+
SerializableFailureMechanism serializableFailureMechanism = SerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssemblyResult, failureMechanism);
var serializableCollection = new SerializableFailureMechanismSectionCollection(idGenerator.GetNewId(Resources.SerializableFailureMechanismSectionCollection_IdPrefix));
@@ -131,7 +136,22 @@
serializableFailureMechanismSectionAssemblyResults.Select(fmr => fmr.FailureMechanismSectionAssembly));
}
+
///
+ /// Validates whether an is valid to be created.
+ ///
+ /// The to validate.
+ /// Thrown when
+ /// is invalid to create.
+ private static void ValidateFailureMechanismAssemblyResult(ExportableFailureMechanismAssemblyResult assemblyResult)
+ {
+ if (assemblyResult.AssemblyCategory == FailureMechanismAssemblyCategoryGroup.None)
+ {
+ throw new AssemblyCreatorException(@"The assembly result is invalid and cannot be created.");
+ }
+ }
+
+ ///
/// Creates an instance of based on its input parameters.
///
/// The id generator to generate the id for the serializable components.
Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs
===================================================================
diff -u -ra71b1ceb1838d97cabf3abad83710ce49f9dced9 -r8d91ecbc49d0293111c03893d1751283e5360039
--- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs) (revision a71b1ceb1838d97cabf3abad83710ce49f9dced9)
+++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs) (revision 8d91ecbc49d0293111c03893d1751283e5360039)
@@ -198,7 +198,7 @@
}
///
- /// Validates whether an is valid to export.
+ /// Validates whether an is valid to be created.
///
/// The to validate.
/// Thrown when
Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismCreatorTest.cs
===================================================================
diff -u -rc2889f9bc178f329da2719bf6655334835720c01 -r8d91ecbc49d0293111c03893d1751283e5360039
--- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismCreatorTest.cs (.../AggregatedSerializableFailureMechanismCreatorTest.cs) (revision c2889f9bc178f329da2719bf6655334835720c01)
+++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismCreatorTest.cs (.../AggregatedSerializableFailureMechanismCreatorTest.cs) (revision 8d91ecbc49d0293111c03893d1751283e5360039)
@@ -32,6 +32,7 @@
using Ringtoets.Integration.IO.AggregatedSerializable;
using Ringtoets.Integration.IO.Assembly;
using Ringtoets.Integration.IO.Creators;
+using Ringtoets.Integration.IO.Exceptions;
using Ringtoets.Integration.IO.Helpers;
using Ringtoets.Integration.IO.TestUtil;
@@ -121,6 +122,28 @@
}
[Test]
+ public void CreateFailureMechanismWithoutProbability_FailureMechanismAssemblyResultNone_ThrowsAssemblyCreatorException()
+ {
+ // Setup
+ var random = new Random(21);
+ var failureMechanism = new ExportableFailureMechanism(
+ new ExportableFailureMechanismAssemblyResult(random.NextEnumValue(),
+ FailureMechanismAssemblyCategoryGroup.None),
+ Enumerable.Empty(),
+ random.NextEnumValue(),
+ random.NextEnumValue());
+
+ // Call
+ TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
+ new SerializableTotalAssemblyResult(),
+ failureMechanism);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("The assembly result is invalid and cannot be created.", exception.Message);
+ }
+
+ [Test]
[TestCaseSource(nameof(GetSectionAssemblyConfigurations))]
public void CreateFailureMechanismWithoutProbabilityAndSectionAssemblyResultsWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanism(
IEnumerable failureMechanismSections,
@@ -246,6 +269,29 @@
}
[Test]
+ public void CreateFailureMechanismWithProbability_FailureMechanismAssemblyResultNone_ThrowsAssemblyCreatorException()
+ {
+ // Setup
+ var random = new Random(21);
+ var failureMechanism = new ExportableFailureMechanism(
+ new ExportableFailureMechanismAssemblyResultWithProbability(random.NextEnumValue(),
+ FailureMechanismAssemblyCategoryGroup.None,
+ random.NextDouble()),
+ Enumerable.Empty(),
+ random.NextEnumValue(),
+ random.NextEnumValue());
+
+ // Call
+ TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
+ new SerializableTotalAssemblyResult(),
+ failureMechanism);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("The assembly result is invalid and cannot be created.", exception.Message);
+ }
+
+ [Test]
[TestCaseSource(nameof(GetSectionAssemblyConfigurations))]
public void CreateFailureMechanismWithProbabilityAndSectionAssemblyResultsWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanism(
IEnumerable failureMechanismSections,