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);
                }
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }