Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/HydraulicBoundaryDatabaseCreateExtensions.cs =================================================================== diff -u -rfc6767838834f2e37a011e3b441413dec7036301 -r3a18b9a985e7ac9b0c946edd37b1d427fd4aaccd --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/HydraulicBoundaryDatabaseCreateExtensions.cs (.../HydraulicBoundaryDatabaseCreateExtensions.cs) (revision fc6767838834f2e37a011e3b441413dec7036301) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/HydraulicBoundaryDatabaseCreateExtensions.cs (.../HydraulicBoundaryDatabaseCreateExtensions.cs) (revision 3a18b9a985e7ac9b0c946edd37b1d427fd4aaccd) @@ -39,22 +39,38 @@ /// The to create a /// for. /// Index at which this instance resides inside its parent container. + /// The object keeping track of create operations. /// A new . - /// Thrown when is null. - internal static HydraulicBoundaryDatabaseEntity Create(this HydraulicBoundaryDatabase hydraulicBoundaryDatabase, int order) + /// Thrown when + /// or is null. + internal static HydraulicBoundaryDatabaseEntity Create(this HydraulicBoundaryDatabase hydraulicBoundaryDatabase, + PersistenceRegistry registry, int order) { if (hydraulicBoundaryDatabase == null) { throw new ArgumentNullException(nameof(hydraulicBoundaryDatabase)); } - return new HydraulicBoundaryDatabaseEntity + if (registry == null) { + throw new ArgumentNullException(nameof(registry)); + } + + var entity = new HydraulicBoundaryDatabaseEntity + { FilePath = hydraulicBoundaryDatabase.FilePath.DeepClone(), Version = hydraulicBoundaryDatabase.Version.DeepClone(), UsePreprocessorClosure = Convert.ToByte(hydraulicBoundaryDatabase.UsePreprocessorClosure), Order = order }; + + for (var i = 0; i < hydraulicBoundaryDatabase.Locations.Count; i++) + { + HydraulicBoundaryLocation location = hydraulicBoundaryDatabase.Locations[i]; + entity.HydraulicLocationEntities.Add(location.Create(registry, i)); + } + + return entity; } } } \ No newline at end of file Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/HydraulicBoundaryDatabaseCreateExtensionsTest.cs =================================================================== diff -u -rfc6767838834f2e37a011e3b441413dec7036301 -r3a18b9a985e7ac9b0c946edd37b1d427fd4aaccd --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/HydraulicBoundaryDatabaseCreateExtensionsTest.cs (.../HydraulicBoundaryDatabaseCreateExtensionsTest.cs) (revision fc6767838834f2e37a011e3b441413dec7036301) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/HydraulicBoundaryDatabaseCreateExtensionsTest.cs (.../HydraulicBoundaryDatabaseCreateExtensionsTest.cs) (revision 3a18b9a985e7ac9b0c946edd37b1d427fd4aaccd) @@ -35,35 +35,56 @@ public void Create_HydraulicBoundaryDatabaseNull_ThrowsArgumentNullException() { // Call - void Call() => HydraulicBoundaryDatabaseCreateExtensions.Create(null, 0); + void Call() => ((HydraulicBoundaryDatabase) null).Create(new PersistenceRegistry(), 0); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("hydraulicBoundaryDatabase", exception.ParamName); } - + [Test] + public void Create_RegistryNull_ThrowsArgumentNullException() + { + // Setup + var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); + + // Call + void Call() => hydraulicBoundaryDatabase.Create(null, 0); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("registry", exception.ParamName); + } + + [Test] public void Create_ValidHydraulicBoundaryDatabase_ReturnsHydraulicBoundaryDatabaseEntity() { // Setup var random = new Random(21); int order = random.Next(); - + var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = "hrdFilePath", Version = "version", - UsePreprocessorClosure = random.NextBoolean() + UsePreprocessorClosure = random.NextBoolean(), + Locations = + { + new HydraulicBoundaryLocation(-1, "name", 1, 2) + } }; // Call - HydraulicBoundaryDatabaseEntity entity = hydraulicBoundaryDatabase.Create(order); - + HydraulicBoundaryDatabaseEntity entity = hydraulicBoundaryDatabase.Create(new PersistenceRegistry(), order); + // Assert TestHelper.AssertAreEqualButNotSame(hydraulicBoundaryDatabase.FilePath, entity.FilePath); TestHelper.AssertAreEqualButNotSame(hydraulicBoundaryDatabase.Version, entity.Version); TestHelper.AssertAreEqualButNotSame(Convert.ToByte(hydraulicBoundaryDatabase.UsePreprocessorClosure), entity.UsePreprocessorClosure); TestHelper.AssertAreEqualButNotSame(order, entity.Order); + + int expectedNrOfHydraulicBoundaryLocations = hydraulicBoundaryDatabase.Locations.Count; + Assert.AreEqual(expectedNrOfHydraulicBoundaryLocations, entity.HydraulicLocationEntities.Count); } } } \ No newline at end of file