public void Assemble_KernelThrowsAssemblyException_ThrowsFailureMechanismAssemblyCalculatorException()
        {
            // Setup
            var random = new Random(21);

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel;
                kernel.ThrowAssemblyExceptionOnCalculate = true;

                var calculator = new FailureMechanismAssemblyCalculator(factory);

                // Call
                void Call() => calculator.Assemble(random.NextDouble(), Enumerable.Empty <RiskeerFailureMechanismSectionAssemblyResult>(),
                                                   random.NextBoolean());

                // Assert
                Assert.IsFalse(kernel.Calculated);

                var exception      = Assert.Throws <FailureMechanismAssemblyCalculatorException>(Call);
                var innerException = exception.InnerException as AssemblyException;
                Assert.IsNotNull(innerException);
                Assert.AreEqual(AssemblyErrorMessageCreator.CreateErrorMessage(innerException.Errors), exception.Message);
            }
        }
        public void Assemble_WithInvalidInput_ThrowsFailureMechanismAssemblyCalculatorException()
        {
            // Setup
            var    random       = new Random(21);
            double probability  = random.NextDouble();
            var    invalidInput = new RiskeerFailureMechanismSectionAssemblyResult(probability, probability, random.NextDouble(),
                                                                                   (FailureMechanismSectionAssemblyGroup)99);

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel;

                var calculator = new FailureMechanismAssemblyCalculator(factory);

                // Call
                void Call() => calculator.Assemble(random.NextDouble(), new[]
                {
                    invalidInput
                }, random.NextBoolean());

                // Assert
                Assert.IsFalse(kernel.Calculated);

                var exception = Assert.Throws <FailureMechanismAssemblyCalculatorException>(Call);
                Assert.IsInstanceOf <Exception>(exception.InnerException);
                Assert.AreEqual(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), exception.Message);
            }
        }
        public void Assemble_WithValidInputAndApplyLengthEffectFalse_SendsCorrectInputToKernel()
        {
            // Setup
            var    random            = new Random(21);
            double failureMechanismN = random.NextDouble();

            RiskeerFailureMechanismSectionAssemblyResult[] sectionAssemblyResults =
            {
                CreateSectionAssemblyResult(random.Next()),
                CreateSectionAssemblyResult(random.Next())
            };

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

                var calculator = new FailureMechanismAssemblyCalculator(factory);

                // Call
                calculator.Assemble(failureMechanismN, sectionAssemblyResults, false);

                // Assert
                Assert.AreEqual(failureMechanismN, kernel.LenghtEffectFactor);
                Assert.IsFalse(kernel.PartialAssembly);

                CollectionAssert.AreEqual(sectionAssemblyResults.Select(r => new Probability(r.SectionProbability)), kernel.FailureMechanismSectionProbabilities);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Creates a new instance of <see cref="TestAssemblyToolKernelFactory"/>.
 /// </summary>
 public TestAssemblyToolKernelFactory()
 {
     LastCreatedAssemblyCategoryLimitsKernel                  = new AssemblyCategoryLimitsKernelStub();
     LastCreatedFailureMechanismSectionAssemblyKernel         = new FailureMechanismSectionAssemblyKernelStub();
     LastCreatedFailureMechanismAssemblyKernel                = new FailureMechanismAssemblyKernelStub();
     LastCreatedCombinedFailureMechanismSectionAssemblyKernel = new CombinedFailureMechanismSectionAssemblyKernelStub();
     LastCreatedAssessmentSectionAssemblyKernel               = new AssessmentSectionAssemblyKernelStub();
 }
        public void Assemble_WithValidInputAndApplyLengthEffectTrue_SendsCorrectInputToKernel()
        {
            // Setup
            var    random            = new Random(21);
            double failureMechanismN = random.NextDouble();

            RiskeerFailureMechanismSectionAssemblyResult[] sectionAssemblyResults =
            {
                CreateSectionAssemblyResult(random.Next()),
                CreateSectionAssemblyResult(random.Next())
            };

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

                var calculator = new FailureMechanismAssemblyCalculator(factory);

                // Call
                calculator.Assemble(failureMechanismN, sectionAssemblyResults, true);

                // Assert
                Assert.AreEqual(failureMechanismN, kernel.LenghtEffectFactor);
                Assert.IsFalse(kernel.PartialAssembly);
                Assert.AreEqual(sectionAssemblyResults.Length, kernel.FailureMechanismSectionAssemblyResults.Count());
                for (var i = 0; i < sectionAssemblyResults.Length; i++)
                {
                    RiskeerFailureMechanismSectionAssemblyResult expected = sectionAssemblyResults.ElementAt(i);
                    ResultWithProfileAndSectionProbabilities     actual   = kernel.FailureMechanismSectionAssemblyResults.ElementAt(i);
                    ProbabilityAssert.AreEqual(expected.ProfileProbability, actual.ProbabilityProfile);
                    ProbabilityAssert.AreEqual(expected.SectionProbability, actual.ProbabilitySection);
                }
            }
        }
        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);
            }
        }