Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs =================================================================== diff -u -r7adbef09fbecce1346da6e8421e1d5f0239847a1 -rec912afa912e6b031f1002079be941f19dbfbc88 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs) (revision 7adbef09fbecce1346da6e8421e1d5f0239847a1) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs) (revision ec912afa912e6b031f1002079be941f19dbfbc88) @@ -20,6 +20,8 @@ // All rights reserved. using System; +using System.Collections.Generic; +using Ringtoets.AssemblyTool.Data; using Ringtoets.AssemblyTool.IO.Model; using Ringtoets.AssemblyTool.IO.Model.DataTypes; using Ringtoets.AssemblyTool.IO.Model.Enums; @@ -187,33 +189,73 @@ private static SerializableFailureMechanismSectionAssemblyResult[] CreateAssemblySectionResults(ExportableAggregatedFailureMechanismSectionAssemblyResult sectionResult) { - return new[] + var serializableSectionAssemblyResults = new List(); + + if (sectionResult.SimpleAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) { - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.SimpleAssessment, sectionResult.SimpleAssembly), - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.DetailedAssessment, sectionResult.DetailedAssembly), - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.TailorMadeAssessment, sectionResult.TailorMadeAssembly) - }; + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.SimpleAssessment, + sectionResult.SimpleAssembly)); + } + + if (sectionResult.DetailedAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) + { + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.DetailedAssessment, + sectionResult.DetailedAssembly)); + } + + if (sectionResult.TailorMadeAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) + { + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.TailorMadeAssessment, + sectionResult.TailorMadeAssembly)); + } + + return serializableSectionAssemblyResults.ToArray(); } private static SerializableFailureMechanismSectionAssemblyResult[] CreateAssemblySectionResults( ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability sectionResult) { - return new[] + var serializableSectionAssemblyResults = new List(); + + if (sectionResult.SimpleAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) { - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.SimpleAssessment, sectionResult.SimpleAssembly), - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.DetailedAssessment, sectionResult.DetailedAssembly), - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.TailorMadeAssessment, sectionResult.TailorMadeAssembly) - }; + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.SimpleAssessment, + sectionResult.SimpleAssembly)); + } + + if (sectionResult.DetailedAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) + { + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.DetailedAssessment, + sectionResult.DetailedAssembly)); + } + + if (sectionResult.TailorMadeAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) + { + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.TailorMadeAssessment, + sectionResult.TailorMadeAssembly)); + } + + return serializableSectionAssemblyResults.ToArray(); } private static SerializableFailureMechanismSectionAssemblyResult[] CreateAssemblySectionResults( ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly sectionResult) { - return new[] + var serializableSectionAssemblyResults = new List(); + + if (sectionResult.SimpleAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) { - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.SimpleAssessment, sectionResult.SimpleAssembly), - SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.TailorMadeAssessment, sectionResult.TailorMadeAssembly) - }; + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.SimpleAssessment, + sectionResult.SimpleAssembly)); + } + + if (sectionResult.TailorMadeAssembly.AssemblyCategory != FailureMechanismSectionAssemblyCategoryGroup.None) + { + serializableSectionAssemblyResults.Add(SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.TailorMadeAssessment, + sectionResult.TailorMadeAssembly)); + } + + return serializableSectionAssemblyResults.ToArray(); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs =================================================================== diff -u -r19043242cabb3c29ab5956da83245f300427767c -rec912afa912e6b031f1002079be941f19dbfbc88 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs) (revision 19043242cabb3c29ab5956da83245f300427767c) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs) (revision ec912afa912e6b031f1002079be941f19dbfbc88) @@ -109,7 +109,7 @@ } [Test] - public void CreateWithoutProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() + public void CreateWithoutProbability_WithValidArgumentsAndAllAssemblyTypesHaveResults_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() { // Setup var idGenerator = new UniqueIdentifierGenerator(); @@ -162,6 +162,81 @@ } [Test] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIv, FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.None, + TestName = "SimpleAssembly")] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.IIv, FailureMechanismSectionAssemblyCategoryGroup.None, + TestName = "DetailedAssembly")] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.IIv, + TestName = "TailorMadeAssembly")] + public void CreateWithoutProbability_WithValidArgumentsAndOneAssemblyTypeHasResult_ReturnsAggregatedSerializableFailureMechanismSectionAssembly( + FailureMechanismSectionAssemblyCategoryGroup simpleAssemblyCategoryGroup, + FailureMechanismSectionAssemblyCategoryGroup detailedAssemblyCategoryGroup, + FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssemblyCategoryGroup) + { + // Setup + var idGenerator = new UniqueIdentifierGenerator(); + var sectionResult = new ExportableAggregatedFailureMechanismSectionAssemblyResult( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResult(simpleAssemblyCategoryGroup), + CreateSectionAssemblyResult(detailedAssemblyCategoryGroup), + CreateSectionAssemblyResult(tailorMadeAssemblyCategoryGroup), + CreateSectionAssemblyResult(13)); + + var random = new Random(21); + const string serializableFailureMechanismId = "FailureMechanismId"; + var serializableFailureMechanism = new SerializableFailureMechanism(serializableFailureMechanismId, + new SerializableTotalAssemblyResult(), + random.NextEnumValue(), + random.NextEnumValue(), + new SerializableFailureMechanismAssemblyResult()); + + const string serializableSectionCollectionId = "CollectionId"; + var serializableCollection = new SerializableFailureMechanismSectionCollection(serializableSectionCollectionId, + serializableFailureMechanism); + + // Call + AggregatedSerializableFailureMechanismSectionAssembly aggregatedSectionAssembly = + AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, sectionResult); + + // Assert + SerializableFailureMechanismSectionAssembly failureMechanismSectionAssembly = aggregatedSectionAssembly.FailureMechanismSectionAssembly; + Assert.AreEqual("T.1", failureMechanismSectionAssembly.Id); + Assert.AreEqual(serializableFailureMechanism.Id, failureMechanismSectionAssembly.FailureMechanismId); + + SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = failureMechanismSectionAssembly.SectionResults; + Assert.AreEqual(1, serializedSectionResults.Length); + + if (simpleAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.SimpleAssembly, + SerializableAssessmentType.SimpleAssessment, + serializedSectionResults[0]); + } + + if (detailedAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.DetailedAssembly, + SerializableAssessmentType.DetailedAssessment, + serializedSectionResults[0]); + } + + if (tailorMadeAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.TailorMadeAssembly, + SerializableAssessmentType.TailorMadeAssessment, + serializedSectionResults[0]); + } + + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.CombinedAssembly, + SerializableAssessmentType.CombinedAssessment, + failureMechanismSectionAssembly.CombinedSectionResult); + + SerializableFailureMechanismSectionTestHelper.AssertFailureMechanismSection(sectionResult.FailureMechanismSection, + serializableCollection, + aggregatedSectionAssembly.FailureMechanismSection); + } + + [Test] public void CreateWithProbability_IdGeneratorNull_ThrowsArgumentNullException() { // Call @@ -233,7 +308,7 @@ } [Test] - public void CreateWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() + public void CreateWithProbability_WithValidArgumentsAndAllAssemblyTypesHaveResults_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() { // Setup var idGenerator = new UniqueIdentifierGenerator(); @@ -286,6 +361,81 @@ } [Test] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIv, FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.None, + TestName = "SimpleAssembly")] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.IIv, FailureMechanismSectionAssemblyCategoryGroup.None, + TestName = "DetailedAssembly")] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.IIv, + TestName = "TailorMadeAssembly")] + public void CreateWithProbability_WithValidArgumentsAndOneAssemblyTypeHasResult_ReturnsAggregatedSerializableFailureMechanismSectionAssembly( + FailureMechanismSectionAssemblyCategoryGroup simpleAssemblyCategoryGroup, + FailureMechanismSectionAssemblyCategoryGroup detailedAssemblyCategoryGroup, + FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssemblyCategoryGroup) + { + // Setup + var idGenerator = new UniqueIdentifierGenerator(); + var sectionResult = new ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResultWithProbability(simpleAssemblyCategoryGroup), + CreateSectionAssemblyResultWithProbability(detailedAssemblyCategoryGroup), + CreateSectionAssemblyResultWithProbability(tailorMadeAssemblyCategoryGroup), + CreateSectionAssemblyResultWithProbability(13)); + + var random = new Random(21); + const string serializableFailureMechanismId = "FailureMechanismId"; + var serializableFailureMechanism = new SerializableFailureMechanism(serializableFailureMechanismId, + new SerializableTotalAssemblyResult(), + random.NextEnumValue(), + random.NextEnumValue(), + new SerializableFailureMechanismAssemblyResult()); + + const string serializableSectionCollectionId = "CollectionId"; + var serializableCollection = new SerializableFailureMechanismSectionCollection(serializableSectionCollectionId, + serializableFailureMechanism); + + // Call + AggregatedSerializableFailureMechanismSectionAssembly aggregatedSectionAssembly = + AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, sectionResult); + + // Assert + SerializableFailureMechanismSectionAssembly failureMechanismSectionAssembly = aggregatedSectionAssembly.FailureMechanismSectionAssembly; + Assert.AreEqual("T.1", failureMechanismSectionAssembly.Id); + Assert.AreEqual(serializableFailureMechanism.Id, failureMechanismSectionAssembly.FailureMechanismId); + + SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = failureMechanismSectionAssembly.SectionResults; + Assert.AreEqual(1, serializedSectionResults.Length); + + if (simpleAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.SimpleAssembly, + SerializableAssessmentType.SimpleAssessment, + serializedSectionResults[0]); + } + + if (detailedAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.DetailedAssembly, + SerializableAssessmentType.DetailedAssessment, + serializedSectionResults[0]); + } + + if (tailorMadeAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.TailorMadeAssembly, + SerializableAssessmentType.TailorMadeAssessment, + serializedSectionResults[0]); + } + + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.CombinedAssembly, + SerializableAssessmentType.CombinedAssessment, + failureMechanismSectionAssembly.CombinedSectionResult); + + SerializableFailureMechanismSectionTestHelper.AssertFailureMechanismSection(sectionResult.FailureMechanismSection, + serializableCollection, + aggregatedSectionAssembly.FailureMechanismSection); + } + + [Test] public void CreateWithoutDetailedAssembly_IdGeneratorNull_ThrowsArgumentNullException() { // Call @@ -354,7 +504,7 @@ } [Test] - public void CreateWithoutDetailedAssembly_WithValidArguments_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() + public void CreateWithoutDetailedAssembly_WithValidArgumentsAndAllAssemblyTypesHaveResults_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() { // Setup var idGenerator = new UniqueIdentifierGenerator(); @@ -402,6 +552,70 @@ aggregatedSectionAssembly.FailureMechanismSection); } + [Test] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIv, FailureMechanismSectionAssemblyCategoryGroup.None, + TestName = "SimpleAssembly")] + [TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.IIv, + TestName = "TailorMadeAssembly")] + public void CreateWithoutDetailedAssembly_WithValidArgumentsAndOneAssemblyTypeHasResult_ReturnsAggregatedSerializableFailureMechanismSectionAssembly( + FailureMechanismSectionAssemblyCategoryGroup simpleAssemblyCategoryGroup, + FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssemblyCategoryGroup) + { + // Setup + var idGenerator = new UniqueIdentifierGenerator(); + var sectionResult = new ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResultWithProbability(simpleAssemblyCategoryGroup), + CreateSectionAssemblyResultWithProbability(tailorMadeAssemblyCategoryGroup), + CreateSectionAssemblyResultWithProbability(13)); + + var random = new Random(21); + const string serializableFailureMechanismId = "FailureMechanismId"; + var serializableFailureMechanism = new SerializableFailureMechanism(serializableFailureMechanismId, + new SerializableTotalAssemblyResult(), + random.NextEnumValue(), + random.NextEnumValue(), + new SerializableFailureMechanismAssemblyResult()); + + const string serializableSectionCollectionId = "CollectionId"; + var serializableCollection = new SerializableFailureMechanismSectionCollection(serializableSectionCollectionId, + serializableFailureMechanism); + + // Call + AggregatedSerializableFailureMechanismSectionAssembly aggregatedSectionAssembly = + AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, sectionResult); + + // Assert + SerializableFailureMechanismSectionAssembly failureMechanismSectionAssembly = aggregatedSectionAssembly.FailureMechanismSectionAssembly; + Assert.AreEqual("T.1", failureMechanismSectionAssembly.Id); + Assert.AreEqual(serializableFailureMechanism.Id, failureMechanismSectionAssembly.FailureMechanismId); + + SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = failureMechanismSectionAssembly.SectionResults; + Assert.AreEqual(1, serializedSectionResults.Length); + + if (simpleAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.SimpleAssembly, + SerializableAssessmentType.SimpleAssessment, + serializedSectionResults[0]); + } + + if (tailorMadeAssemblyCategoryGroup != FailureMechanismSectionAssemblyCategoryGroup.None) + { + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.TailorMadeAssembly, + SerializableAssessmentType.TailorMadeAssessment, + serializedSectionResults[0]); + } + + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(sectionResult.CombinedAssembly, + SerializableAssessmentType.CombinedAssessment, + failureMechanismSectionAssembly.CombinedSectionResult); + + SerializableFailureMechanismSectionTestHelper.AssertFailureMechanismSection(sectionResult.FailureMechanismSection, + serializableCollection, + aggregatedSectionAssembly.FailureMechanismSection); + } + private static ExportableSectionAssemblyResult CreateSectionAssemblyResult(int seed) { var random = new Random(seed); @@ -415,6 +629,13 @@ assemblyCategory); } + private static ExportableSectionAssemblyResult CreateSectionAssemblyResult(FailureMechanismSectionAssemblyCategoryGroup assemblyCategory) + { + var random = new Random(21); + return new ExportableSectionAssemblyResult(random.NextEnumValue(), + assemblyCategory); + } + private static ExportableSectionAssemblyResultWithProbability CreateSectionAssemblyResultWithProbability(int seed) { var random = new Random(seed); @@ -428,5 +649,14 @@ assemblyCategory, random.NextDouble()); } + + private static ExportableSectionAssemblyResultWithProbability CreateSectionAssemblyResultWithProbability( + FailureMechanismSectionAssemblyCategoryGroup assemblyCategory) + { + var random = new Random(21); + return new ExportableSectionAssemblyResultWithProbability(random.NextEnumValue(), + assemblyCategory, + random.NextDouble()); + } } } \ No newline at end of file