Index: Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/FailureMechanismAssemblyResultFactory.cs =================================================================== diff -u -r21db6e69fc90b3abcb46f2154edc9a88cf862cb7 -ra03693d0bb94394ecfdd56a61fcd0d5104380f31 --- Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/FailureMechanismAssemblyResultFactory.cs (.../FailureMechanismAssemblyResultFactory.cs) (revision 21db6e69fc90b3abcb46f2154edc9a88cf862cb7) +++ Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/FailureMechanismAssemblyResultFactory.cs (.../FailureMechanismAssemblyResultFactory.cs) (revision a03693d0bb94394ecfdd56a61fcd0d5104380f31) @@ -27,6 +27,7 @@ using Riskeer.AssemblyTool.KernelWrapper.Kernels; using Riskeer.Common.Data.Exceptions; using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.Properties; namespace Riskeer.Common.Data.AssemblyTool { @@ -74,8 +75,10 @@ return new FailureMechanismAssemblyResultWrapper( failureMechanismAssemblyResult.ManualFailureMechanismAssemblyProbability, AssemblyMethod.Manual); + case FailureMechanismAssemblyProbabilityResultType.Default: + throw new AssemblyException(Resources.FailureMechanismAssemblyResultFactory_AssembleFailureMechanism_Missing_input_for_assembly); default: - return null; + throw new NotSupportedException(); } } catch (FailureMechanismAssemblyCalculatorException e) Index: Riskeer/Common/src/Riskeer.Common.Data/Properties/Resources.Designer.cs =================================================================== diff -u -r4121f38c9a0541ccabbe769f451d195dbc5d47db -ra03693d0bb94394ecfdd56a61fcd0d5104380f31 --- Riskeer/Common/src/Riskeer.Common.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 4121f38c9a0541ccabbe769f451d195dbc5d47db) +++ Riskeer/Common/src/Riskeer.Common.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a03693d0bb94394ecfdd56a61fcd0d5104380f31) @@ -426,6 +426,16 @@ } /// + /// Looks up a localized string similar to Er ontbreekt invoer voor de assemblage rekenmodule waardoor de assemblage niet uitgevoerd kan worden.. + /// + public static string FailureMechanismAssemblyResultFactory_AssembleFailureMechanism_Missing_input_for_assembly { + get { + return ResourceManager.GetString("FailureMechanismAssemblyResultFactory_AssembleFailureMechanism_Missing_input_for_" + + "assembly", resourceCulture); + } + } + + /// /// Looks up a localized string similar to De omgevingswaarde moet gelijk zijn aan of groter zijn dan de signaleringsparameter.. /// public static string FailureMechanismContribution_MaximumAllowableFloodingProbability_should_be_same_or_greater_than_SignalFloodingProbability { Index: Riskeer/Common/src/Riskeer.Common.Data/Properties/Resources.resx =================================================================== diff -u -r4121f38c9a0541ccabbe769f451d195dbc5d47db -ra03693d0bb94394ecfdd56a61fcd0d5104380f31 --- Riskeer/Common/src/Riskeer.Common.Data/Properties/Resources.resx (.../Resources.resx) (revision 4121f38c9a0541ccabbe769f451d195dbc5d47db) +++ Riskeer/Common/src/Riskeer.Common.Data/Properties/Resources.resx (.../Resources.resx) (revision a03693d0bb94394ecfdd56a61fcd0d5104380f31) @@ -411,4 +411,7 @@ <selecteer> + + Er ontbreekt invoer voor de assemblage rekenmodule waardoor de assemblage niet uitgevoerd kan worden. + \ No newline at end of file Index: Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/FailureMechanismAssemblyResultFactoryTest.cs =================================================================== diff -u -r21db6e69fc90b3abcb46f2154edc9a88cf862cb7 -ra03693d0bb94394ecfdd56a61fcd0d5104380f31 --- Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/FailureMechanismAssemblyResultFactoryTest.cs (.../FailureMechanismAssemblyResultFactoryTest.cs) (revision 21db6e69fc90b3abcb46f2154edc9a88cf862cb7) +++ Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/FailureMechanismAssemblyResultFactoryTest.cs (.../FailureMechanismAssemblyResultFactoryTest.cs) (revision a03693d0bb94394ecfdd56a61fcd0d5104380f31) @@ -61,13 +61,41 @@ } [Test] - public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeAutomatic_SetsInputOnCalculator() + public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeAutomaticIndependentSections_SetsInputOnCalculator() { // Setup var random = new Random(21); double n = random.NextDouble(); var failureMechanismResult = new FailureMechanismAssemblyResult { + ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.AutomaticIndependentSections + }; + const bool applyLengthEffect = true; + IEnumerable sectionResults = Enumerable.Empty(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + // Call + FailureMechanismAssemblyResultFactory.AssembleFailureMechanism(n, sectionResults, applyLengthEffect, failureMechanismResult); + + // Assert + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; + + Assert.AreEqual(0, calculator.FailureMechanismN); + Assert.AreSame(sectionResults, calculator.SectionAssemblyResultsInput); + Assert.IsFalse(calculator.ApplyLengthEffect); + } + } + + [Test] + public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeAutomaticWorstSectionOrProfile_SetsInputOnCalculator() + { + // Setup + var random = new Random(21); + double n = random.NextDouble(); + var failureMechanismResult = new FailureMechanismAssemblyResult + { ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.AutomaticWorstSectionOrProfile }; bool applyLengthEffect = random.NextBoolean(); @@ -89,6 +117,30 @@ } [Test] + public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeDefault_ThrowsAssemblyException() + { + // Setup + var random = new Random(21); + double n = random.NextDouble(); + var failureMechanismResult = new FailureMechanismAssemblyResult + { + ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Default + }; + bool applyLengthEffect = random.NextBoolean(); + IEnumerable sectionResults = Enumerable.Empty(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + // Call + void Call() => FailureMechanismAssemblyResultFactory.AssembleFailureMechanism(n, sectionResults, applyLengthEffect, failureMechanismResult); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("Er ontbreekt invoer voor de assemblage rekenmodule waardoor de assemblage niet uitgevoerd kan worden.", exception.Message); + } + } + + [Test] public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeManual_NoInputOnCalculatorAndReturnsOutput() { // Setup @@ -128,9 +180,14 @@ var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; + var failureMechanismAssemblyResult = new FailureMechanismAssemblyResult + { + ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.AutomaticIndependentSections + }; + // Call FailureMechanismAssemblyResultWrapper assemblyResult = FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( - 0, Enumerable.Empty(), false, new FailureMechanismAssemblyResult()); + 0, Enumerable.Empty(), false, failureMechanismAssemblyResult); // Assert Assert.AreSame(calculator.AssemblyResultOutput, assemblyResult); @@ -147,9 +204,15 @@ FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; calculator.ThrowExceptionOnCalculate = true; + var failureMechanismAssemblyResult = new FailureMechanismAssemblyResult + { + ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.AutomaticIndependentSections + }; + // Call - void Call() => FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( - 0, Enumerable.Empty(), false, new FailureMechanismAssemblyResult()); + void Call() => + FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( + 0, Enumerable.Empty(), false, failureMechanismAssemblyResult); // Assert var exception = Assert.Throws(Call);