Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/Piping/Probabilistic/ProbabilisticPipingOutputCreateExtensions.cs =================================================================== diff -u -r82f80e5e3c3f49f7a597dc7c345c9b13b83f0cab -r393941548b62a4524b8d47c8cf3e7aa6dfaacec4 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/Piping/Probabilistic/ProbabilisticPipingOutputCreateExtensions.cs (.../ProbabilisticPipingOutputCreateExtensions.cs) (revision 82f80e5e3c3f49f7a597dc7c345c9b13b83f0cab) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/Piping/Probabilistic/ProbabilisticPipingOutputCreateExtensions.cs (.../ProbabilisticPipingOutputCreateExtensions.cs) (revision 393941548b62a4524b8d47c8cf3e7aa6dfaacec4) @@ -19,7 +19,9 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Storage.Core.Create.IllustrationPoints; using Riskeer.Storage.Core.DbContext; namespace Riskeer.Storage.Core.Create.Piping.Probabilistic @@ -30,6 +32,29 @@ /// internal static class ProbabilisticPipingOutputCreateExtensions { - + /// + /// Creates a based on the information + /// of the . + /// + /// The calculation output for piping failure mechanism to + /// create a database entity for. + /// A new . + /// Thrown when + /// is null. + public static ProbabilisticPipingCalculationOutputEntity Create(this ProbabilisticPipingOutput output) + { + if (output == null) + { + throw new ArgumentNullException(nameof(output)); + } + + return new ProbabilisticPipingCalculationOutputEntity + { + ProfileSpecificReliability = output.ProfileSpecificOutput.Reliability.ToNaNAsNull(), + SectionSpecificReliability = output.SectionSpecificOutput.Reliability.ToNaNAsNull(), + GeneralResultFaultTreeIllustrationPointEntity = output.ProfileSpecificOutput.GeneralResult?.CreateGeneralResultFaultTreeIllustrationPointEntity(), + GeneralResultFaultTreeIllustrationPointEntity1 = output.SectionSpecificOutput.GeneralResult?.CreateGeneralResultFaultTreeIllustrationPointEntity() + }; + } } } \ No newline at end of file Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/Piping/Probabilistic/ProbabilisticPipingOutputCreateExtensionsTest.cs =================================================================== diff -u -r82f80e5e3c3f49f7a597dc7c345c9b13b83f0cab -r393941548b62a4524b8d47c8cf3e7aa6dfaacec4 --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/Piping/Probabilistic/ProbabilisticPipingOutputCreateExtensionsTest.cs (.../ProbabilisticPipingOutputCreateExtensionsTest.cs) (revision 82f80e5e3c3f49f7a597dc7c345c9b13b83f0cab) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/Piping/Probabilistic/ProbabilisticPipingOutputCreateExtensionsTest.cs (.../ProbabilisticPipingOutputCreateExtensionsTest.cs) (revision 393941548b62a4524b8d47c8cf3e7aa6dfaacec4) @@ -19,13 +19,82 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using NUnit.Framework; +using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Piping.Data.TestUtil; +using Riskeer.Storage.Core.Create.Piping.Probabilistic; +using Riskeer.Storage.Core.DbContext; +using Riskeer.Storage.Core.TestUtil.IllustrationPoints; namespace Riskeer.Storage.Core.Test.Create.Piping.Probabilistic { [TestFixture] public class ProbabilisticPipingOutputCreateExtensionsTest { - + [Test] + public void Create_OutputNull_ThrowsArgumentNullException() + { + // Call + void Call() => ((ProbabilisticPipingOutput) null).Create(); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("output", exception.ParamName); + } + + [Test] + public void Create_CalculationWithOutput_ReturnEntityWithOutput() + { + // Setup + var output = new ProbabilisticPipingOutput( + PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput(null), + PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput(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); + } + + [Test] + public void Create_CalculationWithNaNOutput_ReturnEntityWithNullOutput() + { + // Setup + var output = new ProbabilisticPipingOutput( + new PartialProbabilisticPipingOutput(double.NaN, null), + new PartialProbabilisticPipingOutput(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); + } + + [Test] + public void Create_CalculationWithOutputAndGeneralResult_ReturnEntityWithOutputAndGeneralResult() + { + // Setup + var output = new ProbabilisticPipingOutput( + PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput(), + PipingTestDataGenerator.GetRandomPartialProbabilisticPipingOutput()); + + // Call + ProbabilisticPipingCalculationOutputEntity entity = output.Create(); + + // Assert + Assert.AreEqual(output.ProfileSpecificOutput.Reliability, entity.ProfileSpecificReliability); + Assert.AreEqual(output.SectionSpecificOutput.Reliability, entity.SectionSpecificReliability); + GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(output.ProfileSpecificOutput.GeneralResult, entity.GeneralResultFaultTreeIllustrationPointEntity); + GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues(output.SectionSpecificOutput.GeneralResult, entity.GeneralResultFaultTreeIllustrationPointEntity1); + } } } \ No newline at end of file