/// <summary>
        /// Assembles the failure mechanism based on its input arguments.
        /// </summary>
        /// <param name="failureMechanismN">The length effect factor 'N' of the failure mechanism.</param>
        /// <param name="failureMechanismSectionAssemblyResults">A collection of <see cref="FailureMechanismSectionAssemblyResult"/>.</param>
        /// <param name="applyLengthEffect">Indicator whether the failure mechanism section length effect is applied.</param>
        /// <param name="failureMechanismAssemblyResult">The <see cref="FailureMechanismAssemblyResult"/>.</param>
        /// <returns>A <see cref="FailureMechanismAssemblyResultWrapper"/> containing the assembly result of the failure mechanism.</returns>>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="failureMechanismSectionAssemblyResults"/>
        /// or <paramref name="failureMechanismAssemblyResult"/> is <c>null</c>.</exception>
        /// <exception cref="AssemblyException">Thrown when the failure mechanism could not be successfully assembled.</exception>
        public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(
            double failureMechanismN, IEnumerable <FailureMechanismSectionAssemblyResult> failureMechanismSectionAssemblyResults,
            bool applyLengthEffect, FailureMechanismAssemblyResult failureMechanismAssemblyResult)
        {
            if (failureMechanismSectionAssemblyResults == null)
            {
                throw new ArgumentNullException(nameof(failureMechanismSectionAssemblyResults));
            }

            if (failureMechanismAssemblyResult == null)
            {
                throw new ArgumentNullException(nameof(failureMechanismAssemblyResult));
            }

            if (failureMechanismAssemblyResult.ProbabilityResultType == FailureMechanismAssemblyProbabilityResultType.Manual)
            {
                return(new FailureMechanismAssemblyResultWrapper(
                           failureMechanismAssemblyResult.ManualFailureMechanismAssemblyProbability,
                           AssemblyMethod.Manual));
            }

            try
            {
                IFailureMechanismAssemblyCalculator calculator =
                    AssemblyToolCalculatorFactory.Instance.CreateFailureMechanismAssemblyCalculator(AssemblyToolKernelFactory.Instance);

                return(calculator.Assemble(failureMechanismN, failureMechanismSectionAssemblyResults, applyLengthEffect));
            }
            catch (FailureMechanismAssemblyCalculatorException e)
            {
                throw new AssemblyException(e.Message, e);
            }
        }
Esempio n. 2
0
        public void CreateFailureMechanismAssemblyCalculator_WithKernelFactory_ReturnsCalculator()
        {
            // Setup
            IAssemblyToolCalculatorFactory factory = AssemblyToolCalculatorFactory.Instance;

            using (new AssemblyToolKernelFactoryConfig())
            {
                // Call
                IFailureMechanismAssemblyCalculator calculator =
                    factory.CreateFailureMechanismAssemblyCalculator(AssemblyToolKernelFactory.Instance);

                // Assert
                Assert.IsInstanceOf <FailureMechanismAssemblyCalculator>(calculator);
            }
        }