Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HeightStructures/HeightStructuresFailureMechanismCreateExtensions.cs =================================================================== diff -u -r228f2e1b1297e24c82c34e76eb5280ca245c8318 -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HeightStructures/HeightStructuresFailureMechanismCreateExtensions.cs (.../HeightStructuresFailureMechanismCreateExtensions.cs) (revision 228f2e1b1297e24c82c34e76eb5280ca245c8318) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HeightStructures/HeightStructuresFailureMechanismCreateExtensions.cs (.../HeightStructuresFailureMechanismCreateExtensions.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -44,6 +44,7 @@ FailureMechanismEntity entity = mechanism.Create(FailureMechanismType.StructureHeight, registry); AddEntitiesForSectionResults(mechanism.SectionResults, registry); AddEntitiesForForeshoreProfiles(mechanism.ForeshoreProfiles, entity, registry); + AddEntitiesForHeightStructures(mechanism.HeightStructures, entity, registry); AddEntitiesForFailureMechanismMeta(mechanism.GeneralInput, entity); return entity; @@ -73,6 +74,18 @@ } } + private static void AddEntitiesForHeightStructures( + IList structures, + FailureMechanismEntity entity, + PersistenceRegistry registry) + { + for (int i = 0; i < structures.Count; i++) + { + HeightStructureEntity structureEntity = structures[i].Create(registry, i); + entity.HeightStructureEntities.Add(structureEntity); + } + } + private static void AddEntitiesForFailureMechanismMeta(GeneralHeightStructuresInput generalInput, FailureMechanismEntity entity) { entity.HeightStructuresFailureMechanismMetaEntities.Add(generalInput.Create()); Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs =================================================================== diff -u -rcc91baaea7dfcc12765017b57ffc768c7d02f7a1 -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision cc91baaea7dfcc12765017b57ffc768c7d02f7a1) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -222,6 +222,7 @@ entity.ReadCommonFailureMechanismProperties(failureMechanism, collector); entity.ReadHeightStructuresMechanismSectionResults(failureMechanism, collector); entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector); + entity.ReadHeightStructures(failureMechanism.HeightStructures, collector); entity.ReadGeneralInput(failureMechanism.GeneralInput); } @@ -236,6 +237,11 @@ } } + private static void ReadHeightStructures(this FailureMechanismEntity entity, ObservableList heightStructures, ReadConversionCollector collector) + { + heightStructures.AddRange(entity.HeightStructureEntities.OrderBy(fpe => fpe.Order).Select(structureEntity => structureEntity.Read(collector))); + } + private static void ReadGeneralInput(this FailureMechanismEntity entity, GeneralHeightStructuresInput generalInput) { GeneralHeightStructuresInput generalHeightStructuresInput = entity.HeightStructuresFailureMechanismMetaEntities.First().Read(); @@ -666,10 +672,7 @@ private static void ReadForeshoreProfiles(this FailureMechanismEntity entity, ObservableList foreshoreProfiles, ReadConversionCollector collector) { - foreach (var foreshoreProfileEntity in entity.ForeshoreProfileEntities.OrderBy(fpe => fpe.Order)) - { - foreshoreProfiles.Add(foreshoreProfileEntity.Read(collector)); - } + foreshoreProfiles.AddRange(entity.ForeshoreProfileEntities.OrderBy(fpe => fpe.Order).Select(foreshoreProfileEntity => foreshoreProfileEntity.Read(collector))); } private static void ReadStabilityStoneCoverMechanismSectionResults(this FailureMechanismEntity entity, StabilityStoneCoverFailureMechanism failureMechanism, ReadConversionCollector collector) Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HeightStructures/HeightStructuresFailureMechanismCreateExtensionsTest.cs =================================================================== diff -u -r746effcbca139c44fe93d96707671311c685a2b9 -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HeightStructures/HeightStructuresFailureMechanismCreateExtensionsTest.cs (.../HeightStructuresFailureMechanismCreateExtensionsTest.cs) (revision 746effcbca139c44fe93d96707671311c685a2b9) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HeightStructures/HeightStructuresFailureMechanismCreateExtensionsTest.cs (.../HeightStructuresFailureMechanismCreateExtensionsTest.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -27,6 +27,7 @@ using Application.Ringtoets.Storage.TestUtil; using NUnit.Framework; using Ringtoets.HeightStructures.Data; +using Ringtoets.HeightStructures.Data.TestUtil; namespace Application.Ringtoets.Storage.Test.Create.HeightStructures { @@ -143,5 +144,24 @@ Assert.AreEqual(1, entity.ForeshoreProfileEntities.Count); Assert.IsTrue(persistenceRegistry.Contains(profile)); } + + [Test] + public void Create_WithHeightStructures_HeightStructureEntitiesCreated() + { + // Setup + HeightStructure structure = new TestHeightStructure(); + + var failureMechanism = new HeightStructuresFailureMechanism(); + failureMechanism.HeightStructures.Add(structure); + + var persistenceRegistry = new PersistenceRegistry(); + + // Call + FailureMechanismEntity entity = failureMechanism.Create(persistenceRegistry); + + // Assert + Assert.AreEqual(1, entity.HeightStructureEntities.Count); + Assert.IsTrue(persistenceRegistry.Contains(structure)); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs =================================================================== diff -u -rcc91baaea7dfcc12765017b57ffc768c7d02f7a1 -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision cc91baaea7dfcc12765017b57ffc768c7d02f7a1) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -883,18 +883,6 @@ } } - #region HeightStructures FailureMechanism - - private static void AssertHeightStructuresFailureMechanism(HeightStructuresFailureMechanism expectedFailureMechanism, - HeightStructuresFailureMechanism actualFailureMechanism) - { - Assert.AreEqual(expectedFailureMechanism.GeneralInput.N, actualFailureMechanism.GeneralInput.N); - - AssertForeshoreProfiles(expectedFailureMechanism.ForeshoreProfiles, actualFailureMechanism.ForeshoreProfiles); - } - - #endregion - #region ClosingStructures FailureMechanism private static void AssertClosingStructuresFailureMechanism(ClosingStructuresFailureMechanism expectedFailureMechanism, @@ -920,6 +908,44 @@ #endregion + #region HeightStructures FailureMechanism + + private static void AssertHeightStructuresFailureMechanism(HeightStructuresFailureMechanism expectedFailureMechanism, + HeightStructuresFailureMechanism actualFailureMechanism) + { + Assert.AreEqual(expectedFailureMechanism.GeneralInput.N, actualFailureMechanism.GeneralInput.N); + + AssertForeshoreProfiles(expectedFailureMechanism.ForeshoreProfiles, actualFailureMechanism.ForeshoreProfiles); + AssertHeightStructures(expectedFailureMechanism.HeightStructures, actualFailureMechanism.HeightStructures); + } + + private static void AssertHeightStructures(ObservableList expectedHeightStructures, ObservableList actualHeightStructures) + { + Assert.AreEqual(expectedHeightStructures.Count, actualHeightStructures.Count); + for (int i = 0; i < expectedHeightStructures.Count; i++) + { + AssertHeightStructure(expectedHeightStructures[i], actualHeightStructures[i]); + } + } + + private static void AssertHeightStructure(HeightStructure expectedHeightStructure, HeightStructure actualHeightStructure) + { + Assert.AreEqual(expectedHeightStructure.Name, actualHeightStructure.Name); + Assert.AreEqual(expectedHeightStructure.Id, actualHeightStructure.Id); + Assert.AreEqual(expectedHeightStructure.Location, actualHeightStructure.Location); + Assert.AreEqual(expectedHeightStructure.StructureNormalOrientation, actualHeightStructure.StructureNormalOrientation); + + DistributionAssert.AreEqual(expectedHeightStructure.LevelCrestStructure, actualHeightStructure.LevelCrestStructure); + DistributionAssert.AreEqual(expectedHeightStructure.FlowWidthAtBottomProtection, actualHeightStructure.FlowWidthAtBottomProtection); + DistributionAssert.AreEqual(expectedHeightStructure.CriticalOvertoppingDischarge, actualHeightStructure.CriticalOvertoppingDischarge); + DistributionAssert.AreEqual(expectedHeightStructure.WidthFlowApertures, actualHeightStructure.WidthFlowApertures); + Assert.AreEqual(expectedHeightStructure.FailureProbabilityStructureWithErosion, actualHeightStructure.FailureProbabilityStructureWithErosion); + DistributionAssert.AreEqual(expectedHeightStructure.StorageStructureArea, actualHeightStructure.StorageStructureArea); + DistributionAssert.AreEqual(expectedHeightStructure.AllowedLevelIncreaseStorage, actualHeightStructure.AllowedLevelIncreaseStorage); + } + + #endregion + #region Piping FailureMechanism private static void AssertPipingFailureMechanism(PipingFailureMechanism expectedPipingFailureMechanism, PipingFailureMechanism actualPipingFailureMechanism) Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs =================================================================== diff -u -rb73d9512e3a69a17d8be939d91cb655d20aa64f2 -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs (.../FailureMechanismEntityReadExtensionsTest.cs) (revision b73d9512e3a69a17d8be939d91cb655d20aa64f2) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs (.../FailureMechanismEntityReadExtensionsTest.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -881,6 +881,52 @@ Assert.AreEqual(generalInputN, failureMechanism.GeneralInput.N); } + [Test] + public void ReadAsHeightStructuresFailureMechanism_WithHeightStructures_ReturnFailureMechanismWithHeightStructuresSet() + { + // Setup + var entity = new FailureMechanismEntity + { + CalculationGroupEntity = new CalculationGroupEntity(), + HeightStructureEntities = + { + new HeightStructureEntity + { + Order = 2, + Name = "Child1", + Id = "a" + }, + new HeightStructureEntity + { + Order = 1, + Name = "Child2", + Id = "b" + } + }, + HeightStructuresFailureMechanismMetaEntities = + { + new HeightStructuresFailureMechanismMetaEntity + { + N = 7 + } + } + }; + var collector = new ReadConversionCollector(); + var failureMechanism = new HeightStructuresFailureMechanism(); + + // Call + entity.ReadAsHeightStructuresFailureMechanism(failureMechanism, collector); + + // Assert + Assert.AreEqual(2, failureMechanism.HeightStructures.Count); + + HeightStructure child1 = failureMechanism.HeightStructures[0]; + Assert.AreEqual("Child2", child1.Name); + + HeightStructure child2 = failureMechanism.HeightStructures[1]; + Assert.AreEqual("Child1", child2.Name); + } + #endregion #region Closing Structures Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/RingtoetsProjectTestHelperTest.cs =================================================================== diff -u -rbeb484b744b2d77062ca98ef4ebf7cd32ee5a0cd -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/RingtoetsProjectTestHelperTest.cs (.../RingtoetsProjectTestHelperTest.cs) (revision beb484b744b2d77062ca98ef4ebf7cd32ee5a0cd) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/RingtoetsProjectTestHelperTest.cs (.../RingtoetsProjectTestHelperTest.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -198,6 +198,7 @@ HeightStructuresFailureMechanism heightStructuresFailureMechanism = assessmentSection.HeightStructures; Assert.AreEqual(2, heightStructuresFailureMechanism.ForeshoreProfiles.Count); + Assert.AreEqual(2, heightStructuresFailureMechanism.HeightStructures.Count); ClosingStructuresFailureMechanism closingStructuresFailureMechanism = assessmentSection.ClosingStructures; Assert.AreEqual(2, closingStructuresFailureMechanism.ForeshoreProfiles.Count); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj =================================================================== diff -u -rae14c5d4e4624fa87390e6d63bb419c648e12dda -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj (.../Application.Ringtoets.Storage.TestUtil.csproj) (revision ae14c5d4e4624fa87390e6d63bb419c648e12dda) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj (.../Application.Ringtoets.Storage.TestUtil.csproj) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -82,6 +82,10 @@ {C6309704-D67B-434C-BC98-9F8910BC1D10} Ringtoets.ClosingStructures.Data + + {f67e8ae8-1ff0-4680-9817-99e025cd9ff6} + Ringtoets.HeightStructures.Data.TestUtil + {87C2C553-C0BC-40BF-B1EA-B83BFF357F27} Ringtoets.Revetment.Data Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs =================================================================== diff -u -rcc91baaea7dfcc12765017b57ffc768c7d02f7a1 -rf25ee2320dd230d8d821689293c69de7c491b3b0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision cc91baaea7dfcc12765017b57ffc768c7d02f7a1) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision f25ee2320dd230d8d821689293c69de7c491b3b0) @@ -35,6 +35,7 @@ using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionOutwards.Data; using Ringtoets.HeightStructures.Data; +using Ringtoets.HeightStructures.Data.TestUtil; using Ringtoets.HydraRing.Data; using Ringtoets.Integration.Data; using Ringtoets.Integration.Data.StandAlone.SectionResults; @@ -366,6 +367,8 @@ private static void ConfigureHeightStructuresFailureMechanism(HeightStructuresFailureMechanism failureMechanism) { failureMechanism.GeneralInput.N = 5; + failureMechanism.HeightStructures.Add(new TestHeightStructure()); + failureMechanism.HeightStructures.Add(new TestHeightStructure()); } #endregion