Exemple #1
0
        /// <summary>
        /// Reads the <see cref="SpecificFailureMechanismEntity"/> and uses the information to create a <see cref="SpecificFailureMechanism"/>.
        /// </summary>
        /// <param name="entity">The <see cref="SpecificFailureMechanismEntity"/> to create a <see cref="SpecificFailureMechanism"/> with.</param>
        /// <param name="collector">The object keeping track of read operations.</param>
        /// <exception cref="ArgumentNullException">Thrown when any argument is <c>null</c>.</exception>
        internal static SpecificFailureMechanism Read(this SpecificFailureMechanismEntity entity, ReadConversionCollector collector)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

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

            var failureMechanism = new SpecificFailureMechanism
            {
                Name         = entity.Name,
                Code         = entity.Code,
                GeneralInput =
                {
                    N                          = (RoundedDouble)entity.N,
                    ApplyLengthEffectInSection = Convert.ToBoolean(entity.ApplyLengthEffectInSection)
                }
            };

            entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
            ReadFailureMechanismSectionResults(entity, failureMechanism, collector);
            return(failureMechanism);
        }
Exemple #2
0
        public void Read_CollectorNull_ThrowArgumentNullException()
        {
            // Setup
            var entity = new SpecificFailureMechanismEntity();

            // Call
            void Call() => entity.Read(null);

            // Assert
            string paramName = Assert.Throws <ArgumentNullException>(Call).ParamName;

            Assert.AreEqual("collector", paramName);
        }
Exemple #3
0
        public void Read_ValidEntityWithoutSections_ReturnSpecificFailureMechanism()
        {
            // Setup
            var entity = new SpecificFailureMechanismEntity
            {
                N = 1.1
            };

            var collector = new ReadConversionCollector();

            // Call
            SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);

            // Assert
            Assert.AreEqual(entity.FailureMechanismSectionEntities.Count, specificFailureMechanism.Sections.Count());
            Assert.IsNull(specificFailureMechanism.FailureMechanismSectionSourcePath);
        }
Exemple #4
0
        public void Read_EntityWithNullValues_ReturnSpecificFailureMechanism()
        {
            // Setup
            var entity = new SpecificFailureMechanismEntity
            {
                N = 1.1
            };
            var collector = new ReadConversionCollector();

            // Call
            SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);

            // Assert
            FailureMechanismAssemblyResult assemblyResult = specificFailureMechanism.AssemblyResult;

            Assert.IsNaN(assemblyResult.ManualFailureMechanismAssemblyProbability);
        }
Exemple #5
0
        public void Read_ValidEntity_ReturnSpecificFailureMechanism()
        {
            // Setup
            var  random                = new Random(21);
            bool inAssembly            = random.NextBoolean();
            var  probabilityResultType = random.NextEnumValue <FailureMechanismAssemblyProbabilityResultType>();

            const string filePath = "failureMechanismSections/File/Path";
            var          entity   = new SpecificFailureMechanismEntity
            {
                Name = "Specific failure mechanism name",
                Code = "FAALMECHANISME",
                N    = random.NextDouble(1.0, 20.0),
                ApplyLengthEffectInSection = Convert.ToByte(random.NextBoolean()),
                InAssembly = Convert.ToByte(inAssembly),
                InAssemblyInputComments  = "Some input text",
                InAssemblyOutputComments = "Some output text",
                NotInAssemblyComments    = "Some not in assembly text",
                FailureMechanismSectionCollectionSourcePath         = filePath,
                FailureMechanismAssemblyResultProbabilityResultType = Convert.ToByte(probabilityResultType),
                FailureMechanismAssemblyResultManualFailureMechanismAssemblyProbability = random.NextDouble(),
                FailureMechanismSectionEntities =
                {
                    CreateSimpleFailureMechanismSectionEntity()
                }
            };

            var collector = new ReadConversionCollector();

            // Call
            SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);

            // Assert
            FailureMechanismEntityTestHelper.AssertIFailureMechanismEntityProperties(entity, specificFailureMechanism);

            Assert.AreEqual(entity.Name, specificFailureMechanism.Name);
            Assert.AreEqual(entity.Code, specificFailureMechanism.Code);
            Assert.AreEqual(entity.FailureMechanismSectionEntities.Count, specificFailureMechanism.Sections.Count());
            Assert.AreEqual(filePath, specificFailureMechanism.FailureMechanismSectionSourcePath);

            Assert.AreEqual(entity.N, specificFailureMechanism.GeneralInput.N, specificFailureMechanism.GeneralInput.N.GetAccuracy());
            Assert.AreEqual(Convert.ToBoolean(entity.ApplyLengthEffectInSection), specificFailureMechanism.GeneralInput.ApplyLengthEffectInSection);
        }
Exemple #6
0
        public void Read_ValidEntityWithSections_ReturnSpecificFailureMechanism()
        {
            // Setup
            const string filePath = "sections/File/Path";
            FailureMechanismSectionEntity failureMechanismSectionEntity = CreateSimpleFailureMechanismSectionEntity();

            var sectionResultEntity = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity
            {
                FailureMechanismSectionEntity = failureMechanismSectionEntity
            };

            SectionResultTestHelper.SetSectionResult(sectionResultEntity);

            failureMechanismSectionEntity.NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntities = new List <NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity>
            {
                sectionResultEntity
            };

            var entity = new SpecificFailureMechanismEntity
            {
                N = 1.1,
                FailureMechanismSectionEntities = new List <FailureMechanismSectionEntity>
                {
                    failureMechanismSectionEntity
                },
                FailureMechanismSectionCollectionSourcePath = filePath
            };

            var collector = new ReadConversionCollector();

            // Call
            SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);

            // Assert
            Assert.AreEqual(filePath, specificFailureMechanism.FailureMechanismSectionSourcePath);
            Assert.AreEqual(entity.FailureMechanismSectionEntities.Count, specificFailureMechanism.Sections.Count());

            SectionResultTestHelper.AssertSectionResult(entity.FailureMechanismSectionEntities
                                                        .SelectMany(fms => fms.NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntities)
                                                        .Single(),
                                                        specificFailureMechanism.SectionResults.Single());
        }