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); } }
/// <summary> /// Creates a new instance of <see cref="FailureMechanismSectionAssemblyResultWrapper"/>. /// </summary> /// <param name="assemblyResult">The <see cref="FailureMechanismSectionAssemblyResult"/> to wrap.</param> /// <param name="probabilityMethod">The <see cref="AssemblyMethod"/> that is used to assemble the probabilities.</param> /// <param name="assemblyGroupMethod">The <see cref="AssemblyMethod"/> that is used to assemble the assembly group.</param> /// <exception cref="ArgumentNullException">Thrown when <paramref name="assemblyResult"/> is <c>null</c>.</exception> public FailureMechanismSectionAssemblyResultWrapper(FailureMechanismSectionAssemblyResult assemblyResult, AssemblyMethod probabilityMethod, AssemblyMethod assemblyGroupMethod) { if (assemblyResult == null) { throw new ArgumentNullException(nameof(assemblyResult)); } AssemblyResult = assemblyResult; ProbabilityMethod = probabilityMethod; AssemblyGroupMethod = assemblyGroupMethod; }
public void CreateResultWithProfileAndSectionProbabilities_WithValidResult_ReturnsExpectedFailureMechanismSectionAssemblyResult() { // Setup var random = new Random(21); var result = new FailureMechanismSectionAssemblyResult( random.NextDouble(0.001, 0.01), random.NextDouble(0.01, 0.1), random.NextDouble(), random.NextEnumValue <FailureMechanismSectionAssemblyGroup>()); // Call ResultWithProfileAndSectionProbabilities createdResult = FailureMechanismAssemblyCalculatorInputCreator.CreateResultWithProfileAndSectionProbabilities(result); // Assert ProbabilityAssert.AreEqual(result.ProfileProbability, createdResult.ProbabilityProfile); ProbabilityAssert.AreEqual(result.SectionProbability, createdResult.ProbabilitySection); }
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); } }
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); } }
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); } } }