Index: Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettings.cs =================================================================== diff -u -rfc505a6a1ef0418da1856b654a184044c5470782 -r6a9567f3fbe71ef6a2721018e5da5994a99a6db1 --- Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettings.cs (.../HydraulicBoundaryCalculationSettings.cs) (revision fc505a6a1ef0418da1856b654a184044c5470782) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettings.cs (.../HydraulicBoundaryCalculationSettings.cs) (revision 6a9567f3fbe71ef6a2721018e5da5994a99a6db1) @@ -19,6 +19,8 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; + namespace Ringtoets.Common.Data.Hydraulics { /// @@ -29,27 +31,28 @@ /// /// Creates a new instance of . /// - /// The file path of the Hydraulic Boundary Locations Configuration Database (HLCD). - /// The preprocessor directory. - public HydraulicBoundaryCalculationSettings(string hydraulicBoundaryDatabaseFilePath, string preprocessorDirectory) - - { - HydraulicBoundaryDatabaseFilePath = hydraulicBoundaryDatabaseFilePath; - PreprocessorDirectory = preprocessorDirectory; - } - - /// - /// Creates a new instance of . - /// /// The file path of the hydraulic boundary database. /// The file path of the HLCD. /// The preprocessor directory. + /// Thrown when + /// or is null, is empty or consists of whitespace. public HydraulicBoundaryCalculationSettings(string hydraulicBoundaryDatabaseFilePath, string hlcdFilePath, string preprocessorDirectory) - : this(hydraulicBoundaryDatabaseFilePath, preprocessorDirectory) { + if (string.IsNullOrWhiteSpace(hydraulicBoundaryDatabaseFilePath)) + { + throw new ArgumentException($"{nameof(hydraulicBoundaryDatabaseFilePath)} is null, empty or consist of whitespace."); + } + + if (string.IsNullOrWhiteSpace(hlcdFilePath)) + { + throw new ArgumentException($"{nameof(hlcdFilePath)} is null, empty or consist of whitespace."); + } + + HydraulicBoundaryDatabaseFilePath = hydraulicBoundaryDatabaseFilePath; HlcdFilePath = hlcdFilePath; + PreprocessorDirectory = preprocessorDirectory; } /// Index: Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettingsFactory.cs =================================================================== diff -u -rfc505a6a1ef0418da1856b654a184044c5470782 -r6a9567f3fbe71ef6a2721018e5da5994a99a6db1 --- Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettingsFactory.cs (.../HydraulicBoundaryCalculationSettingsFactory.cs) (revision fc505a6a1ef0418da1856b654a184044c5470782) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/HydraulicBoundaryCalculationSettingsFactory.cs (.../HydraulicBoundaryCalculationSettingsFactory.cs) (revision 6a9567f3fbe71ef6a2721018e5da5994a99a6db1) @@ -36,6 +36,8 @@ /// The /// to create a for. /// A . + /// Thrown when + /// is null, is empty or consists of whitespace. public static HydraulicBoundaryCalculationSettings CreateSettings(HydraulicBoundaryDatabase hydraulicBoundaryDatabase) { if (hydraulicBoundaryDatabase == null) @@ -44,18 +46,11 @@ } string hydraulicBoundaryDatabaseFilePath = hydraulicBoundaryDatabase.FilePath; - string effectivePreprocessorDirectory = hydraulicBoundaryDatabase.EffectivePreprocessorDirectory(); - if (string.IsNullOrWhiteSpace(hydraulicBoundaryDatabaseFilePath)) - { - return new HydraulicBoundaryCalculationSettings(hydraulicBoundaryDatabaseFilePath, - effectivePreprocessorDirectory); - } - string directory = Path.GetDirectoryName(hydraulicBoundaryDatabaseFilePath); string hlcdFilePath = Path.Combine(directory, "HLCD.sqlite"); return new HydraulicBoundaryCalculationSettings(hydraulicBoundaryDatabaseFilePath, hlcdFilePath, - effectivePreprocessorDirectory); + hydraulicBoundaryDatabase.EffectivePreprocessorDirectory()); } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsFactoryTest.cs =================================================================== diff -u -rfc505a6a1ef0418da1856b654a184044c5470782 -r6a9567f3fbe71ef6a2721018e5da5994a99a6db1 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsFactoryTest.cs (.../HydraulicBoundaryCalculationSettingsFactoryTest.cs) (revision fc505a6a1ef0418da1856b654a184044c5470782) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsFactoryTest.cs (.../HydraulicBoundaryCalculationSettingsFactoryTest.cs) (revision 6a9567f3fbe71ef6a2721018e5da5994a99a6db1) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2018. All rights reserved. +// Copyright (C) Stichting Deltares 2018. All rights reserved. // // This file is part of Ringtoets. // @@ -43,26 +43,6 @@ } [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 @@ -87,8 +67,6 @@ HydraulicBoundaryDatabase database, string expectedPreprocessorDirectory) { - // Setup - // Call HydraulicBoundaryCalculationSettings settings = HydraulicBoundaryCalculationSettingsFactory.CreateSettings(database); @@ -98,12 +76,19 @@ private static IEnumerable GetPreprocessorConfigurations() { - yield return new TestCaseData(new HydraulicBoundaryDatabase(), + string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Service, "HydraRingCalculation"); + string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + + yield return new TestCaseData(new HydraulicBoundaryDatabase + { + FilePath = validFilePath + }, string.Empty) .SetName("UsePreprocessorFalse"); yield return new TestCaseData(new HydraulicBoundaryDatabase { + FilePath = validFilePath, CanUsePreprocessor = true, PreprocessorDirectory = "Directory" }, string.Empty) @@ -112,6 +97,7 @@ const string preprocessorDirectory = "Directory"; yield return new TestCaseData(new HydraulicBoundaryDatabase { + FilePath = validFilePath, CanUsePreprocessor = true, UsePreprocessor = true, PreprocessorDirectory = preprocessorDirectory Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsTest.cs =================================================================== diff -u -rfc505a6a1ef0418da1856b654a184044c5470782 -r6a9567f3fbe71ef6a2721018e5da5994a99a6db1 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsTest.cs (.../HydraulicBoundaryCalculationSettingsTest.cs) (revision fc505a6a1ef0418da1856b654a184044c5470782) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/HydraulicBoundaryCalculationSettingsTest.cs (.../HydraulicBoundaryCalculationSettingsTest.cs) (revision 6a9567f3fbe71ef6a2721018e5da5994a99a6db1) @@ -19,7 +19,8 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; +using System; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; @@ -29,62 +30,57 @@ public class HydraulicBoundaryCalculationSettingsTest { [Test] - [TestCaseSource(nameof(GetTestCasesWithAllParameters))] - public void Constructor_WithArguments_ExpectedValues(string hydraulicBoundaryDatabaseFilePath, - string hlcdFilePath, - string preprocessorDirectory) + [TestCase(null)] + [TestCase("")] + [TestCase(" ")] + public void Constructor_InvalidHydraulicBoundaryDatabaseFilePath_ThrowsArgumentNullException(string invalidHydraulicBoundaryDatabaseFilePath) { // Call - var settings = new HydraulicBoundaryCalculationSettings(hydraulicBoundaryDatabaseFilePath, - hlcdFilePath, - preprocessorDirectory); + TestDelegate call = () => new HydraulicBoundaryCalculationSettings(invalidHydraulicBoundaryDatabaseFilePath, + "D:\\hlcdFilePath", + null); // Assert - Assert.AreEqual(hydraulicBoundaryDatabaseFilePath, settings.HydraulicBoundaryDatabaseFilePath); - Assert.AreEqual(hlcdFilePath, settings.HlcdFilePath); - Assert.AreEqual(preprocessorDirectory, settings.PreprocessorDirectory); + const string expectedMessage = "hydraulicBoundaryDatabaseFilePath is null, empty or consist of whitespace."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } [Test] - [TestCaseSource(nameof(GetTestCasesWithoutHlcdParameter))] - public void Constructor_ExpectedValues(string hydraulicBoundaryDatabaseFilePath, - string preprocessorDirectory) + [TestCase(null)] + [TestCase("")] + [TestCase(" ")] + public void Constructor_InvalidHlcdFilePath_ThrowsArgumentNullException(string invalidHlcdFilePath) { // Call + TestDelegate call = () => new HydraulicBoundaryCalculationSettings("D:\\HydraulicBoundaryDatabseFilePath", + invalidHlcdFilePath, + null); + + // Assert + const string expectedMessage = "hlcdFilePath is null, empty or consist of whitespace."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); + } + + [Test] + [TestCase(null)] + [TestCase("")] + [TestCase(" ")] + [TestCase("D:\\PreprocessorDirectory")] + public void Constructor_WithArguments_ExpectedValues(string preprocessorDirectory) + { + // Setup + const string hydraulicBoundaryDatabaseFilePath = "D:\\HydraulicBoundaryDatabaseFilePath"; + const string hlcdFilePath = "D:\\hlcdFilePath"; + + // Call var settings = new HydraulicBoundaryCalculationSettings(hydraulicBoundaryDatabaseFilePath, + hlcdFilePath, preprocessorDirectory); // Assert Assert.AreEqual(hydraulicBoundaryDatabaseFilePath, settings.HydraulicBoundaryDatabaseFilePath); - Assert.IsNull(settings.HlcdFilePath); + Assert.AreEqual(hlcdFilePath, settings.HlcdFilePath); Assert.AreEqual(preprocessorDirectory, settings.PreprocessorDirectory); } - - private static IEnumerable GetTestCasesWithAllParameters() - { - yield return new TestCaseData("D:\\HydraulicBoundaryDatabase.sqlite", - "D:\\HLCD.sqlite", - "D:\\") - .SetName("All inputs with values"); - yield return new TestCaseData(" ", " ", " ") - .SetName("All inputs whitespace"); - yield return new TestCaseData(string.Empty, string.Empty, string.Empty) - .SetName("All inputs empty"); - yield return new TestCaseData(null, null, null) - .SetName("All inputs null"); - } - - private static IEnumerable GetTestCasesWithoutHlcdParameter() - { - yield return new TestCaseData("D:\\HydraulicBoundaryDatabase.sqlite", - "D:\\") - .SetName("All inputs with values"); - yield return new TestCaseData(" ", " ") - .SetName("All inputs whitespace"); - yield return new TestCaseData(string.Empty, string.Empty) - .SetName("All inputs empty"); - yield return new TestCaseData(null, null) - .SetName("All inputs null"); - } } } \ No newline at end of file