/// <summary>
        /// Creates a <see cref="ProbabilisticPipingCalculationOutputEntity"/> based on the information
        /// of the <see cref="ProbabilisticPipingOutput"/>.
        /// </summary>
        /// <param name="output">The calculation output for piping failure mechanism to
        /// create a database entity for.</param>
        /// <returns>A new <see cref="ProbabilisticPipingCalculationOutputEntity"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="output"/>
        /// is <c>null</c>.</exception>
        public static ProbabilisticPipingCalculationOutputEntity Create(this ProbabilisticPipingOutput output)
        {
            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var outputEntity = new ProbabilisticPipingCalculationOutputEntity
            {
                ProfileSpecificReliability = output.ProfileSpecificOutput.Reliability.ToNaNAsNull(),
                SectionSpecificReliability = output.SectionSpecificOutput.Reliability.ToNaNAsNull()
            };

            if (output.ProfileSpecificOutput is PartialProbabilisticFaultTreePipingOutput profileSpecificFaultTreePipingOutput &&
                output.SectionSpecificOutput is PartialProbabilisticFaultTreePipingOutput sectionSpecificFaultTreePipingOutput)
            {
                outputEntity.GeneralResultFaultTreeIllustrationPointEntity  = profileSpecificFaultTreePipingOutput.GeneralResult?.CreateGeneralResultFaultTreeIllustrationPointEntity();
                outputEntity.GeneralResultFaultTreeIllustrationPointEntity1 = sectionSpecificFaultTreePipingOutput.GeneralResult?.CreateGeneralResultFaultTreeIllustrationPointEntity();
            }

            if (output.ProfileSpecificOutput is PartialProbabilisticSubMechanismPipingOutput profileSpecificSubMechanismPipingOutput &&
                output.SectionSpecificOutput is PartialProbabilisticSubMechanismPipingOutput sectionSpecificSubMechanismPipingOutput)
            {
                outputEntity.GeneralResultSubMechanismIllustrationPointEntity  = profileSpecificSubMechanismPipingOutput.GeneralResult?.CreateGeneralResultSubMechanismIllustrationPointEntity();
                outputEntity.GeneralResultSubMechanismIllustrationPointEntity1 = sectionSpecificSubMechanismPipingOutput.GeneralResult?.CreateGeneralResultSubMechanismIllustrationPointEntity();
            }

            return(outputEntity);
        }
        public void Read_EntityWithProbabilisticPipingCalculationOutputEntity_CalculationWithProbabilisticPipingOutput()
        {
            // Setup
            var entity = new ProbabilisticPipingCalculationEntity
            {
                ProbabilisticPipingCalculationOutputEntities =
                {
                    new ProbabilisticPipingCalculationOutputEntity()
                }
            };

            var collector = new ReadConversionCollector();

            // Call
            ProbabilisticPipingCalculationScenario calculation = entity.Read(collector);

            // Assert
            ProbabilisticPipingOutput output = calculation.Output;

            Assert.IsNotNull(output);

            Assert.IsNaN(output.ProfileSpecificOutput.Reliability);
            Assert.IsNull(((PartialProbabilisticFaultTreePipingOutput)output.ProfileSpecificOutput).GeneralResult);
            Assert.IsNaN(output.SectionSpecificOutput.Reliability);
            Assert.IsNull(((PartialProbabilisticFaultTreePipingOutput)output.ProfileSpecificOutput).GeneralResult);
        }
Esempio n. 3
0
        public void Create_HasCalculationOutput_EntityHasPipingCalculationOutputEntity()
        {
            // Setup
            var registry = new PersistenceRegistry();

            var output = new ProbabilisticPipingOutput(PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput(),
                                                       PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput());

            var calculation = new ProbabilisticPipingCalculationScenario
            {
                Output = output
            };

            // Call
            ProbabilisticPipingCalculationEntity entity = calculation.Create(registry, 0);

            // Assert
            ProbabilisticPipingCalculationOutputEntity outputEntity = entity.ProbabilisticPipingCalculationOutputEntities.SingleOrDefault();

            Assert.IsNotNull(outputEntity);
            Assert.AreEqual(output.ProfileSpecificOutput.Reliability, outputEntity.ProfileSpecificReliability);
            Assert.AreEqual(output.SectionSpecificOutput.Reliability, outputEntity.SectionSpecificReliability);
            GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(((PartialProbabilisticFaultTreePipingOutput)output.ProfileSpecificOutput).GeneralResult,
                                                                            outputEntity.GeneralResultFaultTreeIllustrationPointEntity);
            GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(((PartialProbabilisticFaultTreePipingOutput)output.SectionSpecificOutput).GeneralResult,
                                                                            outputEntity.GeneralResultFaultTreeIllustrationPointEntity1);
        }
        public void Clone_AllPropertiesSet_ReturnNewInstanceWithCopiedValues()
        {
            // Setup
            ProbabilisticPipingOutput original = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints();

            // Call
            object clone = original.Clone();

            // Assert
            CoreCloneAssert.AreObjectClones(original, clone, PipingCloneAssert.AreClones);
        }
        public void ClearIllustrationPoints_Always_ReturnsAffectedCalculations()
        {
            // Setup
            var calculationWitNoIllustrationPoints = new ProbabilisticPipingCalculationScenario
            {
                Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints()
            };

            var calculationWithIllustrationPoints = new ProbabilisticPipingCalculationScenario
            {
                Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints()
            };

            ProbabilisticPipingCalculationScenario[] calculations =
            {
                calculationWitNoIllustrationPoints,
                calculationWithIllustrationPoints,
                new ProbabilisticPipingCalculationScenario()
            };

            var mocks         = new MockRepository();
            var inquiryHelper = mocks.StrictMock <IInquiryHelper>();

            mocks.ReplayAll();

            var handler = new ClearIllustrationPointsOfProbabilisticPipingCalculationCollectionChangeHandler(
                inquiryHelper, calculations);

            // Call
            IEnumerable <IObservable> affectedObjects = handler.ClearIllustrationPoints();

            // Assert
            CollectionAssert.AreEquivalent(new[]
            {
                calculationWithIllustrationPoints
            }, affectedObjects);

            ProbabilisticPipingCalculationScenario[] calculationsWithOutput =
            {
                calculationWitNoIllustrationPoints,
                calculationWithIllustrationPoints
            };
            Assert.IsTrue(calculationsWithOutput.All(calc => calc.HasOutput));

            Assert.IsTrue(calculationsWithOutput.All(calc =>
            {
                ProbabilisticPipingOutput output = calc.Output;

                return(!output.ProfileSpecificOutput.HasGeneralResult &&
                       !output.SectionSpecificOutput.HasGeneralResult);
            }));
            mocks.VerifyAll();
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            PartialProbabilisticPipingOutput <TestTopLevelIllustrationPoint> sectionSpecificOutput = PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput();
            PartialProbabilisticPipingOutput <TestTopLevelIllustrationPoint> profileSpecificOutput = PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput();

            // Call
            var output = new ProbabilisticPipingOutput(sectionSpecificOutput, profileSpecificOutput);

            // Assert
            Assert.IsInstanceOf <CloneableObservable>(output);
            Assert.IsInstanceOf <ICalculationOutput>(output);
            Assert.AreSame(sectionSpecificOutput, output.SectionSpecificOutput);
            Assert.AreSame(profileSpecificOutput, output.ProfileSpecificOutput);
        }
        public void Create_CalculationWithOutput_ReturnEntityWithOutput()
        {
            // Setup
            var output = new ProbabilisticPipingOutput(PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput(null),
                                                       PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput(null));

            // Call
            ProbabilisticPipingCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.AreEqual(output.ProfileSpecificOutput.Reliability, entity.ProfileSpecificReliability);
            Assert.AreEqual(output.SectionSpecificOutput.Reliability, entity.SectionSpecificReliability);
            Assert.IsNull(entity.GeneralResultFaultTreeIllustrationPointEntity);
            Assert.IsNull(entity.GeneralResultFaultTreeIllustrationPointEntity1);
            Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity);
            Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity1);
        }
        public void Create_CalculationWithNaNOutput_ReturnEntityWithNullOutput()
        {
            // Setup
            var output = new ProbabilisticPipingOutput(
                new PartialProbabilisticFaultTreePipingOutput(double.NaN, null),
                new PartialProbabilisticFaultTreePipingOutput(double.NaN, null));

            // Call
            ProbabilisticPipingCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.IsNull(entity.ProfileSpecificReliability);
            Assert.IsNull(entity.SectionSpecificReliability);
            Assert.IsNull(entity.GeneralResultFaultTreeIllustrationPointEntity);
            Assert.IsNull(entity.GeneralResultFaultTreeIllustrationPointEntity1);
            Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity);
            Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity1);
        }
Esempio n. 9
0
        public void ClearIllustrationPoints_CalculationWithOutput_ClearsIllustrationPointResult()
        {
            // Setup
            PartialProbabilisticPipingOutput <TestTopLevelIllustrationPoint> sectionSpecificOutput = PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput();
            PartialProbabilisticPipingOutput <TestTopLevelIllustrationPoint> profileSpecificOutput = PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput();
            var output      = new ProbabilisticPipingOutput(sectionSpecificOutput, profileSpecificOutput);
            var calculation = new TestProbabilisticPipingCalculation
            {
                Output = output
            };

            // Call
            calculation.ClearIllustrationPoints();

            // Assert
            Assert.AreSame(output, calculation.Output);
            Assert.IsNull(((PartialProbabilisticPipingOutput <TestTopLevelIllustrationPoint>)output.SectionSpecificOutput).GeneralResult);
            Assert.IsNull(((PartialProbabilisticPipingOutput <TestTopLevelIllustrationPoint>)output.ProfileSpecificOutput).GeneralResult);
        }
        public void ClearIllustrationPoints_OutputWithoutGeneralResult_OtherOutputIsNotAffected()
        {
            // Setup
            var    random = new Random(39);
            double sectionSpecificReliability = random.NextDouble();
            double profileSpecificReliability = random.NextDouble();
            var    sectionSpecificOutput      = new TestPartialProbabilisticPipingOutput(sectionSpecificReliability, null);
            var    profileSpecificOutput      = new TestPartialProbabilisticPipingOutput(profileSpecificReliability, null);
            var    output = new ProbabilisticPipingOutput(sectionSpecificOutput, profileSpecificOutput);

            // Call
            output.ClearIllustrationPoints();

            // Assert
            Assert.AreEqual(sectionSpecificReliability, output.SectionSpecificOutput.Reliability);
            Assert.IsFalse(output.SectionSpecificOutput.HasGeneralResult);
            Assert.IsNull(sectionSpecificOutput.GeneralResult);
            Assert.AreEqual(profileSpecificReliability, output.ProfileSpecificOutput.Reliability);
            Assert.IsFalse(output.ProfileSpecificOutput.HasGeneralResult);
            Assert.IsNull(profileSpecificOutput.GeneralResult);
        }
Esempio n. 11
0
        public void Read_EntityWithSubMechanismIllustrationPoints_ReturnProbabilisticPipingOutput()
        {
            // Setup
            var random = new Random(21);
            var profileSpecificGeneralResultEntity = new GeneralResultSubMechanismIllustrationPointEntity
            {
                GoverningWindDirectionName  = "SSE",
                GoverningWindDirectionAngle = random.NextDouble()
            };
            var sectionSpecificGeneralResultEntity = new GeneralResultSubMechanismIllustrationPointEntity
            {
                GoverningWindDirectionName  = "SSW",
                GoverningWindDirectionAngle = random.NextDouble()
            };

            var entity = new ProbabilisticPipingCalculationOutputEntity
            {
                ProfileSpecificReliability = random.NextDouble(),
                SectionSpecificReliability = random.NextDouble(),
                GeneralResultFaultTreeIllustrationPointEntity     = null,
                GeneralResultFaultTreeIllustrationPointEntity1    = null,
                GeneralResultSubMechanismIllustrationPointEntity  = profileSpecificGeneralResultEntity,
                GeneralResultSubMechanismIllustrationPointEntity1 = sectionSpecificGeneralResultEntity
            };

            // Call
            ProbabilisticPipingOutput output = entity.Read();

            // Assert
            var profileSpecificOutput = (PartialProbabilisticSubMechanismPipingOutput)output.ProfileSpecificOutput;
            var sectionSpecificOutput = (PartialProbabilisticSubMechanismPipingOutput)output.SectionSpecificOutput;

            Assert.AreEqual(entity.ProfileSpecificReliability, output.ProfileSpecificOutput.Reliability);
            Assert.AreEqual(entity.SectionSpecificReliability, output.SectionSpecificOutput.Reliability);

            GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(
                profileSpecificOutput.GeneralResult, profileSpecificGeneralResultEntity);
            GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(
                sectionSpecificOutput.GeneralResult, sectionSpecificGeneralResultEntity);
        }
Esempio n. 12
0
        public void Read_ValidEntityWithNullParameterValues_ReturnProbabilisticPipingOutput()
        {
            // Setup
            var entity = new ProbabilisticPipingCalculationOutputEntity
            {
                ProfileSpecificReliability = null,
                SectionSpecificReliability = null,
                GeneralResultFaultTreeIllustrationPointEntity     = null,
                GeneralResultFaultTreeIllustrationPointEntity1    = null,
                GeneralResultSubMechanismIllustrationPointEntity  = null,
                GeneralResultSubMechanismIllustrationPointEntity1 = null
            };

            // Call
            ProbabilisticPipingOutput output = entity.Read();

            // Assert
            Assert.IsNaN(output.ProfileSpecificOutput.Reliability);
            Assert.IsNull(((PartialProbabilisticFaultTreePipingOutput)output.ProfileSpecificOutput).GeneralResult);
            Assert.IsNaN(output.SectionSpecificOutput.Reliability);
            Assert.IsNull(((PartialProbabilisticFaultTreePipingOutput)output.ProfileSpecificOutput).GeneralResult);
        }
        public void Create_CalculationWithOutputWithFaultTreeIllustrationPoints_ReturnEntityWithOutputAndGeneralResult()
        {
            // Setup
            PartialProbabilisticFaultTreePipingOutput profileSpecificOutput = PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput();
            PartialProbabilisticFaultTreePipingOutput sectionSpecificOutput = PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput();
            var output = new ProbabilisticPipingOutput(profileSpecificOutput, sectionSpecificOutput);

            // Call
            ProbabilisticPipingCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.AreEqual(output.ProfileSpecificOutput.Reliability, entity.ProfileSpecificReliability);
            Assert.AreEqual(output.SectionSpecificOutput.Reliability, entity.SectionSpecificReliability);
            GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(
                profileSpecificOutput.GeneralResult,
                entity.GeneralResultFaultTreeIllustrationPointEntity);
            GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(
                sectionSpecificOutput.GeneralResult,
                entity.GeneralResultFaultTreeIllustrationPointEntity1);
            Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity);
            Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity1);
        }
Esempio n. 14
0
 private static void AddEntityForPipingOutput(ProbabilisticPipingCalculationEntity entity, ProbabilisticPipingOutput output)
 {
     if (output != null)
     {
         entity.ProbabilisticPipingCalculationOutputEntities.Add(output.Create());
     }
 }
Esempio n. 15
0
 public override void ClearOutput()
 {
     Output = null;
 }
Esempio n. 16
0
 /// <summary>
 /// Method that asserts whether <paramref name="original"/> and <paramref name="clone"/>
 /// are clones.
 /// </summary>
 /// <param name="original">The original object.</param>
 /// <param name="clone">The cloned object.</param>
 /// <exception cref="AssertionException">Thrown when <paramref name="original"/> and
 /// <paramref name="clone"/> are not clones.</exception>
 public static void AreClones(ProbabilisticPipingOutput original, ProbabilisticPipingOutput clone)
 {
     CoreCloneAssert.AreObjectClones(original.SectionSpecificOutput, clone.SectionSpecificOutput, AreClones);
     CoreCloneAssert.AreObjectClones(original.ProfileSpecificOutput, clone.ProfileSpecificOutput, AreClones);
 }
Esempio n. 17
0
 private static bool HasIllustrationPoints(ProbabilisticPipingOutput output)
 {
     return(output.ProfileSpecificOutput.HasGeneralResult ||
            output.SectionSpecificOutput.HasGeneralResult);
 }