Ejemplo n.º 1
0
        public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeManual_NoInputOnCalculatorAndReturnsOutput()
        {
            // Setup
            var random = new Random(21);
            var failureMechanismResult = new FailureMechanismAssemblyResult
            {
                ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Manual,
                ManualFailureMechanismAssemblyProbability = random.NextDouble()
            };

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                // Call
                FailureMechanismAssemblyResultWrapper assemblyResult = FailureMechanismAssemblyResultFactory.AssembleFailureMechanism(
                    random.NextDouble(), Enumerable.Empty <FailureMechanismSectionAssemblyResult>(),
                    random.NextBoolean(), failureMechanismResult);

                // Assert
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator;

                Assert.AreEqual(0, calculator.FailureMechanismN);
                Assert.IsNull(calculator.SectionAssemblyResultsInput);
                Assert.IsFalse(calculator.ApplyLengthEffect);

                Assert.AreEqual(failureMechanismResult.ManualFailureMechanismAssemblyProbability, assemblyResult.AssemblyResult);
                Assert.AreEqual(AssemblyMethod.Manual, assemblyResult.AssemblyMethod);
            }
        }
Ejemplo n.º 2
0
        public void AssembleFailureMechanism_CalculatorRan_ReturnsExpectedOutput()
        {
            // Setup
            var failureMechanism = new ClosingStructuresFailureMechanism
            {
                AssemblyResult =
                {
                    ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Automatic
                }
            };

            var assessmentSection = new AssessmentSectionStub();

            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator;

                // Call
                FailureMechanismAssemblyResultWrapper result = ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(failureMechanism, assessmentSection);

                // Assert
                Assert.AreSame(calculator.AssemblyResultOutput, result);
            }
        }
        public FailureMechanismAssemblyResultWrapper Assemble(double failureMechanismN, IEnumerable <FailureMechanismSectionAssemblyResult> sectionAssemblyResults,
                                                              bool applySectionLengthEffect)
        {
            if (ThrowExceptionOnCalculate)
            {
                throw new FailureMechanismAssemblyCalculatorException("Message", new Exception());
            }

            FailureMechanismN           = failureMechanismN;
            SectionAssemblyResultsInput = sectionAssemblyResults;
            ApplyLengthEffect           = applySectionLengthEffect;

            return(AssemblyResultOutput ?? (AssemblyResultOutput = new FailureMechanismAssemblyResultWrapper(0.1, AssemblyMethod.BOI1A1)));
        }
Ejemplo n.º 4
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var    random         = new Random(21);
            double assemblyResult = random.NextDouble();
            var    assemblyMethod = random.NextEnumValue <AssemblyMethod>();

            // Call
            var wrapper = new FailureMechanismAssemblyResultWrapper(assemblyResult, assemblyMethod);

            // Assert
            Assert.AreEqual(assemblyResult, wrapper.AssemblyResult);
            Assert.AreEqual(assemblyMethod, wrapper.AssemblyMethod);
        }
Ejemplo n.º 5
0
        public void AssembleFailureMechanism_CalculatorRan_ReturnsOutput()
        {
            // Setup
            using (new AssemblyToolCalculatorFactoryConfig())
            {
                var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator;

                // Call
                FailureMechanismAssemblyResultWrapper assemblyResult = FailureMechanismAssemblyResultFactory.AssembleFailureMechanism(
                    0, Enumerable.Empty <FailureMechanismSectionAssemblyResult>(), false, new FailureMechanismAssemblyResult());

                // Assert
                Assert.AreSame(calculator.AssemblyResultOutput, assemblyResult);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates an <see cref="ExportableFailureMechanism"/>
        /// with assembly results based on the input parameters.
        /// </summary>
        /// <param name="failureMechanism">The failure mechanism to create an <see cref="ExportableFailureMechanism"/> for.</param>
        /// <param name="assessmentSection">The assessment section the failure mechanism belongs to.</param>
        /// <param name="assembleFailureMechanismFunc">The <see cref="Func{T1,T2,TResult}"/> to perform
        /// the failure mechanism assembly.</param>
        /// <param name="assembleFailureMechanismSectionFunc">The <see cref="Func{T1,T2,T3,TResult}"/>
        /// to perform the failure mechanism section assembly.</param>
        /// <param name="failureMechanismType">The type of the failure mechanism.</param>
        /// <typeparam name="TFailureMechanism">The type of the failure mechanism.</typeparam>
        /// <typeparam name="TSectionResult">The type of the section result.</typeparam>
        /// <returns>An <see cref="ExportableFailureMechanism"/> with assembly results.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="failureMechanism"/>,
        /// <paramref name="assessmentSection"/>, <paramref name="assembleFailureMechanismFunc"/> or
        /// <paramref name="assembleFailureMechanismSectionFunc"/> is <c>null</c>.</exception>
        /// <exception cref="AssemblyException">Thrown when assembly results cannot be created.</exception>
        public static ExportableFailureMechanism CreateExportableFailureMechanism <TFailureMechanism, TSectionResult>(
            TFailureMechanism failureMechanism, IAssessmentSection assessmentSection,
            Func <TFailureMechanism, IAssessmentSection, FailureMechanismAssemblyResultWrapper> assembleFailureMechanismFunc,
            Func <TSectionResult, TFailureMechanism, IAssessmentSection, FailureMechanismSectionAssemblyResultWrapper> assembleFailureMechanismSectionFunc,
            ExportableFailureMechanismType failureMechanismType)
            where TFailureMechanism : IFailureMechanism <TSectionResult>
            where TSectionResult : FailureMechanismSectionResult
        {
            if (failureMechanism == null)
            {
                throw new ArgumentNullException(nameof(failureMechanism));
            }

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

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

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

            FailureMechanismAssemblyResultWrapper assemblyResultWrapper = assembleFailureMechanismFunc(failureMechanism, assessmentSection);

            return(new ExportableFailureMechanism(
                       new ExportableFailureMechanismAssemblyResult(
                           assemblyResultWrapper.AssemblyResult,
                           ExportableAssemblyMethodFactory.Create(assemblyResultWrapper.AssemblyMethod)),
                       CreateExportableFailureMechanismSectionResults(
                           failureMechanism, assessmentSection, assembleFailureMechanismSectionFunc),
                       failureMechanismType, failureMechanism.Code, failureMechanism.Name));
        }
        public void Assemble_WithValidOutput_ReturnsExpectedOutput(bool applyLengthEffect, AssemblyMethod expectedAssemblyMethod)
        {
            // Setup
            var random = new Random(21);

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel;
                var output = new FailureMechanismAssemblyResult(new Probability(random.NextDouble()), EFailureMechanismAssemblyMethod.Correlated);
                kernel.ProbabilityResult = output;

                var calculator = new FailureMechanismAssemblyCalculator(factory);

                // Call
                FailureMechanismAssemblyResultWrapper assemblyResultWrapper = calculator.Assemble(random.NextDouble(), Enumerable.Empty <RiskeerFailureMechanismSectionAssemblyResult>(),
                                                                                                  applyLengthEffect);

                // Assert
                Assert.IsTrue(kernel.Calculated);
                ProbabilityAssert.AreEqual(assemblyResultWrapper.AssemblyResult, output.Probability);
                Assert.AreEqual(assemblyResultWrapper.AssemblyMethod, expectedAssemblyMethod);
            }
        }