Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs
===================================================================
diff -u -r1fb8afd636f36c169e0e4ac3fa87472f372eb915 -ra4e95638762a7a1af29dd63dec477120c4faf249
--- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision 1fb8afd636f36c169e0e4ac3fa87472f372eb915)
+++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision a4e95638762a7a1af29dd63dec477120c4faf249)
@@ -20,7 +20,6 @@
// All rights reserved.
using System;
-using System.Collections.Generic;
using System.Linq;
using Ringtoets.AssemblyTool.IO.Model;
using Ringtoets.Integration.IO.Assembly;
@@ -33,31 +32,67 @@
///
public static class AggregatedSerializableFailureMechanismCreator
{
+ ///
+ /// Creates an instance of an based on its input parameters.
+ ///
+ /// The id generator to generate an id for the serializable components.
+ /// The the serializable components belong to.
+ /// The with a probability to
+ /// create a for.
+ /// A .
+ /// Thrown when any parameter is null.
+ /// Thrown when the
+ /// contains unsupported items in the failure mechanism section assembly results.
public static AggregatedSerializableFailureMechanism Create(UniqueIdentifierGenerator idGenerator,
- SerializableTotalAssemblyResult serializableTotalAssembly,
+ SerializableTotalAssemblyResult serializableTotalAssemblyResult,
ExportableFailureMechanism failureMechanism)
{
- SerializableFailureMechanism serializableFailureMechanism = SerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssembly, failureMechanism);
- var serializableCollection = new SerializableFailureMechanismSectionCollection(idGenerator.GetNewId("Vi"), serializableFailureMechanism);
+ if (idGenerator == null)
+ {
+ throw new ArgumentNullException(nameof(idGenerator));
+ }
- var serializableFailureMechanismSectionAssemblyResults = new List();
- foreach (ExportableAggregatedFailureMechanismSectionAssemblyResultBase sectionAssemblyResult in failureMechanism.SectionAssemblyResults)
+ if (serializableTotalAssemblyResult == null)
{
- serializableFailureMechanismSectionAssemblyResults.Add(CreateFailureMechanismSectionAssembly(idGenerator,
- serializableFailureMechanism,
- serializableCollection,
- sectionAssemblyResult));
+ throw new ArgumentNullException(nameof(serializableTotalAssemblyResult));
}
+ if (failureMechanism == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanism));
+ }
+
+ SerializableFailureMechanism serializableFailureMechanism = SerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssemblyResult, failureMechanism);
+ var serializableCollection = new SerializableFailureMechanismSectionCollection(idGenerator.GetNewId("Vi"), serializableFailureMechanism);
+
+ AggregatedSerializableFailureMechanismSectionAssembly[] serializableFailureMechanismSectionAssemblyResults =
+ failureMechanism.SectionAssemblyResults
+ .Select(sectionAssemblyResult => CreateFailureMechanismSectionAssembly(idGenerator,
+ serializableFailureMechanism,
+ serializableCollection,
+ sectionAssemblyResult))
+ .ToArray();
+
return new AggregatedSerializableFailureMechanism(serializableFailureMechanism,
serializableCollection,
serializableFailureMechanismSectionAssemblyResults.Select(fmr => fmr.FailureMechanismSection),
serializableFailureMechanismSectionAssemblyResults.Select(fmr => fmr.FailureMechanismSectionAssembly));
}
+ ///
+ /// Creates an instance of based on its input parameters.
+ ///
+ /// The id generator to generate the id for the serializable components.
+ /// The the section assembly belongs to.
+ /// The the section assembly belongs to.
+ /// An aggregated failure mechanism section assembly result to
+ /// create a for.
+ /// An .
+ /// Thrown when an
+ /// cannot be created for .
private static AggregatedSerializableFailureMechanismSectionAssembly CreateFailureMechanismSectionAssembly(
UniqueIdentifierGenerator idGenerator,
- SerializableFailureMechanism serializableFailureMechanism,
+ SerializableFailureMechanism serializableFailureMechanism,
SerializableFailureMechanismSectionCollection serializableCollection,
ExportableAggregatedFailureMechanismSectionAssemblyResultBase failureMechanismSectionAssemblyResult)
{
@@ -67,7 +102,19 @@
return AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, resultWithProbability);
}
- throw new NotSupportedException();
+ var resultWithoutProbability = failureMechanismSectionAssemblyResult as ExportableAggregatedFailureMechanismSectionAssemblyResult;
+ if (resultWithoutProbability != null)
+ {
+ return AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, resultWithoutProbability);
+ }
+
+ var resultWithoutDetailedAssembly = failureMechanismSectionAssemblyResult as ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly;
+ if (resultWithoutDetailedAssembly != null)
+ {
+ return AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, resultWithoutDetailedAssembly);
+ }
+
+ throw new NotSupportedException($"{failureMechanismSectionAssemblyResult.GetType().Name} is not supported.");
}
}
}
\ No newline at end of file
Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismCreatorTest.cs
===================================================================
diff -u -r1fb8afd636f36c169e0e4ac3fa87472f372eb915 -ra4e95638762a7a1af29dd63dec477120c4faf249
--- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismCreatorTest.cs (.../AggregatedSerializableFailureMechanismCreatorTest.cs) (revision 1fb8afd636f36c169e0e4ac3fa87472f372eb915)
+++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismCreatorTest.cs (.../AggregatedSerializableFailureMechanismCreatorTest.cs) (revision a4e95638762a7a1af29dd63dec477120c4faf249)
@@ -40,25 +40,101 @@
public class AggregatedSerializableFailureMechanismCreatorTest
{
[Test]
- public void CreateFailureMechanismWithProbabilityAndSectionAssemblyResultsWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanism()
+ public void CreateFailureMechanismWithProbability_IdGeneratorNull_ThrowsArgumentNullException()
{
// Setup
var random = new Random(21);
- ExportableFailureMechanismSection[] failureMechanismSections =
- {
- CreateSection(21),
- CreateSection(22)
- };
- ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability[] failureMechanismSectionResults =
- {
- CreateSectionResultWithProbability(failureMechanismSections[0]),
- CreateSectionResultWithProbability(failureMechanismSections[1])
- };
+ // Call
+ TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(null,
+ new SerializableTotalAssemblyResult(),
+ new ExportableFailureMechanism(
+ ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
+ Enumerable.Empty(),
+ Enumerable.Empty(),
+ random.NextEnumValue(),
+ random.NextEnumValue()));
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("idGenerator", exception.ParamName);
+ }
+
+ [Test]
+ public void CreateFailureMechanismWithProbability_TotalAssemblyResultNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ var random = new Random(21);
+
+ // Call
+ TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new UniqueIdentifierGenerator(),
+ null,
+ new ExportableFailureMechanism(
+ ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
+ Enumerable.Empty(),
+ Enumerable.Empty(),
+ random.NextEnumValue(),
+ random.NextEnumValue()));
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("serializableTotalAssemblyResult", exception.ParamName);
+ }
+
+ [Test]
+ public void CreateFailureMechanismWithProbability_FailureMechanismNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new UniqueIdentifierGenerator(),
+ new SerializableTotalAssemblyResult(),
+ null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("failureMechanism", exception.ParamName);
+ }
+
+ [Test]
+ public void CreateFailureMechanismWithProbability_WithUnsupportedAggregatedSectionResult_ThrowsNotSupportedException()
+ {
+ // Setup
+ var random = new Random(21);
+ ExportableFailureMechanismSection section = ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection();
+
var failureMechanism = new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
+ Enumerable.Empty(),
+ new[]
+ {
+ new UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult(section)
+ },
+ random.NextEnumValue(),
+ random.NextEnumValue());
+
+ // Call
+ TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new UniqueIdentifierGenerator(),
+ new SerializableTotalAssemblyResult(),
+ failureMechanism);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual($"{nameof(UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult)} is not supported.",
+ exception.Message);
+ }
+
+ [Test]
+ [TestCaseSource(nameof(GetSectionAssemblyConfigurations))]
+ public void CreateFailureMechanismWithProbabilityAndSectionAssemblyResultsWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanism(
+ IEnumerable failureMechanismSections,
+ IEnumerable failureMechanismSectionAssemblyResults,
+ Action assertSectionAssemblyResultsAction)
+ {
+ // Setup
+ var random = new Random(21);
+ var failureMechanism = new ExportableFailureMechanism(
+ ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
failureMechanismSections,
- failureMechanismSectionResults,
+ failureMechanismSectionAssemblyResults,
random.NextEnumValue(),
random.NextEnumValue());
@@ -88,22 +164,23 @@
Assert.AreEqual("Vi.1", serializableFailureMechanismSectionCollection.Id);
Assert.AreEqual(serializableFailureMechanism.Id, serializableFailureMechanismSectionCollection.FailureMechanismId);
- AssertFailureMechanismSections(2,
- failureMechanism,
- serializableFailureMechanismSectionCollection,
- serializableFailureMechanism,
- aggregatedFailureMechanism.FailureMechanismSections,
- aggregatedFailureMechanism.FailureMechanismSectionAssemblyResults,
- AssertSectionAssemblyResultsWithProbability);
+ AssertFailureMechanismSectionAssemblies(2,
+ failureMechanism,
+ serializableFailureMechanismSectionCollection,
+ serializableFailureMechanism,
+ aggregatedFailureMechanism.FailureMechanismSections,
+ aggregatedFailureMechanism.FailureMechanismSectionAssemblyResults,
+ assertSectionAssemblyResultsAction);
}
- private static void AssertFailureMechanismSections(int idStartIndex,
- ExportableFailureMechanism expectedFailureMechanism,
- SerializableFailureMechanismSectionCollection expectedSerializableFailureMechanismSectionCollection,
- SerializableFailureMechanism expectedSerializableFailureMechanism,
- IEnumerable serializableFailureMechanismSections,
- IEnumerable serializableFailureMechanismSectionAssemblies,
- Action assertSectionAssemblyResultAction)
+ private static void AssertFailureMechanismSectionAssemblies(
+ int idStartIndex,
+ ExportableFailureMechanism expectedFailureMechanism,
+ SerializableFailureMechanismSectionCollection expectedSerializableFailureMechanismSectionCollection,
+ SerializableFailureMechanism expectedSerializableFailureMechanism,
+ IEnumerable serializableFailureMechanismSections,
+ IEnumerable serializableFailureMechanismSectionAssemblies,
+ Action assertSectionAssemblyResultAction)
where T : ExportableFailureMechanismAssemblyResult
{
IEnumerable expectedSections = expectedFailureMechanism.Sections;
@@ -154,6 +231,120 @@
actualSectionAssemblyResult.CombinedSectionResult);
}
+ private static void AssertSectionAssemblyResultsWithoutProbability(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
+ SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
+ {
+ var expectedSectionAssemblyResultWithoutProbability = (ExportableAggregatedFailureMechanismSectionAssemblyResult) expectedSectionAssemblyResult;
+
+ SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = actualSectionAssemblyResult.SectionResults;
+ Assert.AreEqual(3, serializedSectionResults.Length);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.SimpleAssembly,
+ SerializableAssessmentType.SimpleAssessment,
+ serializedSectionResults[0]);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.DetailedAssembly,
+ SerializableAssessmentType.DetailedAssessment,
+ serializedSectionResults[1]);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.TailorMadeAssembly,
+ SerializableAssessmentType.TailorMadeAssessment,
+ serializedSectionResults[2]);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.CombinedAssembly,
+ SerializableAssessmentType.CombinedAssessment,
+ actualSectionAssemblyResult.CombinedSectionResult);
+ }
+
+ private static void AssertSectionAssemblyResultsWithoutDetailedAssembly(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
+ SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
+ {
+ var expectedSectionAssemblyResultWithoutProbability = (ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly) expectedSectionAssemblyResult;
+
+ SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = actualSectionAssemblyResult.SectionResults;
+ Assert.AreEqual(2, serializedSectionResults.Length);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.SimpleAssembly,
+ SerializableAssessmentType.SimpleAssessment,
+ serializedSectionResults[0]);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.TailorMadeAssembly,
+ SerializableAssessmentType.TailorMadeAssessment,
+ serializedSectionResults[1]);
+ AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.CombinedAssembly,
+ SerializableAssessmentType.CombinedAssessment,
+ actualSectionAssemblyResult.CombinedSectionResult);
+ }
+
+ private static void AssertAssemblyResult(ExportableSectionAssemblyResult expectedResult,
+ SerializableAssessmentType expectedAssessmentType,
+ SerializableFailureMechanismSectionAssemblyResult actualResult)
+ {
+ Assert.AreEqual(SerializableFailureMechanismSectionCategoryGroupCreator.Create(expectedResult.AssemblyCategory),
+ actualResult.CategoryGroup);
+ Assert.AreEqual(SerializableAssemblyMethodCreator.Create(expectedResult.AssemblyMethod),
+ actualResult.AssemblyMethod);
+ Assert.AreEqual(expectedAssessmentType, actualResult.AssessmentType);
+ Assert.IsNull(actualResult.Probability);
+ }
+
+ private static void AssertAssemblyResult(ExportableSectionAssemblyResultWithProbability expectedResult,
+ SerializableAssessmentType expectedAssessmentType,
+ SerializableFailureMechanismSectionAssemblyResult actualResult)
+ {
+ Assert.AreEqual(SerializableFailureMechanismSectionCategoryGroupCreator.Create(expectedResult.AssemblyCategory),
+ actualResult.CategoryGroup);
+ Assert.AreEqual(SerializableAssemblyMethodCreator.Create(expectedResult.AssemblyMethod),
+ actualResult.AssemblyMethod);
+ Assert.AreEqual(expectedAssessmentType, actualResult.AssessmentType);
+ Assert.AreEqual(expectedResult.Probability, actualResult.Probability);
+ }
+
+ private static SerializableTotalAssemblyResult CreateSerializableTotalAssembly(string totalAssemblyId)
+ {
+ return new SerializableTotalAssemblyResult(totalAssemblyId,
+ new SerializableAssessmentProcess(),
+ new SerializableFailureMechanismAssemblyResult(),
+ new SerializableFailureMechanismAssemblyResult(),
+ new SerializableAssessmentSectionAssemblyResult());
+ }
+
+ private static IEnumerable GetSectionAssemblyConfigurations()
+ {
+ ExportableFailureMechanismSection[] failureMechanismSections =
+ {
+ CreateSection(21),
+ CreateSection(22)
+ };
+
+ ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability[] failureMechanismSectionResultsWithProbability =
+ {
+ CreateSectionResultWithProbability(failureMechanismSections[0]),
+ CreateSectionResultWithProbability(failureMechanismSections[1])
+ };
+ yield return new TestCaseData(failureMechanismSections,
+ failureMechanismSectionResultsWithProbability,
+ new Action(AssertSectionAssemblyResultsWithProbability))
+ .SetName("SectionAssemblyResults with probability");
+
+ ExportableAggregatedFailureMechanismSectionAssemblyResult[] failureMechanismSectionResultsWithoutProbability =
+ {
+ CreateSectionResultWithoutProbability(failureMechanismSections[0]),
+ CreateSectionResultWithoutProbability(failureMechanismSections[1])
+ };
+ yield return new TestCaseData(failureMechanismSections,
+ failureMechanismSectionResultsWithoutProbability,
+ new Action(AssertSectionAssemblyResultsWithoutProbability))
+ .SetName("SectionAssemblyResults without probability");
+
+ ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly[] failureMechanismSectionResultsWithoutDetailedAssembly =
+ {
+ CreateSectionResultWithoutDetailedAssembly(failureMechanismSections[0]),
+ CreateSectionResultWithoutDetailedAssembly(failureMechanismSections[1])
+ };
+ yield return new TestCaseData(failureMechanismSections,
+ failureMechanismSectionResultsWithoutDetailedAssembly,
+ new Action(AssertSectionAssemblyResultsWithoutDetailedAssembly))
+ .SetName("SectionAssemblyResults without detailed assessment");
+ }
+
private static ExportableFailureMechanismSection CreateSection(int seed)
{
var random = new Random(seed);
@@ -173,6 +364,23 @@
CreateSectionAssemblyResultWithProbability(13));
}
+ private static ExportableAggregatedFailureMechanismSectionAssemblyResult CreateSectionResultWithoutProbability(ExportableFailureMechanismSection section)
+ {
+ return new ExportableAggregatedFailureMechanismSectionAssemblyResult(section,
+ CreateSectionAssemblyResult(10),
+ CreateSectionAssemblyResult(11),
+ CreateSectionAssemblyResult(12),
+ CreateSectionAssemblyResult(13));
+ }
+
+ private static ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly CreateSectionResultWithoutDetailedAssembly(ExportableFailureMechanismSection section)
+ {
+ return new ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly(section,
+ CreateSectionAssemblyResult(10),
+ CreateSectionAssemblyResult(11),
+ CreateSectionAssemblyResult(12));
+ }
+
private static ExportableSectionAssemblyResult CreateSectionAssemblyResult(int seed)
{
var random = new Random(seed);
@@ -200,37 +408,9 @@
random.NextDouble());
}
- private static SerializableTotalAssemblyResult CreateSerializableTotalAssembly(string totalAssemblyId)
+ private class UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult : ExportableAggregatedFailureMechanismSectionAssemblyResultBase
{
- return new SerializableTotalAssemblyResult(totalAssemblyId,
- new SerializableAssessmentProcess(),
- new SerializableFailureMechanismAssemblyResult(),
- new SerializableFailureMechanismAssemblyResult(),
- new SerializableAssessmentSectionAssemblyResult());
+ public UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult(ExportableFailureMechanismSection failureMechanismSection) : base(failureMechanismSection) {}
}
-
- private static void AssertAssemblyResult(ExportableSectionAssemblyResult expectedResult,
- SerializableAssessmentType expectedAssessmentType,
- SerializableFailureMechanismSectionAssemblyResult actualResult)
- {
- Assert.AreEqual(SerializableFailureMechanismSectionCategoryGroupCreator.Create(expectedResult.AssemblyCategory),
- actualResult.CategoryGroup);
- Assert.AreEqual(SerializableAssemblyMethodCreator.Create(expectedResult.AssemblyMethod),
- actualResult.AssemblyMethod);
- Assert.AreEqual(expectedAssessmentType, actualResult.AssessmentType);
- Assert.IsNull(actualResult.Probability);
- }
-
- private static void AssertAssemblyResult(ExportableSectionAssemblyResultWithProbability expectedResult,
- SerializableAssessmentType expectedAssessmentType,
- SerializableFailureMechanismSectionAssemblyResult actualResult)
- {
- Assert.AreEqual(SerializableFailureMechanismSectionCategoryGroupCreator.Create(expectedResult.AssemblyCategory),
- actualResult.CategoryGroup);
- Assert.AreEqual(SerializableAssemblyMethodCreator.Create(expectedResult.AssemblyMethod),
- actualResult.AssemblyMethod);
- Assert.AreEqual(expectedAssessmentType, actualResult.AssessmentType);
- Assert.AreEqual(expectedResult.Probability, actualResult.Probability);
- }
}
}
\ No newline at end of file