Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs =================================================================== diff -u -r9ebd34ca30a20d1b480dd1c19df8a99f23ecbf28 -r3f282c2215f8aa9a287a6eba73868cbd0d30f7e5 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 9ebd34ca30a20d1b480dd1c19df8a99f23ecbf28) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 3f282c2215f8aa9a287a6eba73868cbd0d30f7e5) @@ -143,7 +143,9 @@ } } - public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult, double probability, IEnumerable categories) + public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult, + double probability, + IEnumerable categories) { return FailureMechanismSectionAssemblyCreator.Create(new FailureMechanismSectionAssemblyCategoryResult( FailureMechanismSectionCategoryGroup.VIIv, Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs =================================================================== diff -u -r2e324b133452743296fdec90f1e80af557c23c39 -r3f282c2215f8aa9a287a6eba73868cbd0d30f7e5 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs (.../FailureMechanismSectionAssemblyCalculatorStubTest.cs) (revision 2e324b133452743296fdec90f1e80af557c23c39) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs (.../FailureMechanismSectionAssemblyCalculatorStubTest.cs) (revision 3f282c2215f8aa9a287a6eba73868cbd0d30f7e5) @@ -56,6 +56,9 @@ Assert.AreEqual(0.0, calculator.TailorMadeAssessmentProbabilityInput); Assert.AreEqual((TailorMadeAssessmentResultType) 0, calculator.TailorMadeAssessmentResultInput); Assert.IsNull(calculator.TailorMadeAssessmentAssemblyOutput); + + Assert.IsNull(calculator.CombinedAssemblyInput); + Assert.IsNull(calculator.CombinedAssemblyOutput); } #region Simple Assessment @@ -372,5 +375,75 @@ } #endregion + + #region Combined Assembly + + [Test] + public void AssembleCombined_ThrowExceptionOnCalculateFalse_ReturnOutput() + { + // Setup + var random = new Random(39); + var tailorMadeAssembly = new FailureMechanismSectionAssembly( + random.NextDouble(), + random.NextEnumValue()); + + var calculator = new FailureMechanismSectionAssemblyCalculatorStub(); + + + // Call + FailureMechanismSectionAssembly combinedAssembly = calculator.AssembleCombined(null, null, tailorMadeAssembly); + + // Assert + Assert.AreSame(tailorMadeAssembly, combinedAssembly); + } + + [Test] + public void AssembleCombined_ThrowExceptionOnCalculateFalse_SetsInput() + { + // Setup + var random = new Random(39); + var simpleAssembly = new FailureMechanismSectionAssembly( + random.NextDouble(), + random.NextEnumValue()); + var detailedAssembly = new FailureMechanismSectionAssembly( + random.NextDouble(), + random.NextEnumValue()); + var tailorMadeAssembly = new FailureMechanismSectionAssembly( + random.NextDouble(), + random.NextEnumValue()); + + var calculator = new FailureMechanismSectionAssemblyCalculatorStub(); + + // Call + calculator.AssembleCombined(simpleAssembly, detailedAssembly, tailorMadeAssembly); + + // Assert + CollectionAssert.AreEqual(new[] + { + simpleAssembly, + detailedAssembly, + tailorMadeAssembly + }, calculator.CombinedAssemblyInput); + } + + [Test] + public void AssembleCombined_ThrowExceptionOnCalculateTrue_ThrowsFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + var calculator = new FailureMechanismSectionAssemblyCalculatorStub + { + ThrowExceptionOnCalculate = true + }; + + // Call + TestDelegate test = () => calculator.AssembleCombined(null, null, null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("Message", exception.Message); + Assert.IsNotNull(exception.InnerException); + } + + #endregion } } \ No newline at end of file Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs =================================================================== diff -u -r2e324b133452743296fdec90f1e80af557c23c39 -r3f282c2215f8aa9a287a6eba73868cbd0d30f7e5 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs (.../FailureMechanismSectionAssemblyCalculatorStub.cs) (revision 2e324b133452743296fdec90f1e80af557c23c39) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs (.../FailureMechanismSectionAssemblyCalculatorStub.cs) (revision 3f282c2215f8aa9a287a6eba73868cbd0d30f7e5) @@ -93,6 +93,16 @@ public IEnumerable TailorMadeAssessmentCategoriesInput { get; private set; } /// + /// Gets the output of the combined assembly calculation. + /// + public FailureMechanismSectionAssembly CombinedAssemblyOutput { get; private set; } + + /// + /// Gets the input of the combined assembly calculation. + /// + public IEnumerable CombinedAssemblyInput { get; private set; } + + /// /// Sets an indicator whether an exception must be thrown when performing a calculation. /// public bool ThrowExceptionOnCalculate { private get; set; } @@ -153,7 +163,9 @@ return DetailedAssessmentAssemblyOutput = new FailureMechanismSectionAssembly(0, FailureMechanismSectionAssemblyCategoryGroup.VIv); } - public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult, double probability, IEnumerable categories) + public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult, + double probability, + IEnumerable categories) { if (ThrowExceptionOnCalculate) { @@ -166,5 +178,24 @@ return TailorMadeAssessmentAssemblyOutput = new FailureMechanismSectionAssembly(1, FailureMechanismSectionAssemblyCategoryGroup.VIv); } + + public FailureMechanismSectionAssembly AssembleCombined(FailureMechanismSectionAssembly simpleAssembly, + FailureMechanismSectionAssembly detailedAssembly, + FailureMechanismSectionAssembly tailorMadeAssembly) + { + if (ThrowExceptionOnCalculate) + { + throw new FailureMechanismSectionAssemblyCalculatorException("Message", new Exception()); + } + + CombinedAssemblyInput = new List + { + simpleAssembly, + detailedAssembly, + tailorMadeAssembly + }; + + return CombinedAssemblyOutput = tailorMadeAssembly; + } } } \ No newline at end of file