Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationCreateExtensions.cs =================================================================== diff -u -r06e4debe3f4a9bdfb38c40b8c00ed013e8f7bb98 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationCreateExtensions.cs (.../GrassCoverErosionInwardsCalculationCreateExtensions.cs) (revision 06e4debe3f4a9bdfb38c40b8c00ed013e8f7bb98) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationCreateExtensions.cs (.../GrassCoverErosionInwardsCalculationCreateExtensions.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -56,7 +56,13 @@ Comments = calculation.Comments, Order = order }; + if (calculation.HasOutput) + { + entity.GrassCoverErosionInwardsOutputEntity = calculation.Output.Create(registry); + } + registry.Register(entity, calculation); + return entity; } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensions.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensions.cs (.../GrassCoverErosionInwardsOutputCreateExtensions.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensions.cs (.../GrassCoverErosionInwardsOutputCreateExtensions.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -50,8 +50,9 @@ var entity = new GrassCoverErosionInwardsOutputEntity { - ProbabilisticOutputEntity = output.ProbabilisticAssessmentOutput.Create(registry), + ProbabilisticOutputEntity = output.ProbabilityAssessmentOutput.Create(registry), DikeHeight = output.DikeHeight.Value.ToNaNAsNull(), + IsDikeHeightCalculated = Convert.ToByte(output.DikeHeightCalculated), IsOvertoppingDominant = Convert.ToByte(output.IsOvertoppingDominant), WaveHeight = output.WaveHeight.Value.ToNaNAsNull() }; Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationEntityReadExtensions.cs =================================================================== diff -u -r5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationEntityReadExtensions.cs (.../GrassCoverErosionInwardsCalculationEntityReadExtensions.cs) (revision 5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationEntityReadExtensions.cs (.../GrassCoverErosionInwardsCalculationEntityReadExtensions.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -40,12 +40,17 @@ /// A new . internal static GrassCoverErosionInwardsCalculation Read(this GrassCoverErosionInwardsCalculationEntity entity) { - return new GrassCoverErosionInwardsCalculation + var calculation = new GrassCoverErosionInwardsCalculation { Name = entity.Name, Comments = entity.Comments, StorageId = entity.GrassCoverErosionInwardsCalculationEntityId }; + if (entity.GrassCoverErosionInwardsOutputEntity != null) + { + calculation.Output = entity.GrassCoverErosionInwardsOutputEntity.Read(); + } + return calculation; } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensions.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensions.cs (.../GrassCoverErosionInwardsOutputEntityReadExtensions.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensions.cs (.../GrassCoverErosionInwardsOutputEntityReadExtensions.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -45,10 +45,19 @@ return new GrassCoverErosionInwardsOutput(entity.WaveHeight.ToNullAsNaN(), Convert.ToBoolean(entity.IsOvertoppingDominant), entity.ProbabilisticOutputEntity.Read(), - entity.DikeHeight.ToNullAsNaN()) + GetDikeHeightValue(entity)) { StorageId = entity.GrassCoverErosionInwardsOutputId }; } + + private static double? GetDikeHeightValue(GrassCoverErosionInwardsOutputEntity entity) + { + if (Convert.ToBoolean(entity.IsDikeHeightCalculated)) + { + return entity.DikeHeight.ToNullAsNaN(); + } + return null; + } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationUpdateExtensions.cs =================================================================== diff -u -r5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationUpdateExtensions.cs (.../GrassCoverErosionInwardsCalculationUpdateExtensions.cs) (revision 5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationUpdateExtensions.cs (.../GrassCoverErosionInwardsCalculationUpdateExtensions.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -22,6 +22,7 @@ using System; using Application.Ringtoets.Storage.Create; +using Application.Ringtoets.Storage.Create.GrassCoverErosionInwards; using Application.Ringtoets.Storage.DbContext; using Application.Ringtoets.Storage.Exceptions; @@ -69,6 +70,22 @@ entity.Comments = calculation.Comments; entity.Order = order; + if (calculation.HasOutput) + { + if (calculation.Output.IsNew()) + { + entity.GrassCoverErosionInwardsOutputEntity = calculation.Output.Create(registry); + } + else + { + calculation.Output.Update(registry, context); + } + } + else + { + entity.GrassCoverErosionInwardsOutputEntity = null; + } + registry.Register(entity, calculation); } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputUpdateExtensions.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputUpdateExtensions.cs (.../GrassCoverErosionInwardsOutputUpdateExtensions.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputUpdateExtensions.cs (.../GrassCoverErosionInwardsOutputUpdateExtensions.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -24,7 +24,6 @@ using Application.Ringtoets.Storage.Create; using Application.Ringtoets.Storage.DbContext; using Application.Ringtoets.Storage.Exceptions; -using Application.Ringtoets.Storage.Update; using Ringtoets.GrassCoverErosionInwards.Data; @@ -66,7 +65,7 @@ context.GrassCoverErosionInwardsOutputEntities, o => o.GrassCoverErosionInwardsOutputId); - output.ProbabilisticAssessmentOutput.Update(registry, context); + output.ProbabilityAssessmentOutput.Update(registry, context); registry.Register(entity, output); } Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationCreateExtensionsTest.cs =================================================================== diff -u -r5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationCreateExtensionsTest.cs (.../GrassCoverErosionInwardsCalculationCreateExtensionsTest.cs) (revision 5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationCreateExtensionsTest.cs (.../GrassCoverErosionInwardsCalculationCreateExtensionsTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -27,6 +27,7 @@ using NUnit.Framework; +using Ringtoets.Common.Data.Probability; using Ringtoets.GrassCoverErosionInwards.Data; namespace Application.Ringtoets.Storage.Test.Create.GrassCoverErosionInwards @@ -57,7 +58,8 @@ var calculation = new GrassCoverErosionInwardsCalculation { Name = name, - Comments = comment + Comments = comment, + Output = null }; var registry = new PersistenceRegistry(); @@ -69,6 +71,8 @@ Assert.AreEqual(name, entity.Name); Assert.AreEqual(comment, entity.Comments); Assert.AreEqual(order, entity.Order); + + Assert.IsNull(entity.GrassCoverErosionInwardsOutputEntity); } [Test] @@ -87,5 +91,23 @@ registry.TransferIds(); Assert.AreEqual(entity.GrassCoverErosionInwardsCalculationEntityId, calculation.StorageId); } + + [Test] + public void Create_CalculationWithOutput_ReturnEntity() + { + // Setup + var calculation = new GrassCoverErosionInwardsCalculation + { + Output = new GrassCoverErosionInwardsOutput(1, true, new ProbabilityAssessmentOutput(1, 1, 1, 1, 1), 2) + }; + + var registry = new PersistenceRegistry(); + + // Call + GrassCoverErosionInwardsCalculationEntity entity = calculation.Create(registry, 0); + + // Assert + Assert.IsNotNull(entity.GrassCoverErosionInwardsOutputEntity); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensionsTest.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensionsTest.cs (.../GrassCoverErosionInwardsOutputCreateExtensionsTest.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensionsTest.cs (.../GrassCoverErosionInwardsOutputCreateExtensionsTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -64,6 +64,7 @@ // Assert Assert.AreEqual(output.DikeHeight.Value, entity.DikeHeight); + Assert.AreEqual(Convert.ToByte(output.DikeHeightCalculated), entity.IsDikeHeightCalculated); Assert.AreEqual(output.WaveHeight.Value, entity.WaveHeight); Assert.AreEqual(Convert.ToByte(output.IsOvertoppingDominant), entity.IsOvertoppingDominant); @@ -112,6 +113,7 @@ // Assert Assert.IsNull(entity.DikeHeight); + Assert.AreEqual(Convert.ToByte(false), entity.IsDikeHeightCalculated); } [Test] Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs =================================================================== diff -u -r1eed3e3f652618c52a462edc502cfd4250772314 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 1eed3e3f652618c52a462edc502cfd4250772314) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -35,6 +35,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.Probability; using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.HeightStructures.Data; using Ringtoets.HydraRing.Data; @@ -884,8 +885,35 @@ { Assert.AreEqual(expectedCalculation.Name, actualCalculation.Name); Assert.AreEqual(expectedCalculation.Comments, actualCalculation.Comments); + + if (expectedCalculation.HasOutput) + { + AssertGrassCoverErosionInwardsOutput(expectedCalculation.Output, actualCalculation.Output); + } + else + { + Assert.IsFalse(actualCalculation.HasOutput); + } } + private static void AssertGrassCoverErosionInwardsOutput(GrassCoverErosionInwardsOutput expectedOutput, GrassCoverErosionInwardsOutput actualOutput) + { + Assert.AreEqual(expectedOutput.DikeHeightCalculated, actualOutput.DikeHeightCalculated); + Assert.AreEqual(expectedOutput.DikeHeight, actualOutput.DikeHeight); + Assert.AreEqual(expectedOutput.WaveHeight, actualOutput.WaveHeight); + Assert.AreEqual(expectedOutput.IsOvertoppingDominant, actualOutput.IsOvertoppingDominant); + AssertProbabilityAssesmentOutput(expectedOutput.ProbabilityAssessmentOutput, actualOutput.ProbabilityAssessmentOutput); + } + + private static void AssertProbabilityAssesmentOutput(ProbabilityAssessmentOutput expectedOutput, ProbabilityAssessmentOutput actualOutput) + { + Assert.AreEqual(expectedOutput.FactorOfSafety, actualOutput.FactorOfSafety); + Assert.AreEqual(expectedOutput.Probability, actualOutput.Probability); + Assert.AreEqual(expectedOutput.Reliability, actualOutput.Reliability); + Assert.AreEqual(expectedOutput.RequiredProbability, actualOutput.RequiredProbability); + Assert.AreEqual(expectedOutput.RequiredReliability, actualOutput.RequiredReliability); + } + private static void AssertGrassCoverErosionInwardsFailureMechanism(GrassCoverErosionInwardsFailureMechanism expectedFailureMechanism, GrassCoverErosionInwardsFailureMechanism actualFailureMechanism) { Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationEntityReadExtensionsTest.cs =================================================================== diff -u -r5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationEntityReadExtensionsTest.cs (.../GrassCoverErosionInwardsCalculationEntityReadExtensionsTest.cs) (revision 5da102ed42420b0272dfd2ecdd5aaa3a9ebd251c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationEntityReadExtensionsTest.cs (.../GrassCoverErosionInwardsCalculationEntityReadExtensionsTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -40,7 +40,8 @@ { GrassCoverErosionInwardsCalculationEntityId = 457, Name = "sodhfksn", - Comments = "s;ohfgwjo5p09u" + Comments = "s;ohfgwjo5p09u", + GrassCoverErosionInwardsOutputEntity = null }; // Call @@ -50,6 +51,32 @@ Assert.AreEqual(entity.GrassCoverErosionInwardsCalculationEntityId, calculation.StorageId); Assert.AreEqual(entity.Name, calculation.Name); Assert.AreEqual(entity.Comments, calculation.Comments); + + Assert.IsFalse(calculation.HasOutput); } + + [Test] + public void Read_ValidEntityWithOutputEntity_ReturnCalculationWithOutput() + { + // Setup + var entity = new GrassCoverErosionInwardsCalculationEntity + { + GrassCoverErosionInwardsCalculationEntityId = 456, + GrassCoverErosionInwardsOutputEntity = new GrassCoverErosionInwardsOutputEntity + { + GrassCoverErosionInwardsOutputId = 9745, + ProbabilisticOutputEntity = new ProbabilisticOutputEntity + { + ProbabilisticOutputEntityId = 3245 + } + } + }; + + // Call + GrassCoverErosionInwardsCalculation calculation = entity.Read(); + + // Assert + Assert.IsTrue(calculation.HasOutput); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensionsTest.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensionsTest.cs (.../GrassCoverErosionInwardsOutputEntityReadExtensionsTest.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensionsTest.cs (.../GrassCoverErosionInwardsOutputEntityReadExtensionsTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -52,7 +52,8 @@ WaveHeight = 1.1, IsOvertoppingDominant = Convert.ToByte(false), ProbabilisticOutputEntity = probabilisticOutputEntity, - DikeHeight = 3.3 + DikeHeight = 3.3, + IsDikeHeightCalculated = Convert.ToByte(true) }; // Call @@ -63,13 +64,14 @@ Assert.AreEqual(entity.WaveHeight, output.WaveHeight.Value); Assert.IsFalse(output.IsOvertoppingDominant); Assert.AreEqual(entity.DikeHeight, output.DikeHeight.Value); + Assert.IsTrue(output.DikeHeightCalculated); - Assert.AreEqual(probabilisticOutputEntity.ProbabilisticOutputEntityId, output.ProbabilisticAssessmentOutput.StorageId); - Assert.AreEqual(probabilisticOutputEntity.FactorOfSafety, output.ProbabilisticAssessmentOutput.FactorOfSafety.Value); - Assert.AreEqual(probabilisticOutputEntity.Probability, output.ProbabilisticAssessmentOutput.Probability); - Assert.AreEqual(probabilisticOutputEntity.RequiredProbability, output.ProbabilisticAssessmentOutput.RequiredProbability); - Assert.AreEqual(probabilisticOutputEntity.Reliability, output.ProbabilisticAssessmentOutput.Reliability.Value); - Assert.AreEqual(probabilisticOutputEntity.RequiredReliability, output.ProbabilisticAssessmentOutput.RequiredReliability.Value); + Assert.AreEqual(probabilisticOutputEntity.ProbabilisticOutputEntityId, output.ProbabilityAssessmentOutput.StorageId); + Assert.AreEqual(probabilisticOutputEntity.FactorOfSafety, output.ProbabilityAssessmentOutput.FactorOfSafety.Value); + Assert.AreEqual(probabilisticOutputEntity.Probability, output.ProbabilityAssessmentOutput.Probability); + Assert.AreEqual(probabilisticOutputEntity.RequiredProbability, output.ProbabilityAssessmentOutput.RequiredProbability); + Assert.AreEqual(probabilisticOutputEntity.Reliability, output.ProbabilityAssessmentOutput.Reliability.Value); + Assert.AreEqual(probabilisticOutputEntity.RequiredReliability, output.ProbabilityAssessmentOutput.RequiredReliability.Value); } [Test] @@ -91,7 +93,8 @@ WaveHeight = null, IsOvertoppingDominant = Convert.ToByte(true), ProbabilisticOutputEntity = probabilisticOutputEntity, - DikeHeight = null + DikeHeight = null, + IsDikeHeightCalculated = Convert.ToByte(true) }; // Call @@ -102,13 +105,38 @@ Assert.IsNaN(output.WaveHeight); Assert.IsTrue(output.IsOvertoppingDominant); Assert.IsNaN(output.DikeHeight); + Assert.IsTrue(output.DikeHeightCalculated); - Assert.AreEqual(probabilisticOutputEntity.ProbabilisticOutputEntityId, output.ProbabilisticAssessmentOutput.StorageId); - Assert.IsNaN(output.ProbabilisticAssessmentOutput.FactorOfSafety.Value); - Assert.IsNaN(output.ProbabilisticAssessmentOutput.Probability); - Assert.IsNaN(output.ProbabilisticAssessmentOutput.RequiredProbability); - Assert.IsNaN(output.ProbabilisticAssessmentOutput.Reliability.Value); - Assert.IsNaN(output.ProbabilisticAssessmentOutput.RequiredReliability.Value); + Assert.AreEqual(probabilisticOutputEntity.ProbabilisticOutputEntityId, output.ProbabilityAssessmentOutput.StorageId); + Assert.IsNaN(output.ProbabilityAssessmentOutput.FactorOfSafety.Value); + Assert.IsNaN(output.ProbabilityAssessmentOutput.Probability); + Assert.IsNaN(output.ProbabilityAssessmentOutput.RequiredProbability); + Assert.IsNaN(output.ProbabilityAssessmentOutput.Reliability.Value); + Assert.IsNaN(output.ProbabilityAssessmentOutput.RequiredReliability.Value); } + + [Test] + public void Read_DikeHeightNotCalculated_ReturnGrassCoverErosionInwardsOutputWithNotCalculatedDikeHeight() + { + // Setup + var probabilisticOutputEntity = new ProbabilisticOutputEntity + { + ProbabilisticOutputEntityId = 3456 + }; + var entity = new GrassCoverErosionInwardsOutputEntity + { + GrassCoverErosionInwardsOutputId = 7536, + ProbabilisticOutputEntity = probabilisticOutputEntity, + DikeHeight = null, + IsDikeHeightCalculated = Convert.ToByte(false) + }; + + // Call + GrassCoverErosionInwardsOutput output = entity.Read(); + + // Assert + Assert.IsNaN(output.DikeHeight); + Assert.IsFalse(output.DikeHeightCalculated); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationUpdateExtensionsTest.cs =================================================================== diff -u -r6917c98a7820943d62df19669a6551bb76bbf851 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationUpdateExtensionsTest.cs (.../GrassCoverErosionInwardsCalculationUpdateExtensionsTest.cs) (revision 6917c98a7820943d62df19669a6551bb76bbf851) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/GrassCoverErosionInwards/GrassCoverErosionInwardsCalculationUpdateExtensionsTest.cs (.../GrassCoverErosionInwardsCalculationUpdateExtensionsTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -31,6 +31,7 @@ using Rhino.Mocks; +using Ringtoets.Common.Data.Probability; using Ringtoets.GrassCoverErosionInwards.Data; namespace Application.Ringtoets.Storage.Test.Update.GrassCoverErosionInwards @@ -165,5 +166,130 @@ CollectionAssert.DoesNotContain(ringtoetsEntities.GrassCoverErosionInwardsCalculationEntities, orphanedEntity); mocks.VerifyAll(); } + + [Test] + public void Update_CalculationWithNewOutput_EntityHasOutputEntityAdded() + { + // Setup + var mocks= new MockRepository(); + var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionInwardsCalculation + { + StorageId = 2, + Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), 0) + }; + + var entity = new GrassCoverErosionInwardsCalculationEntity + { + GrassCoverErosionInwardsCalculationEntityId = calculation.StorageId + }; + ringtoetsEntities.GrassCoverErosionInwardsCalculationEntities.Add(entity); + + var registry = new PersistenceRegistry(); + + // Call + calculation.Update(registry, ringtoetsEntities, 0); + + // Assert + Assert.IsNotNull(entity.GrassCoverErosionInwardsOutputEntity); + mocks.VerifyAll(); + } + + [Test] + public void Update_CalculationWithSaveOutput_OutputRegistered() + { + // Setup + var mocks = new MockRepository(); + var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionInwardsCalculation + { + StorageId = 2, + Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), 0) + { + StorageId = 456, + ProbabilityAssessmentOutput = + { + StorageId = 45 + } + } + }; + + var outputEntity = new GrassCoverErosionInwardsOutputEntity + { + GrassCoverErosionInwardsOutputId = calculation.Output.StorageId, + ProbabilisticOutputEntity = new ProbabilisticOutputEntity + { + ProbabilisticOutputEntityId = calculation.Output.ProbabilityAssessmentOutput.StorageId + } + }; + var entity = new GrassCoverErosionInwardsCalculationEntity + { + GrassCoverErosionInwardsCalculationEntityId = calculation.StorageId, + GrassCoverErosionInwardsOutputEntity = outputEntity + }; + ringtoetsEntities.GrassCoverErosionInwardsCalculationEntities.Add(entity); + ringtoetsEntities.GrassCoverErosionInwardsOutputEntities.Add(outputEntity); + ringtoetsEntities.ProbabilisticOutputEntities.Add(outputEntity.ProbabilisticOutputEntity); + + var registry = new PersistenceRegistry(); + + // Call + calculation.Update(registry, ringtoetsEntities, 0); + + // Assert + registry.RemoveUntouched(ringtoetsEntities); + CollectionAssert.Contains(ringtoetsEntities.GrassCoverErosionInwardsOutputEntities, outputEntity); + CollectionAssert.Contains(ringtoetsEntities.ProbabilisticOutputEntities, outputEntity.ProbabilisticOutputEntity); + mocks.VerifyAll(); + } + + [Test] + public void Update_CalculationWithRemovedOutput_EntityHasOutputEntityNull() + { + // Setup + var mocks = new MockRepository(); + var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionInwardsCalculation + { + StorageId = 2, + Output = null + }; + + var outputEntity = new GrassCoverErosionInwardsOutputEntity + { + GrassCoverErosionInwardsOutputId = 3, + ProbabilisticOutputEntity = new ProbabilisticOutputEntity + { + ProbabilisticOutputEntityId = 12 + } + }; + var entity = new GrassCoverErosionInwardsCalculationEntity + { + GrassCoverErosionInwardsCalculationEntityId = calculation.StorageId, + GrassCoverErosionInwardsOutputEntity = outputEntity + }; + ringtoetsEntities.GrassCoverErosionInwardsCalculationEntities.Add(entity); + ringtoetsEntities.GrassCoverErosionInwardsOutputEntities.Add(outputEntity); + ringtoetsEntities.ProbabilisticOutputEntities.Add(outputEntity.ProbabilisticOutputEntity); + + var registry = new PersistenceRegistry(); + + // Call + calculation.Update(registry, ringtoetsEntities, 0); + + // Assert + Assert.IsNull(entity.GrassCoverErosionInwardsOutputEntity); + + registry.RemoveUntouched(ringtoetsEntities); + CollectionAssert.DoesNotContain(ringtoetsEntities.GrassCoverErosionInwardsOutputEntities, outputEntity); + CollectionAssert.DoesNotContain(ringtoetsEntities.ProbabilisticOutputEntities, outputEntity.ProbabilisticOutputEntity); + mocks.VerifyAll(); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs =================================================================== diff -u -r1eed3e3f652618c52a462edc502cfd4250772314 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision 1eed3e3f652618c52a462edc502cfd4250772314) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -28,6 +28,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.Probability; using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.HeightStructures.Data; using Ringtoets.HydraRing.Data; @@ -301,7 +302,8 @@ new GrassCoverErosionInwardsCalculation { Name = "Calculation 1", - Comments = "Comments for Calculation 1" + Comments = "Comments for Calculation 1", + Output = new GrassCoverErosionInwardsOutput(0.45, true, new ProbabilityAssessmentOutput(0.004, 0.95, 0.00003, 1.1, 4.5), 0.56) } } }); Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSectionResult.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSectionResult.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResult.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSectionResult.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResult.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -56,7 +56,7 @@ { return double.NaN; } - return Calculation.Output.ProbabilisticAssessmentOutput.Probability; + return Calculation.Output.ProbabilityAssessmentOutput.Probability; } } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsOutput.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsOutput.cs (.../GrassCoverErosionInwardsOutput.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsOutput.cs (.../GrassCoverErosionInwardsOutput.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -47,7 +47,7 @@ { IsOvertoppingDominant = isOvertoppingDominant; WaveHeight = new RoundedDouble(2, waveHeight); - ProbabilisticAssessmentOutput = probabilityAssessmentOutput; + ProbabilityAssessmentOutput = probabilityAssessmentOutput; this.dikeHeight = dikeHeight; } @@ -88,7 +88,7 @@ /// Gets the probabilistic assessment output based on the grass cover erosion /// inwards calculation output. /// - public ProbabilityAssessmentOutput ProbabilisticAssessmentOutput { get; private set; } + public ProbabilityAssessmentOutput ProbabilityAssessmentOutput { get; private set; } public long StorageId { get; set; } } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsOutputProperties.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsOutputProperties.cs (.../GrassCoverErosionInwardsOutputProperties.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsOutputProperties.cs (.../GrassCoverErosionInwardsOutputProperties.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -43,7 +43,7 @@ { get { - return ProbabilityFormattingHelper.Format(data.ProbabilisticAssessmentOutput.RequiredProbability); + return ProbabilityFormattingHelper.Format(data.ProbabilityAssessmentOutput.RequiredProbability); } } @@ -55,7 +55,7 @@ { get { - return data.ProbabilisticAssessmentOutput.RequiredReliability; + return data.ProbabilityAssessmentOutput.RequiredReliability; } } @@ -67,7 +67,7 @@ { get { - return ProbabilityFormattingHelper.Format(data.ProbabilisticAssessmentOutput.Probability); + return ProbabilityFormattingHelper.Format(data.ProbabilityAssessmentOutput.Probability); } } @@ -79,7 +79,7 @@ { get { - return data.ProbabilisticAssessmentOutput.Reliability; + return data.ProbabilityAssessmentOutput.Reliability; } } @@ -91,7 +91,7 @@ { get { - return data.ProbabilisticAssessmentOutput.FactorOfSafety; + return data.ProbabilityAssessmentOutput.FactorOfSafety; } } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismResultView.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismResultView.cs (.../GrassCoverErosionInwardsFailureMechanismResultView.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsFailureMechanismResultView.cs (.../GrassCoverErosionInwardsFailureMechanismResultView.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -183,7 +183,7 @@ { if (calculation.HasOutput) { - if (double.IsNaN(calculation.Output.ProbabilisticAssessmentOutput.Probability)) + if (double.IsNaN(calculation.Output.ProbabilityAssessmentOutput.Probability)) { return CalculationScenarioStatus.Failed; } Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsOutputTest.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsOutputTest.cs (.../GrassCoverErosionInwardsOutputTest.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsOutputTest.cs (.../GrassCoverErosionInwardsOutputTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -62,7 +62,7 @@ Assert.AreEqual(2, output.DikeHeight.NumberOfDecimalPlaces); Assert.IsTrue(output.DikeHeightCalculated); - Assert.AreSame(probabilityAssessmentOutput, output.ProbabilisticAssessmentOutput); + Assert.AreSame(probabilityAssessmentOutput, output.ProbabilityAssessmentOutput); Assert.AreEqual(0, output.StorageId); } Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismSectionResultRowTest.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResultRowTest.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsFailureMechanismSectionResultRowTest.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResultRowTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -172,7 +172,7 @@ double assessmentLayerTwoA = resultRow.AssessmentLayerTwoA; // Assert - Assert.AreEqual(calculation.Output.ProbabilisticAssessmentOutput.Probability, assessmentLayerTwoA); + Assert.AreEqual(calculation.Output.ProbabilityAssessmentOutput.Probability, assessmentLayerTwoA); } [Test] Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs =================================================================== diff -u -r3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6 -r90deb88f193d2b0eb45c013b1101864c298a18d5 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 3ddadfbc5e096c8df7d709be0d9a9057cf4b8dd6) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 90deb88f193d2b0eb45c013b1101864c298a18d5) @@ -391,7 +391,7 @@ // Assert Assert.IsNotNull(calculation.Output); - ProbabilityAssessmentOutput probabilisticAssessmentOutput = calculation.Output.ProbabilisticAssessmentOutput; + ProbabilityAssessmentOutput probabilisticAssessmentOutput = calculation.Output.ProbabilityAssessmentOutput; Assert.AreEqual((RoundedDouble) 0.625, probabilisticAssessmentOutput.FactorOfSafety); Assert.AreEqual(0.002617555933643434d, probabilisticAssessmentOutput.Probability); Assert.AreEqual((RoundedDouble) 2.792, probabilisticAssessmentOutput.Reliability); @@ -474,7 +474,7 @@ // Assert Assert.IsNotNull(calculation.Output); - ProbabilityAssessmentOutput probabilisticAssessmentOutput = calculation.Output.ProbabilisticAssessmentOutput; + ProbabilityAssessmentOutput probabilisticAssessmentOutput = calculation.Output.ProbabilityAssessmentOutput; Assert.AreEqual((RoundedDouble) 0.625, probabilisticAssessmentOutput.FactorOfSafety); Assert.AreEqual(0.002617555933643434d, probabilisticAssessmentOutput.Probability); Assert.AreEqual((RoundedDouble)2.792, probabilisticAssessmentOutput.Reliability);