Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Data/StabilityStoneCoverFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r8d9701fc88424972b9f06c3e9f28fc55d85bebd9 -rda4f6a1d33595ff3f3a057c82c33fed131c2790e --- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Data/StabilityStoneCoverFailureMechanismAssemblyFactory.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactory.cs) (revision 8d9701fc88424972b9f06c3e9f28fc55d85bebd9) +++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Data/StabilityStoneCoverFailureMechanismAssemblyFactory.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactory.cs) (revision da4f6a1d33595ff3f3a057c82c33fed131c2790e) @@ -71,7 +71,7 @@ } /// - /// Assembles the detailed assessment results. + /// Assembles the detailed assessment result. /// /// The failure mechanism section result to assemble the /// detailed assembly results for. @@ -107,7 +107,7 @@ } /// - /// Assembles the tailor made assessment results. + /// Assembles the tailor made assessment result. /// /// The failure mechanism section result to assemble the /// tailor made assembly results for. @@ -139,7 +139,7 @@ } /// - /// Assembles the combined assessment results. + /// Assembles the combined assembly. /// /// The failure mechanism section result to assemble the /// combined assembly results for. @@ -184,19 +184,22 @@ /// Gets the assembly category group of the given . /// /// The failure mechanism section result to get the assembly category group for. + /// Indicator that determines whether the manual assembly should be used or ignored, regardless of + /// the value of . /// A . /// Thrown when is null. /// Thrown when the /// could not be created. public static FailureMechanismSectionAssemblyCategoryGroup GetSectionAssemblyCategoryGroup( - StabilityStoneCoverFailureMechanismSectionResult failureMechanismSectionResult) + StabilityStoneCoverFailureMechanismSectionResult failureMechanismSectionResult, + bool useManual) { if (failureMechanismSectionResult == null) { throw new ArgumentNullException(nameof(failureMechanismSectionResult)); } - return failureMechanismSectionResult.UseManualAssemblyCategoryGroup + return failureMechanismSectionResult.UseManualAssemblyCategoryGroup && useManual ? failureMechanismSectionResult.ManualAssemblyCategoryGroup : AssembleCombinedAssessment(failureMechanismSectionResult); } @@ -205,12 +208,15 @@ /// Assembles the failure mechanism assembly. /// /// The failure mechanism to assemble for. + /// Indicator that determines whether the manual assembly should be used or ignored, regardless of + /// the value of . /// A . /// Thrown when /// is null. /// Thrown when the /// could not be created. - public static FailureMechanismAssemblyCategoryGroup AssembleFailureMechanism(StabilityStoneCoverFailureMechanism failureMechanism) + public static FailureMechanismAssemblyCategoryGroup AssembleFailureMechanism(StabilityStoneCoverFailureMechanism failureMechanism, + bool useManual) { if (failureMechanism == null) { @@ -225,7 +231,7 @@ try { IEnumerable sectionAssemblies = - failureMechanism.SectionResults.Select(GetSectionAssemblyCategoryGroup).ToArray(); + failureMechanism.SectionResults.Select(result => GetSectionAssemblyCategoryGroup(result, useManual)).ToArray(); IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; IFailureMechanismAssemblyCalculator calculator = Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverResultView.cs =================================================================== diff -u -r7adc47fc72205078d054034bb9d1028c32434e28 -rda4f6a1d33595ff3f3a057c82c33fed131c2790e --- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverResultView.cs (.../StabilityStoneCoverResultView.cs) (revision 7adc47fc72205078d054034bb9d1028c32434e28) +++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Forms/Views/StabilityStoneCoverResultView.cs (.../StabilityStoneCoverResultView.cs) (revision da4f6a1d33595ff3f3a057c82c33fed131c2790e) @@ -138,7 +138,7 @@ protected override void UpdateAssemblyResultControl() { - FailureMechanismAssemblyResultControl.SetAssemblyResult(StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(FailureMechanism)); + FailureMechanismAssemblyResultControl.SetAssemblyResult(StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(FailureMechanism, true)); } protected override bool HasManualAssemblyResults() Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -rc1ad8e8431d65da2f22adeb93f9deddd9fae77e3 -rda4f6a1d33595ff3f3a057c82c33fed131c2790e --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs) (revision c1ad8e8431d65da2f22adeb93f9deddd9fae77e3) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs (.../StabilityStoneCoverFailureMechanismAssemblyFactoryTest.cs) (revision da4f6a1d33595ff3f3a057c82c33fed131c2790e) @@ -429,7 +429,8 @@ { // Call TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( - null); + null, + new Random(39).NextBoolean()); // Assert var exception = Assert.Throws(call); @@ -449,7 +450,8 @@ // Call StabilityStoneCoverFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( - sectionResult); + sectionResult, + new Random(39).NextBoolean()); // Assert FailureMechanismSectionAssemblyCategoryGroup expectedSimpleAssembly = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleSimpleAssessment( @@ -475,7 +477,8 @@ { // Call FailureMechanismSectionAssemblyCategoryGroup categoryGroup = StabilityStoneCoverFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( - sectionResult); + sectionResult, + new Random(39).NextBoolean()); // Assert FailureMechanismSectionAssemblyCategoryGroup expectedAssembly = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleCombinedAssessment( @@ -485,7 +488,7 @@ } [Test] - public void GetSectionAssemblyCategoryGroup_WithManualInput_ReturnsOutput() + public void GetSectionAssemblyCategoryGroup_WithManualInputAndUseManualTrue_ReturnsOutput() { // Setup var sectionResult = new StabilityStoneCoverFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) @@ -496,27 +499,52 @@ // Call FailureMechanismSectionAssemblyCategoryGroup categoryGroup = StabilityStoneCoverFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( - sectionResult); + sectionResult, + true); // Assert Assert.AreEqual(sectionResult.ManualAssemblyCategoryGroup, categoryGroup); } [Test] + public void GetSectionAssemblyCategoryGroup_WithManualInputAndUseManualFalse_ReturnsOutput() + { + // Setup + var random = new Random(39); + var sectionResult = new StabilityStoneCoverFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) + { + UseManualAssemblyCategoryGroup = true, + ManualAssemblyCategoryGroup = random.NextEnumValue(), + TailorMadeAssessmentResult = random.NextEnumValue() + }; + + // Call + FailureMechanismSectionAssemblyCategoryGroup categoryGroup = StabilityStoneCoverFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( + sectionResult, + false); + + // Assert + FailureMechanismSectionAssemblyCategoryGroup expectedAssembly = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleCombinedAssessment( + sectionResult); + Assert.AreEqual(expectedAssembly, categoryGroup); + } + + [Test] public void GetSectionAssemblyCategoryGroup_WithoutManualInputAndCalculatorThrowsException_ThrowsAssemblyException() { // Setup var sectionResult = new StabilityStoneCoverFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); using (new AssemblyToolCalculatorFactoryConfig()) { - var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator; + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; calculator.ThrowExceptionOnCalculateCombinedAssembly = true; // Call TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( - sectionResult); + sectionResult, + new Random(39).NextBoolean()); // Assert var exception = Assert.Throws(call); @@ -534,14 +562,39 @@ public void AssembleFailureMechanism_FailureMechanismNull_ThrowsArgumentNullException() { // Call - TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(null); + TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(null, new Random(39).NextBoolean()); // Assert var exception = Assert.Throws(call); Assert.AreEqual("failureMechanism", exception.ParamName); } [Test] + public void AssembleFailureMechanism_WithoutManualInput_SetsInputOnCalculator() + { + // Setup + var failureMechanism = new StabilityStoneCoverFailureMechanism(); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection() + }); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; + + // Call + StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, new Random(39).NextBoolean()); + + // Assert + FailureMechanismSectionAssemblyCategoryGroup assemblyCategory = + StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleCombinedAssessment(failureMechanism.SectionResults.Single()); + Assert.AreEqual(assemblyCategory, calculator.FailureMechanismSectionCategories.Single()); + } + } + + [Test] public void AssembleFailureMechanism_FailureMechanismIsNotRelevant_ReturnsNotApplicableCategory() { // Setup @@ -551,39 +604,40 @@ }; // Call - FailureMechanismAssemblyCategoryGroup category = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism); + FailureMechanismAssemblyCategoryGroup category = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, new Random(39).NextBoolean()); // Assert Assert.AreEqual(FailureMechanismAssemblyResultFactory.CreateNotApplicableCategory(), category); } [Test] - public void AssembleFailureMechanism_WithoutManualInput_SetsInputOnCalculator() + public void AssembleFailureMechanism_WithManualInputAndUseManualTrue_SetsInputOnCalculator() { // Setup var failureMechanism = new StabilityStoneCoverFailureMechanism(); FailureMechanismTestHelper.SetSections(failureMechanism, new[] { FailureMechanismSectionTestFactory.CreateFailureMechanismSection() }); + StabilityStoneCoverFailureMechanismSectionResult sectionResult = failureMechanism.SectionResults.Single(); + sectionResult.UseManualAssemblyCategoryGroup = true; + sectionResult.ManualAssemblyCategoryGroup = new Random(39).NextEnumValue(); using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; // Call - StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism); + StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, true); // Assert - FailureMechanismSectionAssemblyCategoryGroup assemblyCategory = - StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleCombinedAssessment(failureMechanism.SectionResults.Single()); - Assert.AreEqual(assemblyCategory, calculator.FailureMechanismSectionCategories.Single()); + Assert.AreEqual(sectionResult.ManualAssemblyCategoryGroup, calculator.FailureMechanismSectionCategories.Single()); } } [Test] - public void AssembleFailureMechanism_WithManualInput_SetsInputOnCalculator() + public void AssembleFailureMechanism_WithManualInputAndUseManualFalse_SetsNoInputOnCalculator() { // Setup var failureMechanism = new StabilityStoneCoverFailureMechanism(); @@ -593,18 +647,20 @@ }); StabilityStoneCoverFailureMechanismSectionResult sectionResult = failureMechanism.SectionResults.Single(); sectionResult.UseManualAssemblyCategoryGroup = true; - sectionResult.ManualAssemblyCategoryGroup = new Random(39).NextEnumValue(); + sectionResult.ManualAssemblyCategoryGroup = FailureMechanismSectionAssemblyCategoryGroup.IIv; using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; // Call - StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism); + StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, false); // Assert - Assert.AreEqual(sectionResult.ManualAssemblyCategoryGroup, calculator.FailureMechanismSectionCategories.Single()); + FailureMechanismSectionAssemblyCategoryGroup expectedAssembly = StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleCombinedAssessment( + failureMechanism.SectionResults.Single()); + Assert.AreEqual(expectedAssembly, calculator.FailureMechanismSectionCategories.Single()); } } @@ -619,7 +675,8 @@ // Call FailureMechanismAssemblyCategoryGroup actualOutput = - StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(new StabilityStoneCoverFailureMechanism()); + StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(new StabilityStoneCoverFailureMechanism(), + new Random(39).NextBoolean()); // Assert Assert.AreEqual(calculator.FailureMechanismAssemblyCategoryGroupOutput, actualOutput); @@ -632,12 +689,14 @@ // Setup using (new AssemblyToolCalculatorFactoryConfig()) { - var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismAssemblyCalculator; + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; calculator.ThrowExceptionOnCalculate = true; // Call - TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(new StabilityStoneCoverFailureMechanism()); + TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism( + new StabilityStoneCoverFailureMechanism(), + new Random(39).NextBoolean()); // Assert var exception = Assert.Throws(call); @@ -659,12 +718,13 @@ using (new AssemblyToolCalculatorFactoryConfig()) { - var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator; + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; calculator.ThrowExceptionOnCalculate = true; // Call - TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism); + TestDelegate call = () => StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, + new Random(39).NextBoolean()); // Assert var exception = Assert.Throws(call);