示例#1
0
        /// <summary>
        /// Assembles the assessment section.
        /// </summary>
        /// <param name="assessmentSection">The assessment section which contains the failure mechanisms to assemble for.</param>
        /// <returns>An <see cref="AssessmentSectionAssemblyResultWrapper"/> containing the assembly result of the assessment section.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="assessmentSection"/> is <c>null</c>.</exception>
        /// <exception cref="AssemblyException">Thrown when <see cref="AssessmentSectionAssemblyResult"/> cannot be created.</exception>
        public static AssessmentSectionAssemblyResultWrapper AssembleAssessmentSection(AssessmentSection assessmentSection)
        {
            if (assessmentSection == null)
            {
                throw new ArgumentNullException(nameof(assessmentSection));
            }

            try
            {
                IAssemblyToolCalculatorFactory       calculatorFactory = AssemblyToolCalculatorFactory.Instance;
                IAssessmentSectionAssemblyCalculator calculator        =
                    calculatorFactory.CreateAssessmentSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance);

                IEnumerable <double>         assemblyResults = GetFailureMechanismAssemblyResults(assessmentSection);
                FailureMechanismContribution contribution    = assessmentSection.FailureMechanismContribution;
                return(calculator.AssembleAssessmentSection(assemblyResults, contribution.MaximumAllowableFloodingProbability, contribution.SignalFloodingProbability));
            }
            catch (AssessmentSectionAssemblyCalculatorException e)
            {
                throw new AssemblyException(e.Message, e);
            }
            catch (AssemblyException e)
            {
                throw new AssemblyException(Resources.AssessmentSectionAssemblyFactory_Error_while_assembling_failureMechanisms, e);
            }
        }
示例#2
0
        public void Instance_Always_ReturnsAnInstance()
        {
            // Call
            IAssemblyToolCalculatorFactory factory = AssemblyToolCalculatorFactory.Instance;

            // Assert
            Assert.IsInstanceOf <AssemblyToolCalculatorFactory>(factory);
        }
示例#3
0
        public void Instance_WhenSetToNull_ReturnsNewInstance()
        {
            // Setup
            IAssemblyToolCalculatorFactory firstFactory = AssemblyToolCalculatorFactory.Instance;

            AssemblyToolCalculatorFactory.Instance = null;

            // Call
            IAssemblyToolCalculatorFactory secondFactory = AssemblyToolCalculatorFactory.Instance;

            // Assert
            Assert.AreNotSame(firstFactory, secondFactory);
        }
示例#4
0
        public void CreateFailureMechanismSectionAssemblyGroupBoundariesCalculator_WithKernelFactory_ReturnsCalculator()
        {
            // Setup
            IAssemblyToolCalculatorFactory factory = AssemblyToolCalculatorFactory.Instance;

            using (new AssemblyToolKernelFactoryConfig())
            {
                // Call
                IFailureMechanismSectionAssemblyGroupBoundariesCalculator calculator = factory.CreateFailureMechanismSectionAssemblyGroupBoundariesCalculator(
                    AssemblyToolKernelFactory.Instance);

                // Assert
                Assert.IsInstanceOf <FailureMechanismSectionAssemblyGroupBoundariesCalculator>(calculator);
            }
        }
示例#5
0
        public void CreateAssessmentSectionAssemblyCalculator_WithKernelFactory_ReturnsCalculator()
        {
            // Setup
            IAssemblyToolCalculatorFactory factory = AssemblyToolCalculatorFactory.Instance;

            using (new AssemblyToolKernelFactoryConfig())
            {
                // Call
                IAssessmentSectionAssemblyCalculator calculator =
                    factory.CreateAssessmentSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance);

                // Assert
                Assert.IsInstanceOf <AssessmentSectionAssemblyCalculator>(calculator);
            }
        }
示例#6
0
        public void Instance_WhenSetToInstance_ReturnsThatInstance()
        {
            // Setup
            var mocks   = new MockRepository();
            var factory = mocks.Stub <IAssemblyToolCalculatorFactory>();

            mocks.ReplayAll();

            AssemblyToolCalculatorFactory.Instance = factory;

            // Call
            IAssemblyToolCalculatorFactory secondFactory = AssemblyToolCalculatorFactory.Instance;

            // Assert
            Assert.AreSame(factory, secondFactory);
            mocks.VerifyAll();
        }
示例#7
0
        /// <summary>
        /// Assembles the combined failure mechanism sections.
        /// </summary>
        /// <param name="assessmentSection">The assessment section that contains all
        /// the failure mechanism sections to assemble.</param>
        /// <returns>A collection of <see cref="CombinedFailureMechanismSectionAssemblyResult"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="assessmentSection"/>
        /// is <c>null</c>.</exception>
        /// <exception cref="AssemblyException">Thrown when a <see cref="CombinedFailureMechanismSectionAssemblyResult"/>
        /// cannot be created.</exception>
        public static IEnumerable <CombinedFailureMechanismSectionAssemblyResult> AssembleCombinedPerFailureMechanismSection(
            AssessmentSection assessmentSection)
        {
            if (assessmentSection == null)
            {
                throw new ArgumentNullException(nameof(assessmentSection));
            }

            try
            {
                IAssemblyToolCalculatorFactory       calculatorFactory = AssemblyToolCalculatorFactory.Instance;
                IAssessmentSectionAssemblyCalculator calculator        = calculatorFactory.CreateAssessmentSectionAssemblyCalculator(
                    AssemblyToolKernelFactory.Instance);

                Dictionary <IFailureMechanism, int> failureMechanismsToAssemble = assessmentSection.GetFailureMechanisms()
                                                                                  .Concat(assessmentSection.SpecificFailureMechanisms)
                                                                                  .Where(fm => fm.InAssembly)
                                                                                  .Select((fm, i) => new
                {
                    FailureMechanism = fm,
                    Index            = i
                })
                                                                                  .ToDictionary(x => x.FailureMechanism, x => x.Index);

                CombinedFailureMechanismSectionAssemblyResultWrapper output = calculator.AssembleCombinedFailureMechanismSections(
                    CombinedAssemblyFailureMechanismSectionFactory.CreateInput(assessmentSection, failureMechanismsToAssemble.Keys),
                    assessmentSection.ReferenceLine.Length);

                return(CombinedFailureMechanismSectionAssemblyResultFactory.Create(output, failureMechanismsToAssemble, assessmentSection));
            }
            catch (AssessmentSectionAssemblyCalculatorException e)
            {
                throw new AssemblyException(e.Message, e);
            }
            catch (AssemblyException e)
            {
                throw new AssemblyException(Resources.AssessmentSectionAssemblyFactory_Error_while_assembling_failureMechanisms, e);
            }
        }
示例#8
0
 /// <summary>
 /// Creates a new instance of <see cref="AssemblyToolCalculatorFactoryConfig"/>.
 /// Sets a <see cref="TestAssemblyToolCalculatorFactory"/> to <see cref="AssemblyToolCalculatorFactory.Instance"/>
 /// </summary>
 public AssemblyToolCalculatorFactoryConfig()
 {
     previousFactory = AssemblyToolCalculatorFactory.Instance;
     AssemblyToolCalculatorFactory.Instance = new TestAssemblyToolCalculatorFactory();
 }