Index: Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettingsFactory.cs
===================================================================
diff -u
--- Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettingsFactory.cs (revision 0)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettingsFactory.cs (revision 1a75c0f703334eacfc82f695b38405ccb9313add)
@@ -0,0 +1,39 @@
+using System;
+using System.IO;
+
+namespace Ringtoets.Common.Data.Hydraulics
+{
+ ///
+ /// Factory to create instances of .
+ ///
+ public static class HydraulicBoundaryCalculationSettingsFactory
+ {
+ ///
+ /// Creates a new instance of
+ /// based on a .
+ ///
+ /// The
+ /// to create a for.
+ /// The .
+ public static HydraulicBoundaryCalculationSettings CreateSettings(HydraulicBoundaryDatabase hydraulicBoundaryDatabase)
+ {
+ if (hydraulicBoundaryDatabase == null)
+ {
+ throw new ArgumentNullException(nameof(hydraulicBoundaryDatabase));
+ }
+
+ string hydraulicBoundaryDatabaseFilePath = hydraulicBoundaryDatabase.FilePath;
+ string hydraulicBoundaryDatabaseDirectory = null;
+
+ if (!string.IsNullOrWhiteSpace(hydraulicBoundaryDatabaseFilePath))
+ {
+ string directory = Path.GetDirectoryName(hydraulicBoundaryDatabaseFilePath);
+ hydraulicBoundaryDatabaseDirectory = Path.Combine(directory, "HLCD.sqlite");
+ }
+
+ return new HydraulicBoundaryCalculationSettings(hydraulicBoundaryDatabaseFilePath,
+ hydraulicBoundaryDatabaseDirectory,
+ hydraulicBoundaryDatabase.EffectivePreprocessorDirectory());
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj
===================================================================
diff -u -r59c26a72b1017bdb20e45a2301d8a109f5f16f5f -r1a75c0f703334eacfc82f695b38405ccb9313add
--- Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 59c26a72b1017bdb20e45a2301d8a109f5f16f5f)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 1a75c0f703334eacfc82f695b38405ccb9313add)
@@ -53,6 +53,7 @@
+
Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsFactoryTest.cs
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsFactoryTest.cs (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsFactoryTest.cs (revision 1a75c0f703334eacfc82f695b38405ccb9313add)
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Ringtoets.Common.Data.Hydraulics;
+
+namespace Ringtoets.Common.Data.Test.Hydraulics
+{
+ [TestFixture]
+ public class HydraulicBoundaryCalculationSettingsFactoryTest
+ {
+ [Test]
+ public void CreateSettings_HydraulicBoundaryDatabaseNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => HydraulicBoundaryCalculationSettingsFactory.CreateSettings(null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("hydraulicBoundaryDatabase", exception.ParamName);
+ }
+
+ [Test]
+ [TestCase(null)]
+ [TestCase("")]
+ [TestCase(" ")]
+ public void CreateSettings_WithHydraulicBoundaryDatabaseWithInvalidFilePath_ReturnsExpectedSettings(string filePath)
+ {
+ // Setup
+ var database = new HydraulicBoundaryDatabase
+ {
+ FilePath = filePath
+ };
+
+ // Call
+ HydraulicBoundaryCalculationSettings settings = HydraulicBoundaryCalculationSettingsFactory.CreateSettings(database);
+
+ // Assert
+ Assert.AreEqual(database.FilePath, settings.HydraulicBoundaryDatabaseFilePath);
+ Assert.IsNull(settings.HlcdFilePath);
+ }
+
+ [Test]
+ public void CreateSettings_WithHydraulicBoundaryDatabaseWithFilePath_ReturnsExpectedSettings()
+ {
+ // Setup
+ string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Service, "HydraRingCalculation");
+ string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite");
+ var database = new HydraulicBoundaryDatabase
+ {
+ FilePath = validFilePath
+ };
+
+ // Call
+ HydraulicBoundaryCalculationSettings settings = HydraulicBoundaryCalculationSettingsFactory.CreateSettings(database);
+
+ // Assert
+ Assert.AreEqual(validFilePath, settings.HydraulicBoundaryDatabaseFilePath);
+ Assert.AreEqual(Path.Combine(testDataPath, "HLCD.sqlite"), settings.HlcdFilePath);
+ }
+
+ [Test]
+ [TestCaseSource(nameof(GetPreprocessorConfigurations))]
+ public void CreateSettings_WithHydraulicBoundaryDatabaseWithVariousPreprocessorConfigurations_ReturnsExpectedSettings(
+ HydraulicBoundaryDatabase database,
+ string expectedPreprocessorDirectory)
+ {
+ // Setup
+
+ // Call
+ HydraulicBoundaryCalculationSettings settings = HydraulicBoundaryCalculationSettingsFactory.CreateSettings(database);
+
+ // Assert
+ Assert.AreEqual(expectedPreprocessorDirectory, settings.PreprocessorDirectory);
+ }
+
+ private static IEnumerable GetPreprocessorConfigurations()
+ {
+ yield return new TestCaseData(new HydraulicBoundaryDatabase(),
+ string.Empty)
+ .SetName("UsePreprocessorFalse");
+
+ yield return new TestCaseData(new HydraulicBoundaryDatabase
+ {
+ CanUsePreprocessor = true,
+ PreprocessorDirectory = "Directory"
+ }, string.Empty)
+ .SetName("UsePreprocessorFalseWithPreprocessorDirectory");
+
+ const string preprocessorDirectory = "Directory";
+ yield return new TestCaseData(new HydraulicBoundaryDatabase
+ {
+ CanUsePreprocessor = true,
+ UsePreprocessor = true,
+ PreprocessorDirectory = preprocessorDirectory
+ }, preprocessorDirectory)
+ .SetName("UsePreprocessorTrueWithPreprocessorDirectory");
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Ringtoets.Common.Data.Test.csproj
===================================================================
diff -u -r59c26a72b1017bdb20e45a2301d8a109f5f16f5f -r1a75c0f703334eacfc82f695b38405ccb9313add
--- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Ringtoets.Common.Data.Test.csproj (.../Ringtoets.Common.Data.Test.csproj) (revision 59c26a72b1017bdb20e45a2301d8a109f5f16f5f)
+++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Ringtoets.Common.Data.Test.csproj (.../Ringtoets.Common.Data.Test.csproj) (revision 1a75c0f703334eacfc82f695b38405ccb9313add)
@@ -51,6 +51,7 @@
+