public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeManual_NoInputOnCalculatorAndReturnsOutput() { // Setup var random = new Random(21); var failureMechanismResult = new FailureMechanismAssemblyResult { ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Manual, ManualFailureMechanismAssemblyProbability = random.NextDouble() }; using (new AssemblyToolCalculatorFactoryConfig()) { // Call FailureMechanismAssemblyResultWrapper assemblyResult = FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( random.NextDouble(), Enumerable.Empty <FailureMechanismSectionAssemblyResult>(), random.NextBoolean(), failureMechanismResult); // Assert var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; Assert.AreEqual(0, calculator.FailureMechanismN); Assert.IsNull(calculator.SectionAssemblyResultsInput); Assert.IsFalse(calculator.ApplyLengthEffect); Assert.AreEqual(failureMechanismResult.ManualFailureMechanismAssemblyProbability, assemblyResult.AssemblyResult); Assert.AreEqual(AssemblyMethod.Manual, assemblyResult.AssemblyMethod); } }
public void AssembleFailureMechanism_FailureMechanismAssemblyResultNull_ThrowsArgumentNullException() { // Call void Call() => FailureMechanismAssemblyResultFactory.AssembleFailureMechanism(0, Array.Empty <FailureMechanismSectionAssemblyResult>(), false, null); // Assert var exception = Assert.Throws <ArgumentNullException>(Call); Assert.AreEqual("failureMechanismAssemblyResult", exception.ParamName); }
public void AssembleFailureMechanism_CalculatorRan_ReturnsOutput() { // Setup using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; // Call FailureMechanismAssemblyResultWrapper assemblyResult = FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( 0, Enumerable.Empty <FailureMechanismSectionAssemblyResult>(), false, new FailureMechanismAssemblyResult()); // Assert Assert.AreSame(calculator.AssemblyResultOutput, assemblyResult); } }
public void AssembleFailureMechanism_CalculatorThrowsException_ThrowsAssemblyException() { // Setup using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; calculator.ThrowExceptionOnCalculate = true; // Call void Call() => FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( 0, Enumerable.Empty <FailureMechanismSectionAssemblyResult>(), false, new FailureMechanismAssemblyResult()); // Assert var exception = Assert.Throws <AssemblyException>(Call); Exception innerException = exception.InnerException; Assert.IsInstanceOf <FailureMechanismAssemblyCalculatorException>(innerException); Assert.AreEqual(innerException.Message, exception.Message); } }
/// <summary> /// Assembles the failure mechanism based on its input arguments. /// </summary> /// <param name="failureMechanism">The failure mechanism to assemble.</param> /// <param name="assessmentSection">The <see cref="IAssessmentSection"/> the <paramref name="failureMechanism"/> /// belongs to.</param> /// <returns>A <see cref="FailureMechanismAssemblyResultWrapper"/> with the assembly result.</returns> /// <exception cref="ArgumentNullException">Thrown when any argument is <c>null</c>.</exception> /// <exception cref="AssemblyException">Thrown when the failure mechanism cannot be assembled.</exception> public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(PipingStructureFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); } if (assessmentSection == null) { throw new ArgumentNullException(nameof(assessmentSection)); } Func <NonAdoptableFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performSectionAssemblyFunc = sr => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, assessmentSection); return(FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( failureMechanism.GeneralInput.N, failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) .ToArray(), failureMechanism.GeneralInput.ApplyLengthEffectInSection, failureMechanism.AssemblyResult)); }
public void AssembleFailureMechanism_WithInputWithProbabilityResultTypeAutomatic_SetsInputOnCalculator() { // Setup var random = new Random(21); double n = random.NextDouble(); bool applyLengthEffect = random.NextBoolean(); IEnumerable <FailureMechanismSectionAssemblyResult> sectionResults = Enumerable.Empty <FailureMechanismSectionAssemblyResult>(); using (new AssemblyToolCalculatorFactoryConfig()) { // Call FailureMechanismAssemblyResultFactory.AssembleFailureMechanism(n, sectionResults, applyLengthEffect, new FailureMechanismAssemblyResult()); // Assert var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismAssemblyCalculator; Assert.AreEqual(n, calculator.FailureMechanismN); Assert.AreSame(sectionResults, calculator.SectionAssemblyResultsInput); Assert.AreEqual(applyLengthEffect, calculator.ApplyLengthEffect); } }
/// <summary> /// Assembles the failure mechanism based on its input arguments. /// </summary> /// <param name="failureMechanism">The <see cref="PipingFailureMechanism"/> to assemble.</param> /// <param name="assessmentSection">The <see cref="IAssessmentSection"/> the <paramref name="failureMechanism"/> /// belongs to.</param> /// <returns>A <see cref="FailureMechanismAssemblyResultWrapper"/> with the assembly result.</returns> /// <exception cref="ArgumentNullException">Thrown when any argument is <c>null</c>.</exception> /// <exception cref="AssemblyException">Thrown when the failure mechanism could not be assembled.</exception> public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism(PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); } if (assessmentSection == null) { throw new ArgumentNullException(nameof(assessmentSection)); } Func <AdoptableWithProfileProbabilityFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performSectionAssemblyFunc = sr => AssembleSection(sr, failureMechanism, assessmentSection); return(FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( failureMechanism.PipingProbabilityAssessmentInput.GetN(assessmentSection.ReferenceLine.Length), failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) .ToArray(), failureMechanism.GeneralInput.ApplyLengthEffectInSection, failureMechanism.AssemblyResult)); }
/// <summary> /// Assembles the failure mechanism based on its input arguments. /// </summary> /// <param name="failureMechanism">The failure mechanism to assemble.</param> /// <param name="assessmentSection">The <see cref="IAssessmentSection"/> the <paramref name="failureMechanism"/> /// belongs to.</param> /// <returns>A <see cref="FailureMechanismAssemblyResultWrapper"/> with the assembly result.</returns> /// <typeparam name="TFailureMechanism">The type of failure mechanism to assemble.</typeparam> /// <exception cref="ArgumentNullException">Thrown when any argument is <c>null</c>.</exception> /// <exception cref="AssemblyException">Thrown when the failure mechanism cannot be assembled.</exception> public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism <TFailureMechanism>(TFailureMechanism failureMechanism, IAssessmentSection assessmentSection) where TFailureMechanism : IHasGeneralInput, IFailureMechanism <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult> { if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); } if (assessmentSection == null) { throw new ArgumentNullException(nameof(assessmentSection)); } Func <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performSectionAssemblyFunc = sr => AssembleSection(sr, failureMechanism, assessmentSection); return(FailureMechanismAssemblyResultFactory.AssembleFailureMechanism( failureMechanism.GeneralInput.N, failureMechanism.SectionResults.Select(sr => AssemblyToolHelper.AssembleFailureMechanismSection(sr, performSectionAssemblyFunc)) .ToArray(), failureMechanism.GeneralInput.ApplyLengthEffectInSection, failureMechanism.AssemblyResult)); }