public void CreateFailureMechanismSectionAssemblyGroupBoundaries_CalculatorRan_ReturnsOutput() { // Setup var random = new Random(11); double signalFloodingProbability = random.NextDouble(); double maximumAllowableFloodingProbability = random.NextDouble(); using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator; // Call FailureMechanismSectionAssemblyGroupBoundaries[] output = FailureMechanismSectionAssemblyGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(signalFloodingProbability, maximumAllowableFloodingProbability) .ToArray(); // Assert FailureMechanismSectionAssemblyGroupBoundaries[] calculatorOutput = calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput.ToArray(); int expectedNrOfOutputs = calculatorOutput.Length; Assert.AreEqual(expectedNrOfOutputs, output.Length); for (var i = 0; i < expectedNrOfOutputs; i++) { FailureMechanismSectionAssemblyGroupBoundaries expectedOutput = calculatorOutput[i]; FailureMechanismSectionAssemblyGroupBoundaries actualOutput = calculatorOutput[i]; Assert.AreEqual(expectedOutput.FailureMechanismSectionAssemblyGroup, actualOutput.FailureMechanismSectionAssemblyGroup); Assert.AreEqual(expectedOutput.LowerBoundary, actualOutput.LowerBoundary); Assert.AreEqual(expectedOutput.UpperBoundary, actualOutput.UpperBoundary); } } }
/// <summary> /// Gets the failure mechanism section assembly group boundaries based on the assessment section. /// </summary> /// <param name="assessmentSection">The <see cref="IAssessmentSection"/>.</param> /// <exception cref="ArgumentNullException">Thrown when <see cref="assessmentSection"/> is <c>null</c>.</exception> /// <returns>A collection of <see cref="FailureMechanismSectionAssemblyGroupBoundaries"/>.</returns> /// <remarks>An empty collection of <see cref="FailureMechanismSectionAssemblyGroupBoundaries"/> /// is returned when the boundaries cannot be assembled.</remarks> public static IEnumerable <FailureMechanismSectionAssemblyGroupBoundaries> GetFailureMechanismSectionAssemblyGroupBoundaries(IAssessmentSection assessmentSection) { if (assessmentSection == null) { throw new ArgumentNullException(nameof(assessmentSection)); } try { FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; return(FailureMechanismSectionAssemblyGroupBoundariesFactory .CreateFailureMechanismSectionAssemblyGroupBoundaries(failureMechanismContribution.SignalFloodingProbability, failureMechanismContribution.MaximumAllowableFloodingProbability) .Concat(new[] { new FailureMechanismSectionAssemblyGroupBoundaries(double.NaN, double.NaN, FailureMechanismSectionAssemblyGroup.Dominant), new FailureMechanismSectionAssemblyGroupBoundaries(double.NaN, double.NaN, FailureMechanismSectionAssemblyGroup.NotDominant), new FailureMechanismSectionAssemblyGroupBoundaries(double.NaN, double.NaN, FailureMechanismSectionAssemblyGroup.NotRelevant) }) .ToArray()); } catch (AssemblyException) { return(Enumerable.Empty <FailureMechanismSectionAssemblyGroupBoundaries>()); } }
public void CreateFailureMechanismSectionAssemblyGroupBoundaries_CalculatorThrowsException_ThrowsAssemblyException() { // Setup using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator; calculator.ThrowExceptionOnCalculate = true; // Call void Call() => FailureMechanismSectionAssemblyGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(0, 0); // Assert var exception = Assert.Throws <AssemblyException>(Call); Exception innerException = exception.InnerException; Assert.IsInstanceOf <AssessmentSectionAssemblyGroupBoundariesCalculatorException>(innerException); Assert.AreEqual(innerException.Message, exception.Message); } }
public void CreateFailureMechanismSectionAssemblyGroupBoundaries_WithInput_SetsInputOnCalculator() { // Setup var random = new Random(11); double signalFloodingProbability = random.NextDouble(); double maximumAllowableFloodingProbability = random.NextDouble(); using (new AssemblyToolCalculatorFactoryConfig()) { var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; FailureMechanismSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyGroupBoundariesCalculator; // Call FailureMechanismSectionAssemblyGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(signalFloodingProbability, maximumAllowableFloodingProbability); // Assert Assert.AreEqual(signalFloodingProbability, calculator.SignalFloodingProbability); Assert.AreEqual(maximumAllowableFloodingProbability, calculator.MaximumAllowableFloodingProbability); } }