Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs =================================================================== diff -u -r269a0fc57dea9891fa32f340098c3286395a5b08 -r10962f134fb2cef1f183d84dc99856c11531c181 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs) (revision 269a0fc57dea9891fa32f340098c3286395a5b08) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreator.cs) (revision 10962f134fb2cef1f183d84dc99856c11531c181) @@ -192,6 +192,108 @@ } /// + /// Creates an instance of + /// based on its input parameters. + /// + /// The id generator to generate an id for . + /// The the result belongs to. + /// The the result belongs to. + /// The to create an + /// for. + /// An . + /// Thrown when any parameter is null. + /// Thrown when is invalid to create a serializable counterpart for. + public static AggregatedSerializableFailureMechanismSectionAssembly Create(IdentifierGenerator idGenerator, + SerializableFailureMechanismSectionCollection serializableCollection, + SerializableFailureMechanism serializableFailureMechanism, + ExportableAggregatedFailureMechanismSectionAssemblyResultWithCombinedResultOnly sectionResult) + { + if (idGenerator == null) + { + throw new ArgumentNullException(nameof(idGenerator)); + } + + if (serializableCollection == null) + { + throw new ArgumentNullException(nameof(serializableCollection)); + } + + if (serializableFailureMechanism == null) + { + throw new ArgumentNullException(nameof(serializableFailureMechanism)); + } + + if (sectionResult == null) + { + throw new ArgumentNullException(nameof(sectionResult)); + } + + SerializableFailureMechanismSection failureMechanismSection = SerializableFailureMechanismSectionCreator.Create(idGenerator, + serializableCollection, + sectionResult.FailureMechanismSection); + + var failureMechanismSectionAssembly = new SerializableFailureMechanismSectionAssembly(idGenerator.GetNewId(Resources.SerializableFailureMechanismSectionAssembly_IdPrefix), + serializableFailureMechanism, + failureMechanismSection, + new SerializableFailureMechanismSectionAssemblyResult[0], + SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.CombinedAssessment, + sectionResult.CombinedAssembly)); + return new AggregatedSerializableFailureMechanismSectionAssembly(failureMechanismSection, + failureMechanismSectionAssembly); + } + + /// + /// Creates an instance of + /// based on its input parameters. + /// + /// The id generator to generate an id for . + /// The the result belongs to. + /// The the result belongs to. + /// The to create an + /// for. + /// An . + /// Thrown when any parameter is null. + /// Thrown when is invalid to create a serializable counterpart for. + public static AggregatedSerializableFailureMechanismSectionAssembly Create(IdentifierGenerator idGenerator, + SerializableFailureMechanismSectionCollection serializableCollection, + SerializableFailureMechanism serializableFailureMechanism, + ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbabilityAndCombinedResultOnly sectionResult) + { + if (idGenerator == null) + { + throw new ArgumentNullException(nameof(idGenerator)); + } + + if (serializableCollection == null) + { + throw new ArgumentNullException(nameof(serializableCollection)); + } + + if (serializableFailureMechanism == null) + { + throw new ArgumentNullException(nameof(serializableFailureMechanism)); + } + + if (sectionResult == null) + { + throw new ArgumentNullException(nameof(sectionResult)); + } + + SerializableFailureMechanismSection failureMechanismSection = SerializableFailureMechanismSectionCreator.Create(idGenerator, + serializableCollection, + sectionResult.FailureMechanismSection); + + var failureMechanismSectionAssembly = new SerializableFailureMechanismSectionAssembly(idGenerator.GetNewId(Resources.SerializableFailureMechanismSectionAssembly_IdPrefix), + serializableFailureMechanism, + failureMechanismSection, + new SerializableFailureMechanismSectionAssemblyResult[0], + SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.CombinedAssessment, + sectionResult.CombinedAssembly)); + return new AggregatedSerializableFailureMechanismSectionAssembly(failureMechanismSection, + failureMechanismSectionAssembly); + } + + /// /// Creates a collection of whether an based on . /// /// The to create a collection of Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs =================================================================== diff -u -r269a0fc57dea9891fa32f340098c3286395a5b08 -r10962f134fb2cef1f183d84dc99856c11531c181 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs) (revision 269a0fc57dea9891fa32f340098c3286395a5b08) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs (.../AggregatedSerializableFailureMechanismSectionAssemblyCreatorTest.cs) (revision 10962f134fb2cef1f183d84dc99856c11531c181) @@ -610,6 +610,205 @@ aggregatedSectionAssembly.FailureMechanismSection); } + [Test] + public void CreateWithCombinedResultOnly_IdGeneratorNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(null, + new SerializableFailureMechanismSectionCollection(), + new SerializableFailureMechanism(), + new ExportableAggregatedFailureMechanismSectionAssemblyResultWithCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResult(10))); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("idGenerator", exception.ParamName); + } + + [Test] + public void CreateWithCombinedResultOnly_SerializableFailureMechanismSectionCollectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(new IdentifierGenerator(), + null, + new SerializableFailureMechanism(), + new ExportableAggregatedFailureMechanismSectionAssemblyResultWithCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResult(10))); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("serializableCollection", exception.ParamName); + } + + [Test] + public void CreateWithCombinedResultOnly_SerializableFailureMechanismNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(new IdentifierGenerator(), + new SerializableFailureMechanismSectionCollection(), + null, + new ExportableAggregatedFailureMechanismSectionAssemblyResultWithCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResult(10))); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("serializableFailureMechanism", exception.ParamName); + } + + [Test] + public void CreateWithCombinedResultOnly_SectionResultNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(new IdentifierGenerator(), + new SerializableFailureMechanismSectionCollection(), + new SerializableFailureMechanism(), + (ExportableAggregatedFailureMechanismSectionAssemblyResultWithCombinedResultOnly) null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("sectionResult", exception.ParamName); + } + + [Test] + public void CreateWithCombinedResultOnly_WithValidArgumentsAndAllAssemblyTypesHaveResults_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() + { + // Setup + var idGenerator = new IdentifierGenerator(); + var sectionResult = new ExportableAggregatedFailureMechanismSectionAssemblyResultWithCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResult(10)); + + 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); + + // Call + AggregatedSerializableFailureMechanismSectionAssembly aggregatedSectionAssembly = + AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, sectionResult); + + // Assert + SerializableFailureMechanismSectionAssembly failureMechanismSectionAssembly = aggregatedSectionAssembly.FailureMechanismSectionAssembly; + Assert.AreEqual("T.0", failureMechanismSectionAssembly.Id); + Assert.AreEqual(serializableFailureMechanism.Id, failureMechanismSectionAssembly.FailureMechanismId); + + CollectionAssert.IsEmpty(failureMechanismSectionAssembly.SectionResults); + SerializableFailureMechanismSectionTestHelper.AssertFailureMechanismSection(sectionResult.FailureMechanismSection, + serializableCollection, + aggregatedSectionAssembly.FailureMechanismSection); + } + + [Test] + public void CreateWithProbabilityAndCombinedResultOnly_IdGeneratorNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(null, + new SerializableFailureMechanismSectionCollection(), + new SerializableFailureMechanism(), + new ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbabilityAndCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResultWithProbability(10))); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("idGenerator", exception.ParamName); + } + + [Test] + public void CreateWithProbabilityAndCombinedResultOnly_SerializableFailureMechanismSectionCollectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(new IdentifierGenerator(), + null, + new SerializableFailureMechanism(), + new ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbabilityAndCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResultWithProbability(10))); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("serializableCollection", exception.ParamName); + } + + [Test] + public void CreateWithProbabilityAndCombinedResultOnly_SerializableFailureMechanismNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(new IdentifierGenerator(), + new SerializableFailureMechanismSectionCollection(), + null, + new ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbabilityAndCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResultWithProbability(10))); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("serializableFailureMechanism", exception.ParamName); + } + + [Test] + public void CreateWithProbabilityAndCombinedResultOnly_SectionResultNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(new IdentifierGenerator(), + new SerializableFailureMechanismSectionCollection(), + new SerializableFailureMechanism(), + (ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbabilityAndCombinedResultOnly) null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("sectionResult", exception.ParamName); + } + + [Test] + public void CreateWithProbabilityANdCombinedResultOnly_WithValidArgumentsAndAllAssemblyTypesHaveResults_ReturnsAggregatedSerializableFailureMechanismSectionAssembly() + { + // Setup + var idGenerator = new IdentifierGenerator(); + var sectionResult = new ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbabilityAndCombinedResultOnly( + ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection(), + CreateSectionAssemblyResultWithProbability(10)); + + 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); + + // Call + AggregatedSerializableFailureMechanismSectionAssembly aggregatedSectionAssembly = + AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, sectionResult); + + // Assert + SerializableFailureMechanismSectionAssembly failureMechanismSectionAssembly = aggregatedSectionAssembly.FailureMechanismSectionAssembly; + Assert.AreEqual("T.0", failureMechanismSectionAssembly.Id); + Assert.AreEqual(serializableFailureMechanism.Id, failureMechanismSectionAssembly.FailureMechanismId); + + CollectionAssert.IsEmpty(failureMechanismSectionAssembly.SectionResults); + + 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);