Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismAssemblyFactory.cs =================================================================== diff -u -rc2a9f7c4c0f3e7959a9213020b44c3e0af27158d -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismAssemblyFactory.cs (.../ClosingStructuresFailureMechanismAssemblyFactory.cs) (revision c2a9f7c4c0f3e7959a9213020b44c3e0af27158d) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismAssemblyFactory.cs (.../ClosingStructuresFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,9 +20,12 @@ // All rights reserved. using System; +using System.Linq; +using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Exceptions; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Structures; namespace Riskeer.ClosingStructures.Data @@ -38,11 +41,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(ClosingStructuresFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(ClosingStructuresFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -54,9 +57,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => StructuresFailureMechanismAssemblyFactory.AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + StructuresFailureMechanismAssemblyFactory.AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Data.Test/ClosingStructuresFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Data.Test/ClosingStructuresFailureMechanismAssemblyFactoryTest.cs (.../ClosingStructuresFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Data.Test/ClosingStructuresFailureMechanismAssemblyFactoryTest.cs (.../ClosingStructuresFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -21,8 +21,10 @@ using System; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; +using Riskeer.AssemblyTool.Data; using Riskeer.AssemblyTool.KernelWrapper.Calculators; using Riskeer.AssemblyTool.KernelWrapper.Calculators.Assembly; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; @@ -109,7 +111,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new ClosingStructuresFailureMechanism { @@ -125,13 +126,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/AssemblyToolHelper.cs =================================================================== diff -u -re0e88197c86733745f1b318931865f58882504d4 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/AssemblyToolHelper.cs (.../AssemblyToolHelper.cs) (revision e0e88197c86733745f1b318931865f58882504d4) +++ Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/AssemblyToolHelper.cs (.../AssemblyToolHelper.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using System.Linq; using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.Exceptions; using Riskeer.Common.Data.FailureMechanism; @@ -65,51 +64,5 @@ return new DefaultFailureMechanismSectionAssemblyResult(); } } - - /// - /// Assembles the failure mechanism. - /// - /// The failure mechanism to assemble. - /// The to perform the failure mechanism section assembly. - /// The n value of the . - /// Indicator whether the failure mechanism section length effect is applied. - /// The type of section result. - /// The failure mechanism probability. - /// Thrown when - /// or is null. - /// Thrown when the failure mechanism could not be successfully assembled. - public static double AssemblyFailureMechanism( - IFailureMechanism failureMechanism, - Func performSectionAssemblyFunc, - double failureMechanismN, bool applyLengthEffect) - where TSectionResult : FailureMechanismSectionResult - { - if (failureMechanism == null) - { - throw new ArgumentNullException(nameof(failureMechanism)); - } - - if (performSectionAssemblyFunc == null) - { - throw new ArgumentNullException(nameof(performSectionAssemblyFunc)); - } - - if (!failureMechanism.InAssembly) - { - return double.NaN; - } - - FailureMechanismAssemblyResult assemblyResult = failureMechanism.AssemblyResult; - if (assemblyResult.ProbabilityResultType == FailureMechanismAssemblyProbabilityResultType.Manual) - { - return assemblyResult.ManualFailureMechanismAssemblyProbability; - } - - return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( - failureMechanismN, failureMechanism.SectionResults.Select(sr => AssembleFailureMechanismSection( - sr, performSectionAssemblyFunc)) - .ToArray(), - applyLengthEffect); - } } } \ No newline at end of file Index: Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/AssemblyToolHelperTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/AssemblyToolHelperTest.cs (.../AssemblyToolHelperTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/AssemblyToolHelperTest.cs (.../AssemblyToolHelperTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,17 +20,9 @@ // All rights reserved. using System; -using System.Linq; -using Core.Common.Base; using Core.Common.TestUtil; using NUnit.Framework; -using Rhino.Mocks; using Riskeer.AssemblyTool.Data; -using Riskeer.AssemblyTool.Data.TestUtil; -using Riskeer.AssemblyTool.KernelWrapper.Calculators; -using Riskeer.AssemblyTool.KernelWrapper.Calculators.Assembly; -using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; -using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators.Assembly; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.Exceptions; using Riskeer.Common.Data.FailureMechanism; @@ -99,262 +91,5 @@ // Assert Assert.IsInstanceOf(assemblyResult); } - - [Test] - public void AssembleFailureMechanism_FailureMechanismNull_ThrowsArgumentNullException() - { - // Call - void Call() => AssemblyToolHelper.AssemblyFailureMechanism( - null, sr => null, double.NaN, false); - - // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("failureMechanism", exception.ParamName); - } - - [Test] - public void AssembleFailureMechanism_PerformSectionAssemblyFuncNull_ThrowsArgumentNullException() - { - // Setup - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - mocks.ReplayAll(); - - // Call - void Call() => AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, null, double.NaN, false); - - // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("performSectionAssemblyFunc", exception.ParamName); - } - - [Test] - public void AssembleFailureMechanism_WithFailureMechanismInAssemblyFalse_ReturnsNaN() - { - // Setup - var random = new Random(21); - - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - mocks.ReplayAll(); - - failureMechanism.InAssembly = false; - - // Call - double assemblyResult = AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => null, random.NextDouble(), random.NextBoolean()); - - // Assert - Assert.IsNaN(assemblyResult); - mocks.VerifyAll(); - } - - [Test] - public void AssembleFailureMechanism_WithFailureMechanismInAssemblyAndProbabilityResultTypeManual_ReturnsExpectedAssemblyResult() - { - // Setup - var random = new Random(21); - double expectedAssemblyResult = random.NextDouble(); - - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - failureMechanism.Stub(fp => fp.AssemblyResult) - .Return(new FailureMechanismAssemblyResult - { - ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Manual, - ManualFailureMechanismAssemblyProbability = expectedAssemblyResult - }); - mocks.ReplayAll(); - - failureMechanism.InAssembly = true; - - // Call - double assemblyResult = AssemblyToolHelper.AssemblyFailureMechanism(failureMechanism, sr => null, double.NaN, random.NextBoolean()); - - // Assert - Assert.AreEqual(expectedAssemblyResult, assemblyResult); - mocks.VerifyAll(); - } - - [Test] - public void AssembleFailureMechanism_WithFailureMechanismInAssemblyAndProbabilityResultTypeAutomatic_InputCorrectlySetOnCalculator() - { - // Setup - var random = new Random(21); - double failureMechanismN = random.NextDouble(); - bool applyLenghtEffect = random.NextBoolean(); - - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - failureMechanism.Stub(fp => fp.AssemblyResult) - .Return(new FailureMechanismAssemblyResult - { - ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Automatic, - ManualFailureMechanismAssemblyProbability = double.NaN - }); - failureMechanism.Stub(fp => fp.SectionResults) - .Return(new ObservableList - { - new TestFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) - }); - mocks.ReplayAll(); - - failureMechanism.InAssembly = true; - - using (new AssemblyToolCalculatorFactoryConfig()) - { - var failureMechanismSectionAssemblyResult = new FailureMechanismSectionAssemblyResult( - random.NextDouble(), random.NextDouble(), random.NextDouble(), - random.NextEnumValue()); - - // Call - AssemblyToolHelper.AssemblyFailureMechanism(failureMechanism, sr => new FailureMechanismSectionAssemblyResultWrapper( - failureMechanismSectionAssemblyResult, random.NextEnumValue(), - random.NextEnumValue()), - failureMechanismN, applyLenghtEffect); - - // Assert - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismAssemblyCalculatorStub failureMechanismAssemblyCalculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - - CollectionAssert.AreEqual(new[] - { - failureMechanismSectionAssemblyResult - }, failureMechanismAssemblyCalculator.SectionAssemblyResultsInput); - Assert.AreEqual(failureMechanismN, failureMechanismAssemblyCalculator.FailureMechanismN); - Assert.AreEqual(applyLenghtEffect, failureMechanismAssemblyCalculator.ApplyLengthEffect); - } - - mocks.VerifyAll(); - } - - [Test] - public void AssembleFailureMechanism_WithFailureMechanismInAssemblyAndProbabilityResultTypeAutomaticAndFailureMechanismSectionAssemblyThrowsException_InputCorrectlySetOnCalculator() - { - // Setup - var random = new Random(21); - double failureMechanismN = random.NextDouble(); - bool applyLenghtEffect = random.NextBoolean(); - - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - failureMechanism.Stub(fp => fp.AssemblyResult) - .Return(new FailureMechanismAssemblyResult - { - ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Automatic, - ManualFailureMechanismAssemblyProbability = double.NaN - }); - failureMechanism.Stub(fp => fp.SectionResults) - .Return(new ObservableList - { - new TestFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) - }); - mocks.ReplayAll(); - - failureMechanism.InAssembly = true; - - using (new AssemblyToolCalculatorFactoryConfig()) - { - // Call - AssemblyToolHelper.AssemblyFailureMechanism(failureMechanism, sr => throw new AssemblyException(), - failureMechanismN, applyLenghtEffect); - - // Assert - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismAssemblyCalculatorStub failureMechanismAssemblyCalculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - - Assert.AreEqual(1, failureMechanismAssemblyCalculator.SectionAssemblyResultsInput.Count()); - Assert.IsInstanceOf(failureMechanismAssemblyCalculator.SectionAssemblyResultsInput.First()); - Assert.AreEqual(failureMechanismN, failureMechanismAssemblyCalculator.FailureMechanismN); - Assert.AreEqual(applyLenghtEffect, failureMechanismAssemblyCalculator.ApplyLengthEffect); - } - - mocks.VerifyAll(); - } - - [Test] - public void AssembleFailureMechanism_WithFailureMechanismInAssemblyAndProbabilityResultTypeAutomatic_ReturnsExpectedAssemblyResult() - { - // Setup - var random = new Random(21); - double expectedAssemblyResult = random.NextDouble(); - - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - failureMechanism.Stub(fp => fp.AssemblyResult) - .Return(new FailureMechanismAssemblyResult - { - ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Automatic, - ManualFailureMechanismAssemblyProbability = double.NaN - }); - failureMechanism.Stub(fp => fp.SectionResults) - .Return(new ObservableList - { - new TestFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) - }); - mocks.ReplayAll(); - - failureMechanism.InAssembly = true; - - using (new AssemblyToolCalculatorFactoryConfig()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismAssemblyCalculatorStub failureMechanismAssemblyCalculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - failureMechanismAssemblyCalculator.AssemblyResultOutput = expectedAssemblyResult; - - // Call - double assemblyResult = AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => FailureMechanismSectionAssemblyResultWrapperTestFactory.Create(), - double.NaN, random.NextBoolean()); - - // Assert - Assert.AreEqual(expectedAssemblyResult, assemblyResult); - } - - mocks.VerifyAll(); - } - - [Test] - public void AssembleFailureMechanism_WithFailureMechanismInAssemblyAndProbabilityResultTypeAutomaticAndFailureMechanismAssemblyThrowsException_ThrowsAssemblyException() - { - // Setup - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub>(); - failureMechanism.Stub(fp => fp.AssemblyResult) - .Return(new FailureMechanismAssemblyResult - { - ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Automatic, - ManualFailureMechanismAssemblyProbability = double.NaN - }); - failureMechanism.Stub(fp => fp.SectionResults) - .Return(new ObservableList - { - new TestFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) - }); - mocks.ReplayAll(); - - failureMechanism.InAssembly = true; - - using (new AssemblyToolCalculatorFactoryConfig()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismAssemblyCalculatorStub failureMechanismAssemblyCalculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - failureMechanismAssemblyCalculator.ThrowExceptionOnCalculate = true; - - // Call - void Call() => AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => FailureMechanismSectionAssemblyResultWrapperTestFactory.Create(), - double.NaN, false); - - // Assert - var exception = Assert.Throws(Call); - Exception innerException = exception.InnerException; - Assert.IsInstanceOf(innerException); - Assert.AreEqual(innerException.Message, exception.Message); - } - - mocks.VerifyAll(); - } } } \ No newline at end of file Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Data/DuneErosionFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r435fdcbbc57f38e7ac960ae201824e48aca9bc21 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Data/DuneErosionFailureMechanismAssemblyFactory.cs (.../DuneErosionFailureMechanismAssemblyFactory.cs) (revision 435fdcbbc57f38e7ac960ae201824e48aca9bc21) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Data/DuneErosionFailureMechanismAssemblyFactory.cs (.../DuneErosionFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,9 +20,12 @@ // All rights reserved. using System; +using System.Linq; +using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Exceptions; +using Riskeer.Common.Data.FailureMechanism; namespace Riskeer.DuneErosion.Data { @@ -37,11 +40,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(DuneErosionFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(DuneErosionFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -53,9 +56,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Data.Test/DuneErosionFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Data.Test/DuneErosionFailureMechanismAssemblyFactoryTest.cs (.../DuneErosionFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Data.Test/DuneErosionFailureMechanismAssemblyFactoryTest.cs (.../DuneErosionFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -21,8 +21,10 @@ using System; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; +using Riskeer.AssemblyTool.Data; using Riskeer.AssemblyTool.KernelWrapper.Calculators; using Riskeer.AssemblyTool.KernelWrapper.Calculators.Assembly; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; @@ -109,7 +111,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new DuneErosionFailureMechanism { @@ -125,13 +126,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismAssemblyFactory.cs (.../GrassCoverErosionInwardsFailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismAssemblyFactory.cs (.../GrassCoverErosionInwardsFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -78,11 +78,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(GrassCoverErosionInwardsFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(GrassCoverErosionInwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -94,9 +94,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsFailureMechanismAssemblyFactoryTest.cs (.../GrassCoverErosionInwardsFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsFailureMechanismAssemblyFactoryTest.cs (.../GrassCoverErosionInwardsFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -113,7 +113,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism { @@ -129,13 +128,15 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism( + failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/GrassCoverErosionOutwards/src/Riskeer.GrassCoverErosionOutwards.Data/GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/GrassCoverErosionOutwards/src/Riskeer.GrassCoverErosionOutwards.Data/GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.cs (.../GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/GrassCoverErosionOutwards/src/Riskeer.GrassCoverErosionOutwards.Data/GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.cs (.../GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; @@ -70,11 +71,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(GrassCoverErosionOutwardsFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(GrassCoverErosionOutwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -86,9 +87,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/GrassCoverErosionOutwards/test/Riskeer.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/GrassCoverErosionOutwards/test/Riskeer.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismAssemblyFactoryTest.cs (.../GrassCoverErosionOutwardsFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/GrassCoverErosionOutwards/test/Riskeer.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismAssemblyFactoryTest.cs (.../GrassCoverErosionOutwardsFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -271,7 +271,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism { @@ -287,13 +286,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r435fdcbbc57f38e7ac960ae201824e48aca9bc21 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanismAssemblyFactory.cs (.../HeightStructuresFailureMechanismAssemblyFactory.cs) (revision 435fdcbbc57f38e7ac960ae201824e48aca9bc21) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanismAssemblyFactory.cs (.../HeightStructuresFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,9 +20,12 @@ // All rights reserved. using System; +using System.Linq; +using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Exceptions; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Structures; namespace Riskeer.HeightStructures.Data @@ -38,11 +41,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(HeightStructuresFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(HeightStructuresFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -54,9 +57,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => StructuresFailureMechanismAssemblyFactory.AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + StructuresFailureMechanismAssemblyFactory.AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismAssemblyFactoryTest.cs (.../HeightStructuresFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismAssemblyFactoryTest.cs (.../HeightStructuresFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -21,8 +21,10 @@ using System; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; +using Riskeer.AssemblyTool.Data; using Riskeer.AssemblyTool.KernelWrapper.Calculators; using Riskeer.AssemblyTool.KernelWrapper.Calculators.Assembly; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; @@ -109,7 +111,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new HeightStructuresFailureMechanism { @@ -125,13 +126,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/Integration/src/Riskeer.Integration.Data/StandAlone/AssemblyFactories/FailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Integration/src/Riskeer.Integration.Data/StandAlone/AssemblyFactories/FailureMechanismAssemblyFactory.cs (.../FailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/Integration/src/Riskeer.Integration.Data/StandAlone/AssemblyFactories/FailureMechanismAssemblyFactory.cs (.../FailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; @@ -71,12 +72,12 @@ /// The failure mechanism to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// The type of failure mechanism to assemble. /// Thrown when any argument is null. /// Thrown when the failure mechanism cannot be assembled. - public static double AssembleFailureMechanism(TFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(TFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) where TFailureMechanism : IHasGeneralInput, IFailureMechanism { if (failureMechanism == null) @@ -89,9 +90,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/Integration/src/Riskeer.Integration.Data/StandAlone/AssemblyFactories/PipingStructureFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r435fdcbbc57f38e7ac960ae201824e48aca9bc21 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Integration/src/Riskeer.Integration.Data/StandAlone/AssemblyFactories/PipingStructureFailureMechanismAssemblyFactory.cs (.../PipingStructureFailureMechanismAssemblyFactory.cs) (revision 435fdcbbc57f38e7ac960ae201824e48aca9bc21) +++ Riskeer/Integration/src/Riskeer.Integration.Data/StandAlone/AssemblyFactories/PipingStructureFailureMechanismAssemblyFactory.cs (.../PipingStructureFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,9 +20,12 @@ // All rights reserved. using System; +using System.Linq; +using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Exceptions; +using Riskeer.Common.Data.FailureMechanism; namespace Riskeer.Integration.Data.StandAlone.AssemblyFactories { @@ -37,10 +40,10 @@ /// The failure mechanism to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism cannot be assembled. - public static double AssembleFailureMechanism(PipingStructureFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(PipingStructureFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -52,9 +55,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/StandAlone/AssemblyFactories/FailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Integration/test/Riskeer.Integration.Data.Test/StandAlone/AssemblyFactories/FailureMechanismAssemblyFactoryTest.cs (.../FailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/StandAlone/AssemblyFactories/FailureMechanismAssemblyFactoryTest.cs (.../FailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -283,7 +283,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new TestFailureMechanism { @@ -299,13 +298,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = FailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = FailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/StandAlone/AssemblyFactories/PipingStructureFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Integration/test/Riskeer.Integration.Data.Test/StandAlone/AssemblyFactories/PipingStructureFailureMechanismAssemblyFactoryTest.cs (.../PipingStructureFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/StandAlone/AssemblyFactories/PipingStructureFailureMechanismAssemblyFactoryTest.cs (.../PipingStructureFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -21,8 +21,10 @@ using System; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; +using Riskeer.AssemblyTool.Data; using Riskeer.AssemblyTool.KernelWrapper.Calculators; using Riskeer.AssemblyTool.KernelWrapper.Calculators.Assembly; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; @@ -111,7 +113,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new PipingStructureFailureMechanism { @@ -127,13 +128,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismAssemblyFactory.cs (.../MacroStabilityInwardsFailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismAssemblyFactory.cs (.../MacroStabilityInwardsFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -80,11 +80,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(MacroStabilityInwardsFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(MacroStabilityInwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -96,10 +96,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput.GetN(assessmentSection.ReferenceLine.Length), - failureMechanism.GeneralInput.ApplyLengthEffectInSection); + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs (.../MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs (.../MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -278,7 +278,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new MacroStabilityInwardsFailureMechanism { @@ -294,13 +293,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismAssemblyFactory.cs (.../PipingFailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismAssemblyFactory.cs (.../PipingFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; @@ -78,11 +79,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(PipingFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(PipingFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -94,10 +95,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( failureMechanism.PipingProbabilityAssessmentInput.GetN(assessmentSection.ReferenceLine.Length), - failureMechanism.GeneralInput.ApplyLengthEffectInSection); + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismAssemblyFactoryTest.cs (.../PipingFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismAssemblyFactoryTest.cs (.../PipingFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -285,7 +285,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new PipingFailureMechanism { @@ -301,13 +300,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/StabilityPointStructures/src/Riskeer.StabilityPointStructures.Data/StabilityPointStructuresFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r435fdcbbc57f38e7ac960ae201824e48aca9bc21 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/StabilityPointStructures/src/Riskeer.StabilityPointStructures.Data/StabilityPointStructuresFailureMechanismAssemblyFactory.cs (.../StabilityPointStructuresFailureMechanismAssemblyFactory.cs) (revision 435fdcbbc57f38e7ac960ae201824e48aca9bc21) +++ Riskeer/StabilityPointStructures/src/Riskeer.StabilityPointStructures.Data/StabilityPointStructuresFailureMechanismAssemblyFactory.cs (.../StabilityPointStructuresFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,9 +20,12 @@ // All rights reserved. using System; +using System.Linq; +using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Exceptions; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Structures; namespace Riskeer.StabilityPointStructures.Data @@ -38,11 +41,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(StabilityPointStructuresFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(StabilityPointStructuresFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -54,9 +57,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => StructuresFailureMechanismAssemblyFactory.AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + StructuresFailureMechanismAssemblyFactory.AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/StabilityPointStructures/test/Riskeer.StabilityPointStructures.Data.Test/StabilityPointStructuresFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/StabilityPointStructures/test/Riskeer.StabilityPointStructures.Data.Test/StabilityPointStructuresFailureMechanismAssemblyFactoryTest.cs (.../StabilityPointStructuresFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/StabilityPointStructures/test/Riskeer.StabilityPointStructures.Data.Test/StabilityPointStructuresFailureMechanismAssemblyFactoryTest.cs (.../StabilityPointStructuresFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -21,8 +21,10 @@ using System; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; +using Riskeer.AssemblyTool.Data; using Riskeer.AssemblyTool.KernelWrapper.Calculators; using Riskeer.AssemblyTool.KernelWrapper.Calculators.Assembly; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; @@ -109,7 +111,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new StabilityPointStructuresFailureMechanism { @@ -125,13 +126,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } } Index: Riskeer/StabilityStoneCover/src/Riskeer.StabilityStoneCover.Data/StabilityStoneCoverFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/StabilityStoneCover/src/Riskeer.StabilityStoneCover.Data/StabilityStoneCoverFailureMechanismAssemblyFactory.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/StabilityStoneCover/src/Riskeer.StabilityStoneCover.Data/StabilityStoneCoverFailureMechanismAssemblyFactory.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; @@ -70,11 +71,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(StabilityStoneCoverFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(StabilityStoneCoverFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -86,9 +87,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), - failureMechanism.GeneralInput.N, failureMechanism.GeneralInput.ApplyLengthEffectInSection); + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + failureMechanism.GeneralInput.N, + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/StabilityStoneCover/test/Riskeer.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/StabilityStoneCover/test/Riskeer.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/StabilityStoneCover/test/Riskeer.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -271,7 +271,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new StabilityStoneCoverFailureMechanism { @@ -287,13 +286,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreEqual(calculator.AssemblyResultOutput, result); } } Index: Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r12cfec70e267d72e576a11552690ae71064d487c -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.cs (.../WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.cs) (revision 12cfec70e267d72e576a11552690ae71064d487c) +++ Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.cs (.../WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.AssessmentSection; @@ -70,11 +71,11 @@ /// The to assemble. /// The the /// belongs to. - /// A representing the assembly result. + /// A with the assembly result. /// Thrown when any argument is null. /// Thrown when the failure mechanism could not be assembled. - public static double AssembleFailureMechanism(WaveImpactAsphaltCoverFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(WaveImpactAsphaltCoverFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (failureMechanism == null) { @@ -86,10 +87,15 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return AssemblyToolHelper.AssemblyFailureMechanism( - failureMechanism, sr => AssembleSection(sr, failureMechanism, assessmentSection), + Func performSectionAssemblyFunc = sr => + AssembleSection(sr, failureMechanism, assessmentSection); + + return FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( failureMechanism.GeneralWaveImpactAsphaltCoverInput.GetN(assessmentSection.ReferenceLine.Length), - failureMechanism.GeneralWaveImpactAsphaltCoverInput.ApplyLengthEffectInSection); + failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) + .ToArray(), + failureMechanism.GeneralWaveImpactAsphaltCoverInput.ApplyLengthEffectInSection, + failureMechanism.AssemblyResult); } } } \ No newline at end of file Index: Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r595a82333f00c0752b613eb745a33879b23cd8c8 -r084b5f4e5d401fcf4c37fdc9ac139b0201db0215 --- Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismAssemblyFactoryTest.cs (.../WaveImpactAsphaltCoverFailureMechanismAssemblyFactoryTest.cs) (revision 595a82333f00c0752b613eb745a33879b23cd8c8) +++ Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismAssemblyFactoryTest.cs (.../WaveImpactAsphaltCoverFailureMechanismAssemblyFactoryTest.cs) (revision 084b5f4e5d401fcf4c37fdc9ac139b0201db0215) @@ -272,7 +272,6 @@ { // Setup var random = new Random(21); - double assemblyOutput = random.NextDouble(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism { @@ -288,13 +287,14 @@ { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; - calculator.AssemblyResultOutput = assemblyOutput; + calculator.AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper( + random.NextDouble(), random.NextEnumValue()); // Call - double result = WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); + FailureMechanismAssemblyResultWrapper result = WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection); // Assert - Assert.AreEqual(assemblyOutput, result); + Assert.AreSame(calculator.AssemblyResultOutput, result); } }