예제 #1
0
 private static ExportableFailureMechanismCombinedSectionAssemblyResult CreateExportableFailureMechanismCombinedSectionAssemblyResult(
     FailureMechanismSectionAssemblyGroup sectionAssemblyGroup, AssemblyMethod assemblyMethod,
     ExportableFailureMechanismType failureMechanismType, string failureMechanismCode, string failureMechanismName)
 {
     return(new ExportableFailureMechanismCombinedSectionAssemblyResult(
                new ExportableFailureMechanismSubSectionAssemblyResult(sectionAssemblyGroup, ExportableAssemblyMethodFactory.Create(assemblyMethod)),
                failureMechanismType, failureMechanismCode, failureMechanismName));
 }
예제 #2
0
 private static void AssertSubSection(FailureMechanismSectionAssemblyGroup?subSectionGroup, string subSectionCode,
                                      ExportableFailureMechanismType failureMechanismType,
                                      ExportableFailureMechanismCombinedSectionAssemblyResult actualResult)
 {
     Assert.AreEqual(subSectionGroup, actualResult.SectionAssemblyResult.AssemblyGroup);
     Assert.AreEqual(subSectionCode, actualResult.Code);
     Assert.AreEqual(failureMechanismType, actualResult.FailureMechanismType);
 }
예제 #3
0
        public void Create_WithFailureMechanismType_ReturnsExpectedValues(
            ExportableFailureMechanismType failureMechanismType, SerializableFailureMechanismType expectedFailureMechanismType)
        {
            // Call
            SerializableFailureMechanismType serializableFailureMechanismType = SerializableFailureMechanismTypeCreator.Create(
                failureMechanismType);

            // Assert
            Assert.AreEqual(expectedFailureMechanismType, serializableFailureMechanismType);
        }
예제 #4
0
        public void Create_InvalidFailureMechanismType_ThrowInvalidEnumArgumentException()
        {
            // Setup
            const ExportableFailureMechanismType failureMechanismType = (ExportableFailureMechanismType)999;

            // Call
            void Call() => SerializableFailureMechanismTypeCreator.Create(failureMechanismType);

            // Assert
            var message = $"The value of argument 'failureMechanismType' ({failureMechanismType}) is invalid for Enum type '{nameof(ExportableFailureMechanismType)}'.";

            TestHelper.AssertThrowsArgumentExceptionAndTestMessage <InvalidEnumArgumentException>(Call, message);
        }
예제 #5
0
        private static void AssertExportableFailureMechanism(IFailureMechanism <FailureMechanismSectionResult> failureMechanism,
                                                             ExportableFailureMechanismType expectedFailureMechanismType,
                                                             ExportableFailureMechanism actualExportableFailureMechanism)
        {
            Assert.AreEqual(expectedFailureMechanismType, actualExportableFailureMechanism.FailureMechanismType);
            Assert.AreEqual(failureMechanism.Code, actualExportableFailureMechanism.Code);

            ExportableFailureMechanismAssemblyResult exportableFailureMechanismAssemblyResult = actualExportableFailureMechanism.FailureMechanismAssembly;

            Assert.AreEqual(0.1, exportableFailureMechanismAssemblyResult.Probability);
            Assert.AreEqual(ExportableAssemblyMethod.BOI1A1, exportableFailureMechanismAssemblyResult.AssemblyMethod);

            Assert.AreEqual(failureMechanism.SectionResults.Count(), actualExportableFailureMechanism.SectionAssemblyResults.Count());
        }
예제 #6
0
 private static void AddFailureMechanismWhenInAssembly <TFailureMechanism, TSectionResult>(
     List <ExportableFailureMechanism> exportableFailureMechanisms, TFailureMechanism failureMechanism, IAssessmentSection assessmentSection,
     Func <TFailureMechanism, IAssessmentSection, FailureMechanismAssemblyResultWrapper> assembleFailureMechanismFunc,
     Func <TSectionResult, TFailureMechanism, IAssessmentSection, FailureMechanismSectionAssemblyResultWrapper> assembleFailureMechanismSectionFunc,
     ExportableFailureMechanismType failureMechanismType)
     where TFailureMechanism : IFailureMechanism <TSectionResult>
     where TSectionResult : FailureMechanismSectionResult
 {
     if (failureMechanism.InAssembly)
     {
         exportableFailureMechanisms.Add(
             ExportableFailureMechanismFactory.CreateExportableFailureMechanism(
                 failureMechanism, assessmentSection, assembleFailureMechanismFunc, assembleFailureMechanismSectionFunc, failureMechanismType));
     }
 }
예제 #7
0
        /// <summary>
        /// Creates a new instance of <see cref="ExportableFailureMechanismCombinedSectionAssemblyResult"/>
        /// </summary>
        /// <param name="sectionAssemblyResult">The assembly result of the combined section.</param>
        /// <param name="failureMechanismType">The type of the failure mechanism.</param>
        /// <param name="code">The code of the failure mechanism.</param>
        /// <param name="name">The name of the failure mechanism.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="sectionAssemblyResult"/> is <c>null</c>.</exception>
        public ExportableFailureMechanismCombinedSectionAssemblyResult(ExportableFailureMechanismSubSectionAssemblyResult sectionAssemblyResult,
                                                                       ExportableFailureMechanismType failureMechanismType,
                                                                       string code,
                                                                       string name)
        {
            if (sectionAssemblyResult == null)
            {
                throw new ArgumentNullException(nameof(sectionAssemblyResult));
            }

            SectionAssemblyResult = sectionAssemblyResult;
            FailureMechanismType  = failureMechanismType;
            Code = code;
            Name = name;
        }
        /// <summary>
        /// Creates a new instance of <see cref="ExportableFailureMechanism"/>.
        /// </summary>
        /// <param name="failureMechanismAssembly">The assembly result of the failure mechanism.</param>
        /// <param name="sectionAssemblyResults">The assembly results for the failure mechanism sections.</param>
        /// <param name="failureMechanismType">The type of the failure mechanism.</param>
        /// <param name="code">The code of the failure mechanism.</param>
        /// <param name="name">The name of the failure mechanism.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="failureMechanismAssembly"/>
        /// or <paramref name="sectionAssemblyResults"/> is <c>null</c>.</exception>
        public ExportableFailureMechanism(ExportableFailureMechanismAssemblyResult failureMechanismAssembly,
                                          IEnumerable <ExportableFailureMechanismSectionAssemblyWithProbabilityResult> sectionAssemblyResults,
                                          ExportableFailureMechanismType failureMechanismType, string code, string name)
        {
            if (failureMechanismAssembly == null)
            {
                throw new ArgumentNullException(nameof(failureMechanismAssembly));
            }

            if (sectionAssemblyResults == null)
            {
                throw new ArgumentNullException(nameof(sectionAssemblyResults));
            }

            FailureMechanismAssembly = failureMechanismAssembly;
            SectionAssemblyResults   = sectionAssemblyResults;
            FailureMechanismType     = failureMechanismType;
            Code = code;
            Name = name;
        }
예제 #9
0
        /// <summary>
        /// Creates a <see cref="SerializableFailureMechanismType"/> based on <paramref name="failureMechanismType"/>.
        /// </summary>
        /// <param name="failureMechanismType">The <see cref="ExportableFailureMechanismType"/> to
        /// create a <see cref="SerializableFailureMechanismType"/> for.</param>
        /// <returns>A <see cref="SerializableFailureMechanismType"/>.</returns>
        /// <exception cref="InvalidEnumArgumentException">Thrown when <paramref name="failureMechanismType"/>
        /// is an invalid value.</exception>
        /// <exception cref="NotSupportedException">Thrown when <paramref name="failureMechanismType"/>
        /// is a valid value, but unsupported.</exception>
        public static SerializableFailureMechanismType Create(ExportableFailureMechanismType failureMechanismType)
        {
            if (!Enum.IsDefined(typeof(ExportableFailureMechanismType), failureMechanismType))
            {
                throw new InvalidEnumArgumentException(nameof(failureMechanismType),
                                                       (int)failureMechanismType,
                                                       typeof(ExportableFailureMechanismType));
            }

            switch (failureMechanismType)
            {
            case ExportableFailureMechanismType.Generic:
                return(SerializableFailureMechanismType.Generic);

            case ExportableFailureMechanismType.Specific:
                return(SerializableFailureMechanismType.Specific);

            default:
                throw new NotSupportedException();
            }
        }
예제 #10
0
        /// <summary>
        /// Creates an <see cref="ExportableFailureMechanism"/>
        /// with assembly results based on the input parameters.
        /// </summary>
        /// <param name="failureMechanism">The failure mechanism to create an <see cref="ExportableFailureMechanism"/> for.</param>
        /// <param name="assessmentSection">The assessment section the failure mechanism belongs to.</param>
        /// <param name="assembleFailureMechanismFunc">The <see cref="Func{T1,T2,TResult}"/> to perform
        /// the failure mechanism assembly.</param>
        /// <param name="assembleFailureMechanismSectionFunc">The <see cref="Func{T1,T2,T3,TResult}"/>
        /// to perform the failure mechanism section assembly.</param>
        /// <param name="failureMechanismType">The type of the failure mechanism.</param>
        /// <typeparam name="TFailureMechanism">The type of the failure mechanism.</typeparam>
        /// <typeparam name="TSectionResult">The type of the section result.</typeparam>
        /// <returns>An <see cref="ExportableFailureMechanism"/> with assembly results.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="failureMechanism"/>,
        /// <paramref name="assessmentSection"/>, <paramref name="assembleFailureMechanismFunc"/> or
        /// <paramref name="assembleFailureMechanismSectionFunc"/> is <c>null</c>.</exception>
        /// <exception cref="AssemblyException">Thrown when assembly results cannot be created.</exception>
        public static ExportableFailureMechanism CreateExportableFailureMechanism <TFailureMechanism, TSectionResult>(
            TFailureMechanism failureMechanism, IAssessmentSection assessmentSection,
            Func <TFailureMechanism, IAssessmentSection, FailureMechanismAssemblyResultWrapper> assembleFailureMechanismFunc,
            Func <TSectionResult, TFailureMechanism, IAssessmentSection, FailureMechanismSectionAssemblyResultWrapper> assembleFailureMechanismSectionFunc,
            ExportableFailureMechanismType failureMechanismType)
            where TFailureMechanism : IFailureMechanism <TSectionResult>
            where TSectionResult : FailureMechanismSectionResult
        {
            if (failureMechanism == null)
            {
                throw new ArgumentNullException(nameof(failureMechanism));
            }

            if (assessmentSection == null)
            {
                throw new ArgumentNullException(nameof(assessmentSection));
            }

            if (assembleFailureMechanismFunc == null)
            {
                throw new ArgumentNullException(nameof(assembleFailureMechanismFunc));
            }

            if (assembleFailureMechanismSectionFunc == null)
            {
                throw new ArgumentNullException(nameof(assembleFailureMechanismSectionFunc));
            }

            FailureMechanismAssemblyResultWrapper assemblyResultWrapper = assembleFailureMechanismFunc(failureMechanism, assessmentSection);

            return(new ExportableFailureMechanism(
                       new ExportableFailureMechanismAssemblyResult(
                           assemblyResultWrapper.AssemblyResult,
                           ExportableAssemblyMethodFactory.Create(assemblyResultWrapper.AssemblyMethod)),
                       CreateExportableFailureMechanismSectionResults(
                           failureMechanism, assessmentSection, assembleFailureMechanismSectionFunc),
                       failureMechanismType, failureMechanism.Code, failureMechanism.Name));
        }
예제 #11
0
 private static void AssertExportableFailureMechanismCombinedSectionAssemblyResult(IFailureMechanism failureMechanism,
                                                                                   ExportableFailureMechanismType expectedFailureMechanismType,
                                                                                   ExportableFailureMechanismCombinedSectionAssemblyResult actualExportableFailureMechanismCombinedSectionAssemblyResult)
 {
     Assert.AreEqual(failureMechanism.Code, actualExportableFailureMechanismCombinedSectionAssemblyResult.Code);
     Assert.AreEqual(expectedFailureMechanismType, actualExportableFailureMechanismCombinedSectionAssemblyResult.FailureMechanismType);
     Assert.AreEqual(failureMechanism.Name, actualExportableFailureMechanismCombinedSectionAssemblyResult.Name);
     Assert.AreEqual(FailureMechanismSectionAssemblyGroup.Dominant, actualExportableFailureMechanismCombinedSectionAssemblyResult.SectionAssemblyResult.AssemblyGroup);
     Assert.AreEqual(ExportableAssemblyMethod.BOI3B1, actualExportableFailureMechanismCombinedSectionAssemblyResult.SectionAssemblyResult.AssemblyMethod);
 }