Index: Riskeer/Storage/src/Riskeer.Storage.Core/Read/HydraulicBoundaryDatabaseEntityReadExtensions.cs =================================================================== diff -u -r1f44ff31cfcc30a7f79806d6eac552d1fa4a2eb2 -re9522dc9d31d3c3358ea6cee41e4d6ed47f4305d --- Riskeer/Storage/src/Riskeer.Storage.Core/Read/HydraulicBoundaryDatabaseEntityReadExtensions.cs (.../HydraulicBoundaryDatabaseEntityReadExtensions.cs) (revision 1f44ff31cfcc30a7f79806d6eac552d1fa4a2eb2) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Read/HydraulicBoundaryDatabaseEntityReadExtensions.cs (.../HydraulicBoundaryDatabaseEntityReadExtensions.cs) (revision e9522dc9d31d3c3358ea6cee41e4d6ed47f4305d) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Linq; using Riskeer.Common.Data.Hydraulics; using Riskeer.Storage.Core.DbContext; @@ -36,9 +37,11 @@ /// /// The to update the /// . + /// The object keeping track of read operations. /// The to update. /// Thrown when any parameter is null. - public static void Read(this HydraulicBoundaryDatabaseEntity entity, HydraulicBoundaryDatabase hydraulicBoundaryDatabase) + public static void Read(this HydraulicBoundaryDatabaseEntity entity, HydraulicBoundaryDatabase hydraulicBoundaryDatabase, + ReadConversionCollector collector) { if (entity == null) { @@ -50,9 +53,20 @@ throw new ArgumentNullException(nameof(hydraulicBoundaryDatabase)); } + if (collector == null) + { + throw new ArgumentNullException(nameof(collector)); + } + hydraulicBoundaryDatabase.FilePath = entity.FilePath; hydraulicBoundaryDatabase.Version = entity.Version; hydraulicBoundaryDatabase.UsePreprocessorClosure = Convert.ToBoolean(entity.UsePreprocessorClosure); + + HydraulicBoundaryLocation[] readHydraulicBoundaryLocations = entity.HydraulicLocationEntities + .OrderBy(hl => hl.Order) + .Select(hle => hle.Read(collector)) + .ToArray(); + hydraulicBoundaryDatabase.Locations.AddRange(readHydraulicBoundaryLocations); } } } \ No newline at end of file Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/HydraulicBoundaryDatabaseEntityReadExtensionsTest.cs =================================================================== diff -u -r1f44ff31cfcc30a7f79806d6eac552d1fa4a2eb2 -re9522dc9d31d3c3358ea6cee41e4d6ed47f4305d --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/HydraulicBoundaryDatabaseEntityReadExtensionsTest.cs (.../HydraulicBoundaryDatabaseEntityReadExtensionsTest.cs) (revision 1f44ff31cfcc30a7f79806d6eac552d1fa4a2eb2) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/HydraulicBoundaryDatabaseEntityReadExtensionsTest.cs (.../HydraulicBoundaryDatabaseEntityReadExtensionsTest.cs) (revision e9522dc9d31d3c3358ea6cee41e4d6ed47f4305d) @@ -25,6 +25,7 @@ using Riskeer.Common.Data.Hydraulics; using Riskeer.Storage.Core.DbContext; using Riskeer.Storage.Core.Read; +using Riskeer.Storage.Core.TestUtil.Hydraulics; namespace Riskeer.Storage.Core.Test.Read { @@ -35,7 +36,7 @@ public void Read_EntityNull_ThrowsArgumentNullException() { // Call - void Call() => ((HydraulicBoundaryDatabaseEntity) null).Read(new HydraulicBoundaryDatabase()); + void Call() => ((HydraulicBoundaryDatabaseEntity) null).Read(new HydraulicBoundaryDatabase(), new ReadConversionCollector()); // Assert var exception = Assert.Throws(Call); @@ -49,14 +50,28 @@ var entity = new HydraulicBoundaryDatabaseEntity(); // Call - void Call() => entity.Read(null); + void Call() => entity.Read(null, new ReadConversionCollector()); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("hydraulicBoundaryData", exception.ParamName); } [Test] + public void Read_CollectorNull_ThrowsArgumentNullException() + { + // Setup + var entity = new HydraulicBoundaryDatabaseEntity(); + + // Call + void Call() => entity.Read(new HydraulicBoundaryDatabase(), null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("collector", exception.ParamName); + } + + [Test] public void Read_WithValidEntity_UpdatesHydraulicBoundaryData() { // Setup @@ -66,18 +81,25 @@ { FilePath = "hrdFilePath", Version = "1.0", - UsePreprocessorClosure = Convert.ToByte(usePreprocessorClosure) + UsePreprocessorClosure = Convert.ToByte(usePreprocessorClosure), + HydraulicLocationEntities = + { + HydraulicLocationEntityTestFactory.CreateHydraulicLocationEntity() + } }; var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); // Call - entity.Read(hydraulicBoundaryDatabase); + entity.Read(hydraulicBoundaryDatabase, new ReadConversionCollector()); // Assert Assert.AreEqual(entity.FilePath, hydraulicBoundaryDatabase.FilePath); Assert.AreEqual(entity.Version, hydraulicBoundaryDatabase.Version); Assert.AreEqual(usePreprocessorClosure, hydraulicBoundaryDatabase.UsePreprocessorClosure); + + int expectedNrOfHydraulicBoundaryLocations = entity.HydraulicLocationEntities.Count; + Assert.AreEqual(expectedNrOfHydraulicBoundaryLocations, hydraulicBoundaryDatabase.Locations.Count); } } } \ No newline at end of file