Index: Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs =================================================================== diff -u -re3f0175cd4c43d572595882527bd545e5d92c6a9 -r914a71b261560cdb3012a42ff82d7d7e9172c60e --- Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs (.../AssessmentSectionAssemblyFactory.cs) (revision e3f0175cd4c43d572595882527bd545e5d92c6a9) +++ Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs (.../AssessmentSectionAssemblyFactory.cs) (revision 914a71b261560cdb3012a42ff82d7d7e9172c60e) @@ -63,7 +63,7 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - return assessmentSection.AreFailureMechanismsCorrelated && AssessmentSectionAssemblyHelper.AllCorrelatedFailureMechanismsInAssembly(assessmentSection) + return AssessmentSectionAssemblyHelper.AllCorrelatedFailureMechanismsInAssembly(assessmentSection) && assessmentSection.AreFailureMechanismsCorrelated ? AssembleAssessmentSectionWithCorrelatedFailureMechanisms(assessmentSection) : AssembleAssessmentSectionWithoutCorrelatedFailureMechanisms(assessmentSection); } @@ -83,8 +83,8 @@ IAssessmentSectionAssemblyCalculator calculator = calculatorFactory.CreateAssessmentSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); - IEnumerable correlatedAssemblyResults = GetCorrelatedFailureMechanismAssemblyResults(assessmentSection); - IEnumerable uncorrelatedAssemblyResults = GetUncorrelatedFailureMechanismAssemblyResults(assessmentSection); + IEnumerable correlatedAssemblyResults = GetFailureMechanismAssemblyResults(assessmentSection, true, true); + IEnumerable uncorrelatedAssemblyResults = GetFailureMechanismAssemblyResults(assessmentSection, true, false); FailureMechanismContribution contribution = assessmentSection.FailureMechanismContribution; return calculator.AssembleAssessmentSection(correlatedAssemblyResults, uncorrelatedAssemblyResults, contribution.MaximumAllowableFloodingProbability, contribution.SignalFloodingProbability); @@ -100,31 +100,63 @@ } /// - /// Gets the correlated failure mechanism assembly results based on the input arguments. + /// Gets the assessment section assembly result without correlated failure mechanisms. /// - /// The to retrieve the correlated failure mechanism assembly - /// results for. - /// A collection of correlated failure mechanism assembly results. - /// Thrown when the results could not be assembled. - private static IEnumerable GetCorrelatedFailureMechanismAssemblyResults(AssessmentSection assessmentSection) + /// The to retrieve the assessment section assembly results + /// for. + /// The assessment section assembly result. + /// Thrown when the result could not be assembled. + private static AssessmentSectionAssemblyResultWrapper AssembleAssessmentSectionWithoutCorrelatedFailureMechanisms(AssessmentSection assessmentSection) { - return new[] + try { - GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionInwards, assessmentSection).AssemblyResult, - HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.HeightStructures, assessmentSection).AssemblyResult - }; + IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; + IAssessmentSectionAssemblyCalculator calculator = + calculatorFactory.CreateAssessmentSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); + + IEnumerable assemblyResults = GetFailureMechanismAssemblyResults(assessmentSection, false, false); + FailureMechanismContribution contribution = assessmentSection.FailureMechanismContribution; + return calculator.AssembleAssessmentSection(assemblyResults, contribution.MaximumAllowableFloodingProbability, contribution.SignalFloodingProbability); + } + catch (AssessmentSectionAssemblyCalculatorException e) + { + throw new AssemblyException(e.Message, e); + } + catch (AssemblyException e) + { + throw new AssemblyException(Resources.AssessmentSectionAssemblyFactory_Error_while_assembling_failureMechanisms, e); + } } /// - /// Gets the uncorrelated failure mechanism assembly results based on the input arguments. + /// Gets the failure mechanism assembly results based on the input arguments. /// - /// The to retrieve the uncorrelated failure mechanism assembly - /// results for. - /// A collection of uncorrelated failure mechanism assembly results. + /// The to retrieve the failure mechanism assembly results + /// for. + /// Indicator on whether failure mechanisms are correlated. + /// Indicator on whether only the correlated failure mechanism assembly results should be returned. + /// A collection of failure mechanism assembly results. /// Thrown when the results could not be assembled. - private static IEnumerable GetUncorrelatedFailureMechanismAssemblyResults(AssessmentSection assessmentSection) + private static IEnumerable GetFailureMechanismAssemblyResults(AssessmentSection assessmentSection, + bool isCorrelatedAssembly, bool returnCorrelatedResults) { + if (isCorrelatedAssembly && returnCorrelatedResults) + { + return new[] + { + GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionInwards, assessmentSection).AssemblyResult, + HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.HeightStructures, assessmentSection).AssemblyResult + }; + } + var failureMechanismAssemblies = new List(); + if (!isCorrelatedAssembly) + { + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.HeightStructures, assessmentSection, + HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.GrassCoverErosionInwards, assessmentSection, + GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism); + } AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.Piping, assessmentSection, PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism); @@ -161,56 +193,6 @@ return failureMechanismAssemblies; } - /// - /// Gets the assessment section assembly result without correlated failure mechanisms. - /// - /// The to retrieve the assessment section assembly results - /// for. - /// The assessment section assembly result. - /// Thrown when the result could not be assembled. - private static AssessmentSectionAssemblyResultWrapper AssembleAssessmentSectionWithoutCorrelatedFailureMechanisms(AssessmentSection assessmentSection) - { - try - { - IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; - IAssessmentSectionAssemblyCalculator calculator = - calculatorFactory.CreateAssessmentSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); - - IEnumerable assemblyResults = GetFailureMechanismAssemblyResults(assessmentSection); - FailureMechanismContribution contribution = assessmentSection.FailureMechanismContribution; - return calculator.AssembleAssessmentSection(assemblyResults, contribution.MaximumAllowableFloodingProbability, contribution.SignalFloodingProbability); - } - catch (AssessmentSectionAssemblyCalculatorException e) - { - throw new AssemblyException(e.Message, e); - } - catch (AssemblyException e) - { - throw new AssemblyException(Resources.AssessmentSectionAssemblyFactory_Error_while_assembling_failureMechanisms, e); - } - } - - /// - /// Gets the failure mechanism assembly results based on the input arguments. - /// - /// The to retrieve the failure mechanism assembly results - /// for. - /// A collection of failure mechanism assembly results. - /// Thrown when the results could not be assembled. - private static IEnumerable GetFailureMechanismAssemblyResults(AssessmentSection assessmentSection) - { - var failureMechanismAssemblies = new List(); - - AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.HeightStructures, assessmentSection, - HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism); - AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.GrassCoverErosionInwards, assessmentSection, - GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism); - - failureMechanismAssemblies.AddRange(GetUncorrelatedFailureMechanismAssemblyResults(assessmentSection)); - - return failureMechanismAssemblies; - } - private static void AssembleWhenApplicable( List resultsList, TFailureMechanism failureMechanism, AssessmentSection assessmentSection, Func performAssemblyFunc) Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/Assembly/AssessmentSectionAssemblyFactoryTest.cs =================================================================== diff -u -r636d1f3c41cb8a56b0811e5e29a61cad6f6729ec -r914a71b261560cdb3012a42ff82d7d7e9172c60e --- Riskeer/Integration/test/Riskeer.Integration.Data.Test/Assembly/AssessmentSectionAssemblyFactoryTest.cs (.../AssessmentSectionAssemblyFactoryTest.cs) (revision 636d1f3c41cb8a56b0811e5e29a61cad6f6729ec) +++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/Assembly/AssessmentSectionAssemblyFactoryTest.cs (.../AssessmentSectionAssemblyFactoryTest.cs) (revision 914a71b261560cdb3012a42ff82d7d7e9172c60e) @@ -42,6 +42,8 @@ [TestFixture] public class AssessmentSectionAssemblyFactoryTest { + #region Assemble Assessment Section + [Test] public void AssembleAssessmentSection_AssessmentSectionNull_ThrowsArgumentNullException() { @@ -53,8 +55,6 @@ Assert.AreEqual("assessmentSection", exception.ParamName); } - #region Assemble Assessment Section - [Test] public void AssembleAssessmentSection_AssessmentSectionWithFailureMechanismsCorrelatedFalseAndContainingFailureMechanismsWithRandomInAssemblyState_SetsInputOnCalculator() { @@ -135,7 +135,7 @@ Assert.IsNull(assessmentSectionAssemblyCalculator.FailureMechanismProbabilitiesInput); } } - + [Test] public void AssembleAssessmentSection_AssessmentSectionWithCorrelatedFailureMechanismsFalseAndAllCorrelatedFailureMechanismsInAssembly_SetsInputOnCalculator() { @@ -173,12 +173,13 @@ Assert.IsNull(assessmentSectionAssemblyCalculator.UncorrelatedFailureMechanismProbabilitiesInput); } } - + [Test] public void AssembleAssessmentSection_AssessmentSectionWithCorrelatedFailureMechanismsTrueAndSomeCorrelatedFailureMechanismsNotInAssembly_SetsInputOnCalculator() { // Setup AssessmentSection assessmentSection = CreateAssessmentSectionContainingFailureMechanismsWithRandomInAssemblyState(); + assessmentSection.AreFailureMechanismsCorrelated = false; assessmentSection.HeightStructures.InAssembly = false; using (new AssemblyToolCalculatorFactoryConfig()) @@ -240,7 +241,7 @@ // Setup AssessmentSection assessmentSection = CreateAssessmentSectionContainingFailureMechanismsWithInAssemblyTrue(); assessmentSection.AreFailureMechanismsCorrelated = areFailureMechanismsCorrelated; - + using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; @@ -266,7 +267,7 @@ // Setup AssessmentSection assessmentSection = CreateAssessmentSectionContainingFailureMechanismsWithInAssemblyTrue(); assessmentSection.AreFailureMechanismsCorrelated = areFailureMechanismsCorrelated; - + using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/AssessmentSectionEntityReadExtensionsTest.cs =================================================================== diff -u -r94f1cbfab69c504dcdfa258f8cdc4e5329a757cf -r914a71b261560cdb3012a42ff82d7d7e9172c60e --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/AssessmentSectionEntityReadExtensionsTest.cs (.../AssessmentSectionEntityReadExtensionsTest.cs) (revision 94f1cbfab69c504dcdfa258f8cdc4e5329a757cf) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/AssessmentSectionEntityReadExtensionsTest.cs (.../AssessmentSectionEntityReadExtensionsTest.cs) (revision 914a71b261560cdb3012a42ff82d7d7e9172c60e) @@ -73,7 +73,7 @@ var random = new Random(9); var normativeProbabilityType = random.NextEnumValue(); bool areFailureMechanismsCorrelated = random.NextBoolean(); - + var entity = new AssessmentSectionEntity { Id = testId,