public CalculationOutput <FailureMechanismSectionCategoryGroup> CombinedAssessmentFromFailureMechanismSectionResults(
            FailureMechanismSectionCategoryGroup resultSimpleAssessment,
            FailureMechanismSectionCategoryGroup resultDetailedAssessment,
            FailureMechanismSectionCategoryGroup resultTailorMadeAssessment)
        {
            var tailorMadeAssessmentCategorySeven = resultTailorMadeAssessment == FailureMechanismSectionCategoryGroup.VIIv;

            if (!tailorMadeAssessmentCategorySeven && resultTailorMadeAssessment != FailureMechanismSectionCategoryGroup.None)
            {
                return(new CalculationOutput <FailureMechanismSectionCategoryGroup>(resultTailorMadeAssessment));
            }

            var detailedAssessmentCategorySeven = resultDetailedAssessment == FailureMechanismSectionCategoryGroup.VIIv;

            if (!detailedAssessmentCategorySeven && resultDetailedAssessment != FailureMechanismSectionCategoryGroup.None)
            {
                return(new CalculationOutput <FailureMechanismSectionCategoryGroup>(resultDetailedAssessment));
            }

            var simpleAssessmentCategorySeven = resultSimpleAssessment == FailureMechanismSectionCategoryGroup.VIIv;

            if (!simpleAssessmentCategorySeven && resultSimpleAssessment != FailureMechanismSectionCategoryGroup.None)
            {
                return(new CalculationOutput <FailureMechanismSectionCategoryGroup>(resultSimpleAssessment));
            }

            if (tailorMadeAssessmentCategorySeven || detailedAssessmentCategorySeven || simpleAssessmentCategorySeven)
            {
                return(new CalculationOutput <FailureMechanismSectionCategoryGroup>(FailureMechanismSectionCategoryGroup.VIIv));
            }

            return(new CalculationOutput <FailureMechanismSectionCategoryGroup>(FailureMechanismSectionCategoryGroup.None));
        }
Exemplo n.º 2
0
        public void CombinedAssessmentFromFailureMechanismSectionResultsSelectsCorrectResult(
            FailureMechanismSectionCategoryGroup simpleAssessmentResult,
            FailureMechanismSectionCategoryGroup detailedAssessmentResult,
            FailureMechanismSectionCategoryGroup tailorMadeAssessmentResult,
            FailureMechanismSectionCategoryGroup expectedCategoryGroup)
        {
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().CombinedAssessmentFromFailureMechanismSectionResults(simpleAssessmentResult, detailedAssessmentResult, tailorMadeAssessmentResult);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result);
        }
Exemplo n.º 3
0
        public void CombinedAssessmentFromFailureMechanismSectionResultsWithProbabilitiesSelectsCorrectResult(
            FailureMechanismSectionCategoryGroup simpleAssessmentResult,
            double simpleAssessmentProbabilityValue,
            FailureMechanismSectionCategoryGroup detailedAssessmentResult,
            double detailedAssessmentProbabilityValue,
            FailureMechanismSectionCategoryGroup tailorMadeAssessmentResult,
            double tailorMadeAssessmentProbabilityValue,
            FailureMechanismSectionCategoryGroup expectedCategoryGroup,
            double expectedProbabilityValue)
        {
            var calculationOutput =
                new FailureMechanismSectionAssemblyCalculator().CombinedAssessmentFromFailureMechanismSectionResults(
                    new FailureMechanismSectionAssemblyCategoryResult(simpleAssessmentResult,
                                                                      (Probability)simpleAssessmentProbabilityValue),
                    new FailureMechanismSectionAssemblyCategoryResult(detailedAssessmentResult,
                                                                      (Probability)detailedAssessmentProbabilityValue),
                    new FailureMechanismSectionAssemblyCategoryResult(tailorMadeAssessmentResult,
                                                                      (Probability)tailorMadeAssessmentProbabilityValue));

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(expectedProbabilityValue, calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 4
0
        public void SimpleAssessmentDirectFailureMechanismsValidityOnlyResultsCorrectCategory(SimpleCalculationResultValidityOnly calculationResult, FailureMechanismSectionCategoryGroup expectedResult, double expectedProbability)
        {
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().SimpleAssessmentDirectFailureMechanisms(calculationResult);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedResult, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(expectedProbability, calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 5
0
        public void TailorMadeAssessmentDirectFailureMechanismsFromProbabilityWithNValueReturnsCorrectCategoryFromProbability(double probabilityValue, FailureMechanismSectionCategoryGroup expectedCategoryGroup)
        {
            var categories = new[]
            {
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Iv, (Probability)0, (Probability)0.1),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIv, (Probability)0.1, (Probability)0.2),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIIv, (Probability)0.2, (Probability)0.3),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IVv, (Probability)0.3, (Probability)0.4),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Vv, (Probability)0.4, (Probability)0.5),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.VIv, (Probability)0.5, (Probability)1),
            };

            var          probability       = (Probability)probabilityValue;
            var          result            = new TailorMadeProbabilityCalculationResult(probability);
            const double nValue            = 1.234;
            var          input             = new TailorMadeCalculationInputFromProbabilityWithLengthEffectFactor(result, categories, nValue);
            var          calculationOutput = new FailureMechanismSectionAssemblyCalculator().TailorMadeAssessmentDirectFailureMechanisms(input);

            Assert.IsNotNull(calculationOutput);
            var expectedProbability = probabilityValue * nValue;

            if (expectedProbability > 1)
            {
                Assert.AreEqual(1, calculationOutput.WarningMessages.Length);
                Assert.AreEqual(WarningMessage.CorrectedProbability, calculationOutput.WarningMessages[0]);
            }
            else
            {
                Assert.IsEmpty(calculationOutput.WarningMessages);
            }
            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(Math.Min(expectedProbability, 1.0), calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 6
0
        public void TailorMadeAssessmentDirectFailureMechanismsFromProbabilityWithNValueReturnsCorrectCategoryNoProbability(TailorMadeProbabilityCalculationResultGroup resultGroup, FailureMechanismSectionCategoryGroup expectedCategoryGroup, double expectedProbability)
        {
            var input = new TailorMadeCalculationInputFromProbabilityWithLengthEffectFactor(
                new TailorMadeProbabilityCalculationResult(resultGroup),
                new[]
            {
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Iv, (Probability)0, (Probability)1)
            }, 1.234);

            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().TailorMadeAssessmentDirectFailureMechanisms(input);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(expectedProbability, calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 7
0
        public void TailorMadeAssessmentDirectFailureMechanismsFromCategoryResultReturnsCorrectCategory(TailorMadeCategoryCalculationResult result, FailureMechanismSectionCategoryGroup expectedCategoryGroup)
        {
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().TailorMadeAssessmentDirectFailureMechanisms(result);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result);
        }
Exemplo n.º 8
0
        public void TailorMadeAssessmentDirectFailureMechanismsFromProbabilityReturnsCorrectCategoryFromProbability(double probabilityValue, FailureMechanismSectionCategoryGroup expectedCategoryGroup)
        {
            var categories = new[]
            {
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Iv, (Probability)0, (Probability)0.1),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIv, (Probability)0.1, (Probability)0.2),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIIv, (Probability)0.2, (Probability)0.3),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IVv, (Probability)0.3, (Probability)0.4),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Vv, (Probability)0.4, (Probability)0.5),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.VIv, (Probability)0.5, (Probability)1),
            };

            var probability       = (Probability)probabilityValue;
            var result            = new TailorMadeProbabilityCalculationResult(probability);
            var input             = new TailorMadeCalculationInputFromProbability(result, categories);
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().TailorMadeAssessmentDirectFailureMechanisms(input);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(probability, calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 9
0
        public void DetailedAssessmentDirectFailureMechanismsFromProbabilityWithNValueReturnsCorrectResult(double probability, double nValue, FailureMechanismSectionCategoryGroup expectedCategoryGroup, double expectedProbabilityWithoutNMultiplication)
        {
            var categories = new[]
            {
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Iv, (Probability)0, (Probability)0.1),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIv, (Probability)0.1, (Probability)0.2),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIIv, (Probability)0.2, (Probability)0.3),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IVv, (Probability)0.3, (Probability)0.4),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Vv, (Probability)0.4, (Probability)0.5),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.VIv, (Probability)0.5, (Probability)1),
            };

            var input             = new DetailedCalculationInputFromProbabilityWithLengthEffect((Probability)probability, categories, nValue);
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().DetailedAssessmentDirectFailureMechanisms(input);

            Assert.IsNotNull(calculationOutput);
            var expectedProbability = expectedProbabilityWithoutNMultiplication * nValue;

            if (expectedProbability > 1)
            {
                Assert.AreEqual(1, calculationOutput.WarningMessages.Length);
                Assert.AreEqual(WarningMessage.CorrectedProbability, calculationOutput.WarningMessages[0]);
            }
            else
            {
                Assert.IsEmpty(calculationOutput.WarningMessages);
            }

            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(Math.Min(1, expectedProbability), calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 10
0
        public void DetailedAssessmentDirectFailureMechanismsGroupThreeReturnsCorrectCategory(DetailedCalculationResult iToII, DetailedCalculationResult iIToIII, DetailedCalculationResult iIIToIV, DetailedCalculationResult iVToV, DetailedCalculationResult vToVI, FailureMechanismSectionCategoryGroup expectedCategoryGroup)
        {
            var input             = new DetailedCategoryBoundariesCalculationResult(iToII, iIToIII, iIIToIV, iVToV, vToVI);
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().DetailedAssessmentDirectFailureMechanisms(input);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result);
        }
Exemplo n.º 11
0
        public void DetailedAssessmentDirectFailureMechanismsFromProbabilitySelectsCorrectCategory(double probability, FailureMechanismSectionCategoryGroup expectedCategoryGroup, double expectedProbability)
        {
            var categories = new[]
            {
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Iv, (Probability)0, (Probability)0.1),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIv, (Probability)0.1, (Probability)0.2),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IIIv, (Probability)0.2, (Probability)0.3),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.IVv, (Probability)0.3, (Probability)0.4),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.Vv, (Probability)0.4, (Probability)0.5),
                new FailureMechanismSectionCategory(FailureMechanismSectionCategoryGroup.VIv, (Probability)0.5, (Probability)1),
            };

            var input             = new DetailedCalculationInputFromProbability((Probability)probability, categories);
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().DetailedAssessmentDirectFailureMechanisms(input);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.IsNotNull(calculationOutput.Result);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result.CategoryGroup);
            Assert.AreEqual(expectedProbability, calculationOutput.Result.EstimatedProbabilityOfFailure);
        }
Exemplo n.º 12
0
        public void DetailedAssessmentDirectFailureMechanismsFromResultTranslatesResultCorrectly(DetailedCalculationResult result, FailureMechanismSectionCategoryGroup expectedCategoryGroup)
        {
            var calculationOutput = new FailureMechanismSectionAssemblyCalculator().DetailedAssessmentDirectFailureMechanisms(result);

            Assert.IsNotNull(calculationOutput);
            Assert.IsEmpty(calculationOutput.WarningMessages);
            Assert.AreEqual(expectedCategoryGroup, calculationOutput.Result);
        }
Exemplo n.º 13
0
 public FailureMechanismSectionAssemblyCategoryResult(FailureMechanismSectionCategoryGroup categoryGroup, Probability estimatedProbabilityOfFailure)
 {
     CategoryGroup = categoryGroup;
     EstimatedProbabilityOfFailure = estimatedProbabilityOfFailure;
 }