Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/HydraRingCalculatorBase.cs
===================================================================
diff -u -r1d3f4583c76e5886ef45b64734f8e408b8c9673f -r7be7725d522fa62ca6c7abadeb13da2b571ae9ab
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/HydraRingCalculatorBase.cs (.../HydraRingCalculatorBase.cs) (revision 1d3f4583c76e5886ef45b64734f8e408b8c9673f)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/HydraRingCalculatorBase.cs (.../HydraRingCalculatorBase.cs) (revision 7be7725d522fa62ca6c7abadeb13da2b571ae9ab)
@@ -41,6 +41,7 @@
///
internal abstract class HydraRingCalculatorBase
{
+ private readonly HydraRingCalculationSettings calculationSettings;
private readonly LastErrorFileParser lastErrorFileParser;
private readonly IllustrationPointsParser illustrationPointsParser;
@@ -93,8 +94,7 @@
throw new ArgumentNullException(nameof(calculationSettings));
}
- hlcdDirectory = calculationSettings.HlcdFilePath;
- preprocessorDirectory = calculationSettings.PreprocessorDirectory;
+ this.calculationSettings = calculationSettings;
lastErrorFileParser = new LastErrorFileParser();
illustrationPointsParser = new IllustrationPointsParser();
@@ -157,7 +157,7 @@
{
try
{
- if (string.IsNullOrEmpty(preprocessorDirectory) && hydraRingCalculationInput.PreprocessorSetting.RunPreprocessor)
+ if (string.IsNullOrEmpty(calculationSettings.PreprocessorDirectory) && hydraRingCalculationInput.PreprocessorSetting.RunPreprocessor)
{
throw new InvalidOperationException("Preprocessor directory required but not specified.");
}
@@ -171,9 +171,8 @@
var hydraRingInitializationService = new HydraRingInitializationService(
hydraRingCalculationInput.FailureMechanismType,
sectionId,
- hlcdDirectory,
OutputDirectory,
- preprocessorDirectory);
+ calculationSettings);
hydraRingInitializationService.WriteInitializationScript();
hydraRingConfigurationService.WriteDatabaseCreationScript(hydraRingInitializationService.DatabaseCreationScriptFilePath);
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/HydraRingFileConstants.cs
===================================================================
diff -u -r2a81f01756e227d5ce93717b21b87e8a5cd5fcbb -r7be7725d522fa62ca6c7abadeb13da2b571ae9ab
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/HydraRingFileConstants.cs (.../HydraRingFileConstants.cs) (revision 2a81f01756e227d5ce93717b21b87e8a5cd5fcbb)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/HydraRingFileConstants.cs (.../HydraRingFileConstants.cs) (revision 7be7725d522fa62ca6c7abadeb13da2b571ae9ab)
@@ -32,21 +32,11 @@
internal const string DesignTablesFileName = "designTable.txt";
///
- /// The file name of the working database which contains input and output.
- ///
- internal const string WorkingDatabaseFileName = "temp.sqlite";
-
- ///
/// The tail and extension of the output database which contains output for a calculation.
///
internal const string OutputDatabaseFileNameSuffix = "-output.sqlite";
///
- /// The file name of the HLCD database.
- ///
- internal const string HlcdDatabaseFileName = "HLCD.sqlite";
-
- ///
/// The file name of the executable of Hydra-Ring.
///
internal const string HydraRingExecutableFileName = "MechanismComputation.exe";
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingInitializationService.cs
===================================================================
diff -u -r2a81f01756e227d5ce93717b21b87e8a5cd5fcbb -r7be7725d522fa62ca6c7abadeb13da2b571ae9ab
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingInitializationService.cs (.../HydraRingInitializationService.cs) (revision 2a81f01756e227d5ce93717b21b87e8a5cd5fcbb)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingInitializationService.cs (.../HydraRingInitializationService.cs) (revision 7be7725d522fa62ca6c7abadeb13da2b571ae9ab)
@@ -24,6 +24,7 @@
using System.Reflection;
using System.Security;
using Ringtoets.HydraRing.Calculation.Data;
+using Ringtoets.HydraRing.Calculation.Data.Input;
using Ringtoets.HydraRing.Calculation.Providers;
namespace Ringtoets.HydraRing.Calculation.Services
@@ -60,24 +61,29 @@
///
/// The failure mechanism type.
/// The section id.
- /// The HLCD directory.
/// The working directory.
- /// The preprocessor directory.
- /// Preprocessing is disabled when
+ /// The
+ /// which holds all the general information to start a Hydra-Ring calculation.
+ /// Preprocessing is disabled when
/// matches .
+ /// Thrown when is null.
public HydraRingInitializationService(HydraRingFailureMechanismType failureMechanismType,
int sectionId,
- string hlcdDirectory,
string temporaryWorkingDirectory,
- string preprocessorDirectory)
+ HydraRingCalculationSettings settings)
{
+ if (settings == null)
+ {
+ throw new ArgumentNullException(nameof(settings));
+ }
+
mechanismId = new FailureMechanismDefaultsProvider().GetFailureMechanismDefaults(failureMechanismType).MechanismId;
this.sectionId = sectionId;
TemporaryWorkingDirectory = temporaryWorkingDirectory;
- hlcdFilePath = Path.Combine(hlcdDirectory, HydraRingFileConstants.HlcdDatabaseFileName);
+ hlcdFilePath = settings.HlcdFilePath;
hydraRingDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), hydraRingBinariesSubDirectory);
configurationDatabaseFilePath = Path.Combine(hydraRingDirectory, HydraRingFileConstants.ConfigurationDatabaseFileName);
- this.preprocessorDirectory = preprocessorDirectory;
+ preprocessorDirectory = settings.PreprocessorDirectory;
}
///
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/HydraRingCalculatorBaseTest.cs
===================================================================
diff -u -r1d3f4583c76e5886ef45b64734f8e408b8c9673f -r7be7725d522fa62ca6c7abadeb13da2b571ae9ab
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/HydraRingCalculatorBaseTest.cs (.../HydraRingCalculatorBaseTest.cs) (revision 1d3f4583c76e5886ef45b64734f8e408b8c9673f)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/HydraRingCalculatorBaseTest.cs (.../HydraRingCalculatorBaseTest.cs) (revision 7be7725d522fa62ca6c7abadeb13da2b571ae9ab)
@@ -38,28 +38,17 @@
public class HydraRingCalculatorBaseTest
{
[Test]
- public void Constructor_HlcdDirectoryNull_ThrowsArgumentNullException()
+ public void Constructor_CalculationSettingsNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate test = () => new TestHydraRingCalculator(null, "");
+ TestDelegate call = () => new TestHydraRingCalculator(null);
// Assert
- string paramName = Assert.Throws(test).ParamName;
- Assert.AreEqual("hlcdDirectory", paramName);
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("calculationSettings", exception.ParamName);
}
[Test]
- public void Constructor_PreprocessorDirectoryNull_ThrowsArgumentNullException()
- {
- // Call
- TestDelegate test = () => new TestHydraRingCalculator("", null);
-
- // Assert
- string paramName = Assert.Throws(test).ParamName;
- Assert.AreEqual("preprocessorDirectory", paramName);
- }
-
- [Test]
public void Calculate_NoPreprocessorDirectoryWhenRequired_ThrowsInvalidOperationException()
{
// Setup
@@ -79,17 +68,6 @@
}
[Test]
- public void Constructor_CalculationSettingsNull_ThrowsArgumentNullException()
- {
- // Call
- TestDelegate call = () => new TestHydraRingCalculator(null);
-
- // Assert
- var exception = Assert.Throws(call);
- Assert.AreEqual("calculationSettings", exception.ParamName);
- }
-
- [Test]
public void Calculate_WithCustomParser_ParsersExecutedAndOutputSet()
{
// Setup
@@ -153,13 +131,15 @@
public void Calculate_LastErrorFilePresent_LastErrorFileContentSet()
{
// Setup
- var calculator = new TestHydraRingCalculator(CreateHydraRingCalculationSettings(), new TestParser());
+ var settings = new HydraRingCalculationSettings("D:\\HLCD.sqlite", string.Empty);
+ var calculator = new TestHydraRingCalculator(settings, new TestParser());
// Call
calculator.PublicCalculate(new TestHydraRingCalculationInput());
// Assert
- Assert.AreEqual("Hydraulic database HLCD.sqlite not found.\r\n", calculator.LastErrorFileContent);
+ string expectedContent = $"Hydraulic database {settings.HlcdFilePath} not found.\r\n";
+ Assert.AreEqual(expectedContent, calculator.LastErrorFileContent);
}
[Test]
@@ -189,8 +169,6 @@
{
private readonly IHydraRingFileParser parser;
- public TestHydraRingCalculator(string hlcdDirectory, string preprocessorDirectory) : base(hlcdDirectory, preprocessorDirectory) {}
-
public TestHydraRingCalculator(HydraRingCalculationSettings calculationSettings) : base(calculationSettings) {}
public TestHydraRingCalculator(HydraRingCalculationSettings calculationSettings, IHydraRingFileParser parser) : base(calculationSettings)
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Services/HydraRingInitializationServiceTest.cs
===================================================================
diff -u -r2a81f01756e227d5ce93717b21b87e8a5cd5fcbb -r7be7725d522fa62ca6c7abadeb13da2b571ae9ab
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Services/HydraRingInitializationServiceTest.cs (.../HydraRingInitializationServiceTest.cs) (revision 2a81f01756e227d5ce93717b21b87e8a5cd5fcbb)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Services/HydraRingInitializationServiceTest.cs (.../HydraRingInitializationServiceTest.cs) (revision 7be7725d522fa62ca6c7abadeb13da2b571ae9ab)
@@ -25,6 +25,7 @@
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.HydraRing.Calculation.Data;
+using Ringtoets.HydraRing.Calculation.Data.Input;
using Ringtoets.HydraRing.Calculation.Services;
namespace Ringtoets.HydraRing.Calculation.Test.Services
@@ -35,14 +36,33 @@
private readonly string hydraRingDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"HydraRing");
[Test]
+ public void Constructor_SettingsNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ var random = new Random(21);
+
+ // Call
+ TestDelegate call = () => new HydraRingInitializationService(random.NextEnumValue(),
+ random.Next(),
+ "D:\\work",
+ null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("settings", exception.ParamName);
+ }
+
+ [Test]
public void ParameteredConstructor_ExpectedValues()
{
+ // Setup
+ var settings = new HydraRingCalculationSettings("D:\\hlcd\\hlcdFilePath", "D:\\preprocessor");
+
// Call
var hydraRingInitializationService = new HydraRingInitializationService(HydraRingFailureMechanismType.AssessmentLevel,
700001,
- "D:\\hlcd",
"D:\\work",
- "D:\\preprocessor");
+ settings);
// Assert
Assert.AreEqual("D:\\work\\700001.ini", hydraRingInitializationService.IniFilePath);
@@ -51,19 +71,19 @@
Assert.AreEqual("D:\\work", hydraRingInitializationService.TemporaryWorkingDirectory);
}
- [TestCase(null)]
+ [Test]
[TestCase("")]
[TestCase("D:\\preprocessor")]
public void GenerateInitializationScript_ReturnsExpectedInitializationScript(string preprocessorDirectory)
{
// Setup
- const string hlcdDirectory = "D:\\hlcd";
+ const string hlcdFilePath = "D:\\hlcd\\HlcdFile.sqlite";
+ var settings = new HydraRingCalculationSettings(hlcdFilePath, preprocessorDirectory);
var hydraRingInitializationService = new HydraRingInitializationService(HydraRingFailureMechanismType.StructuresStructuralFailure,
700001,
- hlcdDirectory,
TestHelper.GetScratchPadPath(),
- preprocessorDirectory);
+ settings);
string expectedInitializationScript = "section = 700001" + Environment.NewLine +
"mechanism = 112" + Environment.NewLine +
@@ -75,7 +95,7 @@
"projectdbfilename = 700001.sql" + Environment.NewLine +
"outputfilename = designTable.txt" + Environment.NewLine +
"configdbfilename = " + Path.Combine(hydraRingDirectory, "config.sqlite") + Environment.NewLine +
- "hydraulicdbfilename = " + Path.Combine(hlcdDirectory, "HLCD.sqlite") + Environment.NewLine +
+ "hydraulicdbfilename = " + hlcdFilePath + Environment.NewLine +
"designpointOutput = sqlite";
if (!string.IsNullOrEmpty(preprocessorDirectory))