Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCreateExtensions.cs =================================================================== diff -u -rb3c727f0765a7658ebdef636b20fcc78abc11ed1 -rc09f98eb4d96d7b5e5efe5029970f0d2ff2f87d2 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCreateExtensions.cs (.../HydraulicBoundaryLocationCreateExtensions.cs) (revision b3c727f0765a7658ebdef636b20fcc78abc11ed1) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCreateExtensions.cs (.../HydraulicBoundaryLocationCreateExtensions.cs) (revision c09f98eb4d96d7b5e5efe5029970f0d2ff2f87d2) @@ -45,6 +45,7 @@ { throw new ArgumentNullException(nameof(registry)); } + if (registry.Contains(location)) { return registry.Get(location); @@ -56,14 +57,17 @@ Name = location.Name.DeepClone(), LocationX = location.Location.X.ToNaNAsNull(), LocationY = location.Location.Y.ToNaNAsNull(), - ShouldDesignWaterLevelIllustrationPointsBeCalculated = GetShouldIllustrationPointsBeCalculated(location.DesignWaterLevelCalculation1), - ShouldWaveHeightIllustrationPointsBeCalculated = GetShouldIllustrationPointsBeCalculated(location.WaveHeightCalculation1), + HydraulicLocationCalculationEntity = location.DesignWaterLevelCalculation1.Create(), + HydraulicLocationCalculationEntity1 = location.DesignWaterLevelCalculation2.Create(), + HydraulicLocationCalculationEntity2 = location.DesignWaterLevelCalculation3.Create(), + HydraulicLocationCalculationEntity3 = location.DesignWaterLevelCalculation4.Create(), + HydraulicLocationCalculationEntity4 = location.WaveHeightCalculation1.Create(), + HydraulicLocationCalculationEntity5 = location.WaveHeightCalculation2.Create(), + HydraulicLocationCalculationEntity6 = location.WaveHeightCalculation3.Create(), + HydraulicLocationCalculationEntity7 = location.WaveHeightCalculation4.Create(), Order = order }; - CreateHydraulicLocationOutput(entity, location.DesignWaterLevelCalculation1.Output, HydraulicLocationOutputType.DesignWaterLevel); - CreateHydraulicLocationOutput(entity, location.WaveHeightCalculation1.Output, HydraulicLocationOutputType.WaveHeight); - registry.Register(entity, location); return entity; } @@ -73,16 +77,6 @@ return Convert.ToByte(calculation.InputParameters.ShouldIllustrationPointsBeCalculated); } - private static void CreateHydraulicLocationOutput(HydraulicLocationEntity entity, HydraulicBoundaryLocationOutput output, - HydraulicLocationOutputType outputType) - { - if (output != null) - { - var hydraulicLocationOutputEntity = HydraulicBoundaryLocationOutputCreateExtensions.CreateGrassCoverErosionOutwardsHydraulicBoundaryLocationOutputEntity(outputType); - entity.HydraulicLocationOutputEntities.Add(hydraulicLocationOutputEntity); - } - } - #region Grass CoverErosion Outwards HydraulicLocation /// @@ -100,6 +94,7 @@ { throw new ArgumentNullException(nameof(registry)); } + if (registry.Contains(location)) { return registry.Get(location); @@ -131,7 +126,7 @@ { if (output != null) { - var grassCoverErosionOutwardsHydraulicLocationOutputEntity = + GrassCoverErosionOutwardsHydraulicLocationOutputEntity grassCoverErosionOutwardsHydraulicLocationOutputEntity = output.CreateGrassCoverErosionOutwardsHydraulicBoundaryLocationOutputEntity(outputType); entity.GrassCoverErosionOutwardsHydraulicLocationOutputEntities.Add(grassCoverErosionOutwardsHydraulicLocationOutputEntity); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCreateExtensionsTest.cs =================================================================== diff -u -rcfc1ad28f543ae8ee0cb46ebb2767dc15de4493c -rc09f98eb4d96d7b5e5efe5029970f0d2ff2f87d2 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCreateExtensionsTest.cs) (revision cfc1ad28f543ae8ee0cb46ebb2767dc15de4493c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCreateExtensionsTest.cs) (revision c09f98eb4d96d7b5e5efe5029970f0d2ff2f87d2) @@ -60,24 +60,67 @@ int id = random.Next(0, 150); int order = random.Next(); - bool shouldDesignWaterLevelIllustrationPointsBeCalculated = random.NextBoolean(); - bool shouldWaveHeightIllustrationPointsBeCalculated = random.NextBoolean(); - var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(id, testName, coordinateX, coordinateY) { DesignWaterLevelCalculation1 = { InputParameters = { - ShouldIllustrationPointsBeCalculated = shouldDesignWaterLevelIllustrationPointsBeCalculated + ShouldIllustrationPointsBeCalculated = random.NextBoolean() } }, + DesignWaterLevelCalculation2 = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = random.NextBoolean() + }, + Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()) + }, + DesignWaterLevelCalculation3 = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = random.NextBoolean() + } + }, + DesignWaterLevelCalculation4 = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = random.NextBoolean() + }, + Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()) + }, WaveHeightCalculation1 = { InputParameters = { - ShouldIllustrationPointsBeCalculated = shouldWaveHeightIllustrationPointsBeCalculated + ShouldIllustrationPointsBeCalculated = random.NextBoolean() } + }, + WaveHeightCalculation2 = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = random.NextBoolean() + }, + Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()) + }, + WaveHeightCalculation3 = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = random.NextBoolean() + } + }, + WaveHeightCalculation4 = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = random.NextBoolean() + }, + Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()) } }; var registry = new PersistenceRegistry(); @@ -91,11 +134,16 @@ Assert.AreEqual(testName, entity.Name); Assert.AreEqual(coordinateX, entity.LocationX); Assert.AreEqual(coordinateY, entity.LocationY); - Assert.AreEqual(Convert.ToByte(shouldDesignWaterLevelIllustrationPointsBeCalculated), entity.ShouldDesignWaterLevelIllustrationPointsBeCalculated); - Assert.AreEqual(Convert.ToByte(shouldWaveHeightIllustrationPointsBeCalculated), entity.ShouldWaveHeightIllustrationPointsBeCalculated); Assert.AreEqual(order, entity.Order); - CollectionAssert.IsEmpty(entity.HydraulicLocationOutputEntities); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.DesignWaterLevelCalculation1, entity.HydraulicLocationCalculationEntity); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.DesignWaterLevelCalculation2, entity.HydraulicLocationCalculationEntity1); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.DesignWaterLevelCalculation3, entity.HydraulicLocationCalculationEntity2); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.DesignWaterLevelCalculation4, entity.HydraulicLocationCalculationEntity3); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.WaveHeightCalculation1, entity.HydraulicLocationCalculationEntity4); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.WaveHeightCalculation2, entity.HydraulicLocationCalculationEntity5); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.WaveHeightCalculation3, entity.HydraulicLocationCalculationEntity6); + AssertHydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation.WaveHeightCalculation4, entity.HydraulicLocationCalculationEntity7); } [Test] @@ -117,106 +165,6 @@ } [Test] - public void Create_WithPersistenceRegistryAndInitializer_ReturnsHydraulicLocationEntityWithOutputSet() - { - // Setup - var random = new Random(21); - var hydraulicBoundaryLocationDesignWaterLevelOutput = new HydraulicBoundaryLocationOutput( - random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), - random.NextDouble(), random.NextEnumValue(), null); - var hydraulicBoundaryLocationWaveHeightOutput = new HydraulicBoundaryLocationOutput( - random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), - random.NextDouble(), random.NextEnumValue(), null); - - var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(-1, "testName", random.NextDouble(), random.NextDouble()) - { - DesignWaterLevelCalculation1 = - { - Output = hydraulicBoundaryLocationDesignWaterLevelOutput - }, - WaveHeightCalculation1 = - { - Output = hydraulicBoundaryLocationWaveHeightOutput - } - }; - var registry = new PersistenceRegistry(); - - // Call - HydraulicLocationEntity entity = hydraulicBoundaryLocation.Create(registry, 0); - - // Assert - Assert.IsNotNull(entity); - - IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); - Assert.IsNotNull(designWaterLevelOutputEntity); - AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, designWaterLevelOutputEntity); - Assert.IsNull(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); - - IHydraulicLocationOutputEntity waveHeightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.WaveHeight); - Assert.IsNotNull(waveHeightOutputEntity); - AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationWaveHeightOutput, waveHeightOutputEntity); - Assert.IsNull(waveHeightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); - } - - [Test] - public void Create_WithPersistenceRegistryAndGeneralResult_ReturnsHydraulicLocationEntityWithOutputAndGeneralResultSet() - { - // Setup - var random = new Random(21); - var hydraulicBoundaryLocationDesignWaterLevelOutput = new HydraulicBoundaryLocationOutput( - random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), - random.NextDouble(), random.NextEnumValue(), - new TestGeneralResultSubMechanismIllustrationPoint()); - - var hydraulicBoundaryLocationWaveHeightOutput = new HydraulicBoundaryLocationOutput( - random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), - random.NextDouble(), random.NextEnumValue(), - new TestGeneralResultSubMechanismIllustrationPoint()); - - bool shouldIllustrationPointsBeCalculated = random.NextBoolean(); - var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(-1, "testName", random.NextDouble(), random.NextDouble()) - { - DesignWaterLevelCalculation1 = - { - InputParameters = - { - ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated - }, - Output = hydraulicBoundaryLocationDesignWaterLevelOutput - }, - WaveHeightCalculation1 = - { - InputParameters = - { - ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated - }, - Output = hydraulicBoundaryLocationWaveHeightOutput - } - }; - var registry = new PersistenceRegistry(); - - // Call - HydraulicLocationEntity entity = hydraulicBoundaryLocation.Create(registry, 0); - - // Assert - Assert.IsNotNull(entity); - - IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); - Assert.IsNotNull(designWaterLevelOutputEntity); - AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, designWaterLevelOutputEntity); - Assert.IsNotNull(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); - AssertGeneralResult(hydraulicBoundaryLocationDesignWaterLevelOutput.GeneralResult, - designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); - - IHydraulicLocationOutputEntity waveHeightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); - Assert.IsNotNull(waveHeightOutputEntity); - AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, waveHeightOutputEntity); - Assert.IsNotNull(waveHeightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); - AssertGeneralResult(hydraulicBoundaryLocationWaveHeightOutput.GeneralResult, - waveHeightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); - } - - [Test] public void Create_HydraulicBoundaryLocationSavedMultipleTimes_ReturnSameEntity() { // Setup @@ -431,14 +379,23 @@ Assert.AreSame(entity1, entity2); } - private static IHydraulicLocationOutputEntity GetHydraulicLocationOutputEntity( - HydraulicLocationEntity entity, HydraulicLocationOutputType outputType) + private static void AssertHydraulicBoundaryLocationCalculation(HydraulicBoundaryLocationCalculation calculation, + HydraulicLocationCalculationEntity entity) { - return entity.HydraulicLocationOutputEntities.SingleOrDefault( - e => e.HydraulicLocationOutputType == (byte) outputType); + Assert.AreEqual(Convert.ToByte(calculation.InputParameters.ShouldIllustrationPointsBeCalculated), + entity.ShouldIllustrationPointsBeCalculated); + + if (calculation.Output == null) + { + CollectionAssert.IsEmpty(entity.HydraulicLocationOutputEntities); + } + else + { + Assert.AreEqual(1, entity.HydraulicLocationOutputEntities.Count); + } } - private static IHydraulicLocationOutputEntity GetHydraulicLocationOutputEntity( + private static GrassCoverErosionOutwardsHydraulicLocationOutputEntity GetHydraulicLocationOutputEntity( GrassCoverErosionOutwardsHydraulicLocationEntity entity, HydraulicLocationOutputType outputType) { return entity.GrassCoverErosionOutwardsHydraulicLocationOutputEntities.SingleOrDefault( Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs =================================================================== diff -u -r87b871f1ce03d1909e2402890a01154c5d9b797b -rc09f98eb4d96d7b5e5efe5029970f0d2ff2f87d2 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs) (revision 87b871f1ce03d1909e2402890a01154c5d9b797b) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs) (revision c09f98eb4d96d7b5e5efe5029970f0d2ff2f87d2) @@ -26,7 +26,7 @@ using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; -using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Data.TestUtil.IllustrationPoints; namespace Application.Ringtoets.Storage.Test { @@ -69,7 +69,7 @@ } [Test] - public void Create_CalculationWithOutput_ReturnsHydraulicLocationCalculationEntityWithOutput() + public void Create_CalculationWithOutputAndWithoutGeneralResult_ReturnsHydraulicLocationCalculationEntityWithOutput() { // Setup var random = new Random(33); @@ -80,7 +80,10 @@ { ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated }, - Output = new TestHydraulicBoundaryLocationOutput(random.NextDouble()) + Output = new HydraulicBoundaryLocationOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue(), + null) }; // Call @@ -94,6 +97,35 @@ AssertHydraulicLocationOutput(calculation.Output, outputEntity); } + [Test] + public void Create_CalculationWithOutputAndGeneralResult_ReturnsHydraulicLocationCalculationEntityWithOutput() + { + // Setup + var random = new Random(33); + bool shouldIllustrationPointsBeCalculated = random.NextBoolean(); + var calculation = new HydraulicBoundaryLocationCalculation + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated + }, + Output = new HydraulicBoundaryLocationOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue(), + new TestGeneralResultSubMechanismIllustrationPoint()) + }; + + // Call + HydraulicLocationCalculationEntity entity = calculation.Create(); + + // Assert + Assert.IsNotNull(entity); + Assert.AreEqual(Convert.ToByte(shouldIllustrationPointsBeCalculated), entity.ShouldIllustrationPointsBeCalculated); + + HydraulicLocationOutputEntity outputEntity = entity.HydraulicLocationOutputEntities.Single(); + AssertHydraulicLocationOutput(calculation.Output, outputEntity); + } + private static void AssertHydraulicLocationOutput(HydraulicBoundaryLocationOutput expectedOutput, HydraulicLocationOutputEntity actualOutput) {