Example #1
0
        public void AssembleFailureMechanismSectionWithLengthEffect_KernelThrowsAssemblyException_ThrowsFailureMechanismSectionAssemblyCalculatorException()
        {
            // Setup
            FailureMechanismSectionWithProfileProbabilityAssemblyInput input = CreateFailureMechanismSectionWithProfileProbabilityAssemblyInput();

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel;
                failureMechanismSectionAssemblyKernel.ThrowAssemblyExceptionOnCalculate = true;

                var calculator = new FailureMechanismSectionAssemblyCalculator(factory);

                // Call
                void Call() => calculator.AssembleFailureMechanismSection(input);

                // Assert
                var exception      = Assert.Throws <FailureMechanismSectionAssemblyCalculatorException>(Call);
                var innerException = exception.InnerException as AssemblyException;
                Assert.IsNotNull(innerException);
                Assert.AreEqual(AssemblyErrorMessageCreator.CreateErrorMessage(innerException.Errors), exception.Message);

                Assert.IsFalse(failureMechanismSectionAssemblyKernel.Calculated);
            }
        }
Example #2
0
        public void AssembleFailureMechanismSection_WithValidInputAndProbabilityDefined_InputCorrectlySentToKernel(
            FailureMechanismSectionAssemblyInput input)
        {
            // Setup
            var random = new Random(21);

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                AssemblyCategoryLimitsKernelStub        categoryLimitsKernel     = factory.LastCreatedAssemblyCategoryLimitsKernel;
                CategoriesList <InterpretationCategory> interpretationCategories = CreateInterpretationCategories();
                categoryLimitsKernel.InterpretationCategoryLimits = interpretationCategories;

                FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel;
                var sectionProbability = new Probability(random.NextDouble(0.0, 0.01));
                failureMechanismSectionAssemblyKernel.SectionProbability = sectionProbability;
                failureMechanismSectionAssemblyKernel.CategoryOutput     = EInterpretationCategory.Zero;

                var calculator = new FailureMechanismSectionAssemblyCalculator(factory);

                // Call
                calculator.AssembleFailureMechanismSection(input);

                // Assert
                AssessmentSection assessmentSection = categoryLimitsKernel.AssessmentSection;
                ProbabilityAssert.AreEqual(input.MaximumAllowableFloodingProbability, assessmentSection.MaximumAllowableFloodingProbability);
                ProbabilityAssert.AreEqual(input.SignalFloodingProbability, assessmentSection.SignalFloodingProbability);

                Assert.AreSame(interpretationCategories, failureMechanismSectionAssemblyKernel.Categories);
                Assert.AreEqual(input.FurtherAnalysisType != FailureMechanismSectionResultFurtherAnalysisType.NotNecessary, failureMechanismSectionAssemblyKernel.RefinementNecessary);
                Assert.AreEqual(input.InitialSectionProbability, failureMechanismSectionAssemblyKernel.ProbabilityInitialMechanismSection);
                Assert.AreEqual(input.RefinedSectionProbability, failureMechanismSectionAssemblyKernel.RefinedProbabilitySection);
                Assert.AreEqual(sectionProbability, failureMechanismSectionAssemblyKernel.SectionProbabilityInput);
            }
        }
Example #3
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();
 }
Example #4
0
        public void AssembleFailureMechanismSectionWithLengthEffect_InputWithProbabilityDefinedKernelWithCompleteOutput_ReturnsExpectedFailureMechanismSectionAssembly()
        {
            // Setup
            var random = new Random(21);
            var input  = new FailureMechanismSectionWithProfileProbabilityAssemblyInput(
                0.001, 0.0001, true, true, random.NextDouble(), random.NextDouble(),
                FailureMechanismSectionResultFurtherAnalysisType.Executed,
                random.NextDouble(), random.NextDouble());

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                AssemblyCategoryLimitsKernelStub categoryLimitsKernel = factory.LastCreatedAssemblyCategoryLimitsKernel;
                categoryLimitsKernel.InterpretationCategoryLimits = CreateInterpretationCategories();

                FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel;
                var categoryOutput = random.NextEnumValue <EInterpretationCategory>();

                var kernelResult = new ResultWithProfileAndSectionProbabilities(
                    new Probability(random.NextDouble(0.0001, 0.001)),
                    new Probability(random.NextDouble(0.001, 0.01)));
                failureMechanismSectionAssemblyKernel.ProfileAndSectionProbabilities = kernelResult;
                failureMechanismSectionAssemblyKernel.CategoryOutput = categoryOutput;

                var calculator = new FailureMechanismSectionAssemblyCalculator(factory);

                // Call
                FailureMechanismSectionAssemblyResultWrapper resultWrapper = calculator.AssembleFailureMechanismSection(input);

                // Assert
                Assert.IsTrue(categoryLimitsKernel.Calculated);
                Assert.IsTrue(failureMechanismSectionAssemblyKernel.Calculated);

                FailureMechanismSectionAssemblyResult result = resultWrapper.AssemblyResult;
                Assert.AreEqual((double)kernelResult.ProbabilityProfile, result.ProfileProbability);
                Assert.AreEqual((double)kernelResult.ProbabilitySection, result.SectionProbability);
                Assert.AreEqual(kernelResult.LengthEffectFactor, result.N);
                Assert.AreEqual(FailureMechanismSectionAssemblyGroupConverter.ConvertTo(categoryOutput),
                                result.FailureMechanismSectionAssemblyGroup);
                Assert.AreEqual(AssemblyMethod.BOI0A2, resultWrapper.ProbabilityMethod);
                Assert.AreEqual(AssemblyMethod.BOI0B1, resultWrapper.AssemblyGroupMethod);
            }
        }
Example #5
0
        public void AssembleFailureMechanismSectionWithLengthEffect_InputWithProbabilityUndefinedAndKernelWithCompleteOutput_ReturnsExpectedFailureMechanismSectionAssembly()
        {
            // Setup
            var random = new Random(21);
            var input  = new FailureMechanismSectionWithProfileProbabilityAssemblyInput(
                0.001, 0.0001, false, random.NextBoolean(), double.NaN, double.NaN,
                random.NextEnumValue <FailureMechanismSectionResultFurtherAnalysisType>(),
                double.NaN, double.NaN);

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

                FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel;
                var categoryOutput     = random.NextEnumValue <EInterpretationCategory>();
                var sectionProbability = new Probability(random.NextDouble(0.0, 0.01));
                failureMechanismSectionAssemblyKernel.CategoryOutput     = categoryOutput;
                failureMechanismSectionAssemblyKernel.SectionProbability = sectionProbability;

                var calculator = new FailureMechanismSectionAssemblyCalculator(factory);

                // Call
                FailureMechanismSectionAssemblyResultWrapper resultWrapper = calculator.AssembleFailureMechanismSection(input);

                // Assert
                Assert.IsTrue(failureMechanismSectionAssemblyKernel.Calculated);

                FailureMechanismSectionAssemblyResult result = resultWrapper.AssemblyResult;
                Assert.AreEqual(sectionProbability, result.ProfileProbability);
                Assert.AreEqual(sectionProbability, result.SectionProbability);
                Assert.AreEqual(1.0, result.N);
                Assert.AreEqual(FailureMechanismSectionAssemblyGroupConverter.ConvertTo(categoryOutput),
                                result.FailureMechanismSectionAssemblyGroup);
                Assert.AreEqual(AssemblyMethod.BOI0C2, resultWrapper.ProbabilityMethod);
                Assert.AreEqual(AssemblyMethod.BOI0C1, resultWrapper.AssemblyGroupMethod);
            }
        }
Example #6
0
        public void AssembleFailureMechanismSection_WithValidInputAndNoProbabilityDefined_InputCorrectlySentToKernel(
            FailureMechanismSectionAssemblyInput input, EAnalysisState expectedAnalysisState)
        {
            // Setup
            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel;

                var random         = new Random(21);
                var categoryOutput = random.NextEnumValue <EInterpretationCategory>();
                failureMechanismSectionAssemblyKernel.CategoryOutput     = categoryOutput;
                failureMechanismSectionAssemblyKernel.SectionProbability = new Probability(random.NextDouble());

                var calculator = new FailureMechanismSectionAssemblyCalculator(factory);

                // Call
                calculator.AssembleFailureMechanismSection(input);

                // Assert
                Assert.AreEqual(expectedAnalysisState, failureMechanismSectionAssemblyKernel.AnalysisState);
                Assert.AreEqual(categoryOutput, failureMechanismSectionAssemblyKernel.CategoryInput);
            }
        }
Example #7
0
        public void AssembleFailureMechanismSection_KernelThrowsException_ThrowsFailureMechanismSectionAssemblyCalculatorException()
        {
            // Setup
            FailureMechanismSectionAssemblyInput input = CreateFailureMechanismSectionAssemblyInput();

            using (new AssemblyToolKernelFactoryConfig())
            {
                var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance;
                FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel;
                failureMechanismSectionAssemblyKernel.ThrowExceptionOnCalculate = true;

                var calculator = new FailureMechanismSectionAssemblyCalculator(factory);

                // Call
                void Call() => calculator.AssembleFailureMechanismSection(input);

                // Assert
                var exception = Assert.Throws <FailureMechanismSectionAssemblyCalculatorException>(Call);
                Assert.IsInstanceOf <Exception>(exception.InnerException);
                Assert.AreEqual(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), exception.Message);

                Assert.IsFalse(failureMechanismSectionAssemblyKernel.Calculated);
            }
        }