Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs =================================================================== diff -u -r2c4404936f53178d527072729e7af7f41fc9fe71 -r3541c7abb0ff0c7eae87e83eed2bfe691a2d46e8 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs (.../DesignWaterLevelCalculationActivityTest.cs) (revision 2c4404936f53178d527072729e7af7f41fc9fe71) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs (.../DesignWaterLevelCalculationActivityTest.cs) (revision 3541c7abb0ff0c7eae87e83eed2bfe691a2d46e8) @@ -46,7 +46,8 @@ private const double validNorm = 0.005; private static readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Service, "HydraRingCalculation"); - private static readonly string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + private static readonly string validHydraulicBoundaryDatabaseFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + private static readonly string validHlcdFilePath = Path.Combine(testDataPath, "Hlcd.sqlite"); private static readonly string validPreprocessorDirectory = TestHelper.GetScratchPadPath(); private static IEnumerable HydraulicBoundaryLocationCalculationsToPerform @@ -75,8 +76,7 @@ // Call var activity = new DesignWaterLevelCalculationActivity(new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(locationName)), - validFilePath, - validPreprocessorDirectory, + HydraulicBoundaryCalculationSettingsTestFactory.CreateSettings(), 1, categoryBoundaryName); @@ -95,9 +95,11 @@ const string locationName = "locationName"; const string categoryBoundaryName = "A"; + var settings = new HydraulicBoundaryCalculationSettings(invalidFilePath, + validHlcdFilePath, + string.Empty); var activity = new DesignWaterLevelCalculationActivity(new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(locationName)), - invalidFilePath, - validPreprocessorDirectory, + settings, validNorm, categoryBoundaryName); @@ -125,9 +127,11 @@ const string locationName = "locationName"; const string categoryBoundaryName = "A"; + var settings = new HydraulicBoundaryCalculationSettings(validHydraulicBoundaryDatabaseFilePath, + validHlcdFilePath, + invalidPreprocessorDirectory); var activity = new DesignWaterLevelCalculationActivity(new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(locationName)), - validFilePath, - invalidPreprocessorDirectory, + settings, validNorm, categoryBoundaryName); @@ -155,8 +159,7 @@ const string categoryBoundaryName = "A"; var activity = new DesignWaterLevelCalculationActivity(new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(locationName)), - validFilePath, - validPreprocessorDirectory, + CreateCalculationSettings(), 1.0, categoryBoundaryName); @@ -177,7 +180,9 @@ } [Test] - public void Run_ValidInput_PerformValidationAndCalculationAndLogStartAndEnd() + [TestCase(true)] + [TestCase(false)] + public void Run_ValidInput_PerformCalculationWithCorrectInput(bool usePreprocessor) { // Setup const string locationName = "locationName"; @@ -189,29 +194,77 @@ Converged = true }; + string preprocessorDirectory = usePreprocessor ? validPreprocessorDirectory : string.Empty; + var calculationSettings = new HydraulicBoundaryCalculationSettings(validHydraulicBoundaryDatabaseFilePath, + validHlcdFilePath, + preprocessorDirectory); + var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(Arg.Is.NotNull)) .WhenCalled(invocation => { - var settings = (HydraRingCalculationSettings) invocation.Arguments[0]; - Assert.AreEqual(validFilePath, settings.HlcdFilePath); - Assert.AreEqual(validPreprocessorDirectory, settings.PreprocessorDirectory); + var hydraRingCalculationSettings = (HydraRingCalculationSettings) invocation.Arguments[0]; + HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings(calculationSettings, + hydraRingCalculationSettings); }) .Return(calculator); mockRepository.ReplayAll(); var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(locationName); var activity = new DesignWaterLevelCalculationActivity(new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation), - validFilePath, - validPreprocessorDirectory, + calculationSettings, norm, categoryBoundaryName); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call + activity.Run(); + + // Assert + AssessmentLevelCalculationInput designWaterLevelCalculationInput = calculator.ReceivedInputs.Single(); + Assert.AreEqual(hydraulicBoundaryLocation.Id, designWaterLevelCalculationInput.HydraulicBoundaryLocationId); + Assert.AreEqual(StatisticsConverter.ProbabilityToReliability(norm), designWaterLevelCalculationInput.Beta); + } + + Assert.AreEqual(ActivityState.Executed, activity.State); + mockRepository.VerifyAll(); + } + + [Test] + public void Run_ValidInput_PerformValidationAndCalculationAndLogStartAndEnd() + { + // Setup + const string locationName = "locationName"; + const string categoryBoundaryName = "A"; + const double norm = 1.0 / 30; + + var calculator = new TestDesignWaterLevelCalculator + { + Converged = true + }; + + HydraulicBoundaryCalculationSettings calculationSettings = CreateCalculationSettings(); + + var mockRepository = new MockRepository(); + var calculatorFactory = mockRepository.StrictMock(); + calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(null)) + .IgnoreArguments() + .Return(calculator); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(locationName); + + var activity = new DesignWaterLevelCalculationActivity(new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation), + calculationSettings, + norm, + categoryBoundaryName); + + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) + { + // Call Action call = () => activity.Run(); // Assert @@ -226,10 +279,6 @@ StringAssert.StartsWith("Waterstand berekening is uitgevoerd op de tijdelijke locatie", messages[4]); CalculationServiceTestHelper.AssertCalculationEndMessage(messages[5]); }); - AssessmentLevelCalculationInput designWaterLevelCalculationInput = calculator.ReceivedInputs.Single(); - - Assert.AreEqual(hydraulicBoundaryLocation.Id, designWaterLevelCalculationInput.HydraulicBoundaryLocationId); - Assert.AreEqual(StatisticsConverter.ProbabilityToReliability(norm), designWaterLevelCalculationInput.Beta); } Assert.AreEqual(ActivityState.Executed, activity.State); @@ -257,19 +306,13 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(Arg.Is.NotNull)) - .WhenCalled(invocation => - { - var settings = (HydraRingCalculationSettings) invocation.Arguments[0]; - Assert.AreEqual(validFilePath, settings.HlcdFilePath); - Assert.AreEqual(validPreprocessorDirectory, settings.PreprocessorDirectory); - }) + calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(null)) + .IgnoreArguments() .Return(calculator); mockRepository.ReplayAll(); var activity = new DesignWaterLevelCalculationActivity(hydraulicBoundaryLocationCalculation, - validFilePath, - validPreprocessorDirectory, + CreateCalculationSettings(), norm, "A"); @@ -306,13 +349,8 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(Arg.Is.NotNull)) - .WhenCalled(invocation => - { - var settings = (HydraRingCalculationSettings) invocation.Arguments[0]; - Assert.AreEqual(validFilePath, settings.HlcdFilePath); - Assert.AreEqual(validPreprocessorDirectory, settings.PreprocessorDirectory); - }) + calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(null)) + .IgnoreArguments() .Return(calculator); mockRepository.ReplayAll(); @@ -327,8 +365,7 @@ }; var activity = new DesignWaterLevelCalculationActivity(hydraulicBoundaryLocationCalculation, - validFilePath, - validPreprocessorDirectory, + CreateCalculationSettings(), validNorm, categoryBoundaryName); @@ -379,13 +416,8 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(Arg.Is.NotNull)) - .WhenCalled(invocation => - { - var settings = (HydraRingCalculationSettings) invocation.Arguments[0]; - Assert.AreEqual(validFilePath, settings.HlcdFilePath); - Assert.AreEqual(validPreprocessorDirectory, settings.PreprocessorDirectory); - }) + calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(null)) + .IgnoreArguments() .Return(calculator); mockRepository.ReplayAll(); @@ -400,8 +432,7 @@ const double norm = 1.0 / 300; var activity = new DesignWaterLevelCalculationActivity(hydraulicBoundaryLocationCalculation, - validFilePath, - validPreprocessorDirectory, + CreateCalculationSettings(), norm, categoryBoundaryName); @@ -442,8 +473,7 @@ mockRepository.ReplayAll(); var activity = new TestDesignWaterLevelCalculationActivity(hydraulicBoundaryLocationCalculation, - validFilePath, - validPreprocessorDirectory, + CreateCalculationSettings(), 1.0, categoryBoundaryName, state); @@ -460,17 +490,22 @@ return $"Waterstand berekenen voor locatie '{locationName}' (Categoriegrens {categoryBoundaryName})"; } + private static HydraulicBoundaryCalculationSettings CreateCalculationSettings() + { + return new HydraulicBoundaryCalculationSettings(validHydraulicBoundaryDatabaseFilePath, + validHlcdFilePath, + string.Empty); + } + private class TestDesignWaterLevelCalculationActivity : DesignWaterLevelCalculationActivity { public TestDesignWaterLevelCalculationActivity(HydraulicBoundaryLocationCalculation hydraulicBoundaryLocationCalculation, - string hydraulicBoundaryDatabaseFilePath, - string preprocessorDirectory, + HydraulicBoundaryCalculationSettings calculationSettings, double norm, string categoryBoundaryName, ActivityState state) : base(hydraulicBoundaryLocationCalculation, - hydraulicBoundaryDatabaseFilePath, - preprocessorDirectory, + calculationSettings, norm, categoryBoundaryName) {