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,