Index: Riskeer/Storage/src/Riskeer.Storage.Core/Read/Piping/Probabilistic/ProbabilisticPipingCalculationOutputEntityReadExtensions.cs =================================================================== diff -u -rb8563cf263a8359d84834e4546d7741beed15118 -r6681ea65852ad8e76f0e11b7491ab266405d65fb --- Riskeer/Storage/src/Riskeer.Storage.Core/Read/Piping/Probabilistic/ProbabilisticPipingCalculationOutputEntityReadExtensions.cs (.../ProbabilisticPipingCalculationOutputEntityReadExtensions.cs) (revision b8563cf263a8359d84834e4546d7741beed15118) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Read/Piping/Probabilistic/ProbabilisticPipingCalculationOutputEntityReadExtensions.cs (.../ProbabilisticPipingCalculationOutputEntityReadExtensions.cs) (revision 6681ea65852ad8e76f0e11b7491ab266405d65fb) @@ -48,12 +48,26 @@ throw new ArgumentNullException(nameof(entity)); } + double sectionSpecificReliability = entity.SectionSpecificReliability.ToNullAsNaN(); + double profileSpecificReliability = entity.ProfileSpecificReliability.ToNullAsNaN(); + + if (entity.GeneralResultSubMechanismIllustrationPointEntity != null || entity.GeneralResultSubMechanismIllustrationPointEntity1 != null) + { + return new ProbabilisticPipingOutput( + new PartialProbabilisticSubMechanismPipingOutput( + sectionSpecificReliability, + entity.GeneralResultSubMechanismIllustrationPointEntity1?.Read()), + new PartialProbabilisticSubMechanismPipingOutput( + profileSpecificReliability, + entity.GeneralResultSubMechanismIllustrationPointEntity?.Read())); + } + return new ProbabilisticPipingOutput( new PartialProbabilisticFaultTreePipingOutput( - entity.SectionSpecificReliability.ToNullAsNaN(), + sectionSpecificReliability, entity.GeneralResultFaultTreeIllustrationPointEntity1?.Read()), new PartialProbabilisticFaultTreePipingOutput( - entity.ProfileSpecificReliability.ToNullAsNaN(), + profileSpecificReliability, entity.GeneralResultFaultTreeIllustrationPointEntity?.Read())); } } Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/Piping/Probabilistic/ProbabilisticPipingCalculationOutputEntityReadExtensionsTest.cs =================================================================== diff -u -rb8563cf263a8359d84834e4546d7741beed15118 -r6681ea65852ad8e76f0e11b7491ab266405d65fb --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/Piping/Probabilistic/ProbabilisticPipingCalculationOutputEntityReadExtensionsTest.cs (.../ProbabilisticPipingCalculationOutputEntityReadExtensionsTest.cs) (revision b8563cf263a8359d84834e4546d7741beed15118) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/Piping/Probabilistic/ProbabilisticPipingCalculationOutputEntityReadExtensionsTest.cs (.../ProbabilisticPipingCalculationOutputEntityReadExtensionsTest.cs) (revision 6681ea65852ad8e76f0e11b7491ab266405d65fb) @@ -43,7 +43,7 @@ } [Test] - public void Read_ValidEntity_ReturnProbabilisticPipingOutput() + public void Read_EntityWithFaultTreeIllustrationPoints_ReturnProbabilisticPipingOutput() { // Setup var random = new Random(21); @@ -63,22 +63,68 @@ ProfileSpecificReliability = random.NextDouble(), SectionSpecificReliability = random.NextDouble(), GeneralResultFaultTreeIllustrationPointEntity = profileSpecificGeneralResultEntity, - GeneralResultFaultTreeIllustrationPointEntity1 = sectionSpecificGeneralResultEntity + GeneralResultFaultTreeIllustrationPointEntity1 = sectionSpecificGeneralResultEntity, + GeneralResultSubMechanismIllustrationPointEntity = null, + GeneralResultSubMechanismIllustrationPointEntity1 = null }; // Call ProbabilisticPipingOutput output = entity.Read(); // Assert + var profileSpecificOutput = (PartialProbabilisticFaultTreePipingOutput) output.ProfileSpecificOutput; + var sectionSpecificOutput = (PartialProbabilisticFaultTreePipingOutput) output.SectionSpecificOutput; + Assert.AreEqual(entity.ProfileSpecificReliability, output.ProfileSpecificOutput.Reliability); Assert.AreEqual(entity.SectionSpecificReliability, output.SectionSpecificOutput.Reliability); GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues( - ((PartialProbabilisticFaultTreePipingOutput) output.ProfileSpecificOutput).GeneralResult, profileSpecificGeneralResultEntity); + profileSpecificOutput.GeneralResult, profileSpecificGeneralResultEntity); GeneralResultEntityTestHelper.AssertGeneralResultPropertyValues( - ((PartialProbabilisticFaultTreePipingOutput) output.SectionSpecificOutput).GeneralResult, sectionSpecificGeneralResultEntity); + sectionSpecificOutput.GeneralResult, sectionSpecificGeneralResultEntity); } + [Test] + 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); + } + [Test] public void Read_ValidEntityWithNullParameterValues_ReturnProbabilisticPipingOutput() { @@ -88,7 +134,9 @@ ProfileSpecificReliability = null, SectionSpecificReliability = null, GeneralResultFaultTreeIllustrationPointEntity = null, - GeneralResultFaultTreeIllustrationPointEntity1 = null + GeneralResultFaultTreeIllustrationPointEntity1 = null, + GeneralResultSubMechanismIllustrationPointEntity = null, + GeneralResultSubMechanismIllustrationPointEntity1 = null }; // Call Index: Riskeer/Storage/test/Riskeer.Storage.Core.TestUtil/IllustrationPoints/GeneralResultEntityTestHelper.cs =================================================================== diff -u -r8f813f8a94050f65846c119b2b0084007df6a86a -r6681ea65852ad8e76f0e11b7491ab266405d65fb --- Riskeer/Storage/test/Riskeer.Storage.Core.TestUtil/IllustrationPoints/GeneralResultEntityTestHelper.cs (.../GeneralResultEntityTestHelper.cs) (revision 8f813f8a94050f65846c119b2b0084007df6a86a) +++ Riskeer/Storage/test/Riskeer.Storage.Core.TestUtil/IllustrationPoints/GeneralResultEntityTestHelper.cs (.../GeneralResultEntityTestHelper.cs) (revision 6681ea65852ad8e76f0e11b7491ab266405d65fb) @@ -21,7 +21,6 @@ using System; using System.Linq; -using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.Common.Data.IllustrationPoints; using Riskeer.Common.Data.TestUtil; @@ -103,7 +102,7 @@ Assert.IsNotNull(generalResultEntity); WindDirection governingWindDirection = generalResult.GoverningWindDirection; - TestHelper.AssertAreEqualButNotSame(governingWindDirection.Name, generalResultEntity.GoverningWindDirectionName); + Assert.AreEqual(governingWindDirection.Name, generalResultEntity.GoverningWindDirectionName); Assert.AreEqual(governingWindDirection.Angle, generalResultEntity.GoverningWindDirectionAngle, governingWindDirection.Angle.GetAccuracy());