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); }
public void EnumConstructorPassesInputCorrectly(TailorMadeProbabilityCalculationResultGroup resultGroup) { var probabilityAssessmentResult = new TailorMadeProbabilityCalculationResult(resultGroup); Assert.AreEqual(resultGroup, probabilityAssessmentResult.CalculationResultGroup); Assert.AreEqual(default(Probability), probabilityAssessmentResult.Probability); }
private static void ValidateResult(TailorMadeProbabilityCalculationResult result) { if (result == null) { throw new AssemblyToolKernelException(ErrorCode.InputIsNull); } }
public void ProbabilityConstructorPassesInputCorrectly() { var probability = (Probability)0.01; var probabilityAssessmentResult = new TailorMadeProbabilityCalculationResult(probability); Assert.AreEqual(TailorMadeProbabilityCalculationResultGroup.Probability, probabilityAssessmentResult.CalculationResultGroup); Assert.AreEqual(probability, probabilityAssessmentResult.Probability); }
/// <summary> /// This class is inteded to be used as input in <see cref="IFailureMechanismSectionAssemblyCalculator.TailorMadeAssessmentDirectFailureMechanisms(TailorMadeCalculationInputFromProbability)"/>. /// </summary> /// <param name="result">The specified tailor made calculation result.</param> /// <param name="categories">The categories for this failure mechanisms obtained with <see cref="CategoriesCalculator.CalculateFailureMechanismSectionCategories"/>.</param> /// <exception cref="AssemblyToolKernelException">Thrown when the <see cref="result"/> equals null.</exception> /// <exception cref="AssemblyToolKernelException">Thrown when <see cref="categories"/> equals null or an emtpy list.</exception> public TailorMadeCalculationInputFromProbability(TailorMadeProbabilityCalculationResult result, FailureMechanismSectionCategory[] categories) { ValidateResult(result); ValidateCategories(categories); Result = result; Categories = categories; }
public void EnumConstructorThrowsOnWrongEnumValue() { try { var probabilityAssessmentResult = new TailorMadeProbabilityCalculationResult(TailorMadeProbabilityCalculationResultGroup.Probability); Assert.Fail("Exception was expoected."); } catch (AssemblyToolKernelException e) { Assert.AreEqual(1, e.Code.Length); Assert.AreEqual(ErrorCode.NoProbabilityAllowedInConstructor, e.Code[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); }
/// <summary> /// This class is inteded to be used as input in <see cref="IFailureMechanismSectionAssemblyCalculator.TailorMadeAssessmentDirectFailureMechanisms(TailorMadeCalculationInputFromProbabilityWithLengthEffectFactor)"/>. /// </summary> /// <param name="result">The calculation result that needs to be translated.</param> /// <param name="categories">The list of categories for this failure mechanism that is used in case of a probability result, obtained with <see cref="CategoriesCalculator.CalculateFailureMechanismSectionCategories"/></param> /// <param name="nValue">The length effect factor for the failuremechanism section that is being considered.</param> /// <returns><see cref="CalculationOutput{TResult}"/> containing the determined <see cref="FailureMechanismSectionCategoryGroup"/>.</returns> /// <exception cref="AssemblyToolKernelException">Thrown when the <see cref="result"/> equals null.</exception> /// <exception cref="AssemblyToolKernelException">Thrown when the <see cref="nValue"/> is NaN or smaller than 1.</exception> public TailorMadeCalculationInputFromProbabilityWithLengthEffectFactor(TailorMadeProbabilityCalculationResult result, FailureMechanismSectionCategory[] categories, double nValue) : base(result, categories) { ValidateNValue(nValue); NValue = nValue; }