Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverWaveConditionsCalculationServiceTest.cs =================================================================== diff -u -r4098e7338585cd9047636c465ffcb213c12bf987 -rdd347e5ef5916532cce1004e1941e8523ec448b4 --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverWaveConditionsCalculationServiceTest.cs (.../StabilityStoneCoverWaveConditionsCalculationServiceTest.cs) (revision 4098e7338585cd9047636c465ffcb213c12bf987) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverWaveConditionsCalculationServiceTest.cs (.../StabilityStoneCoverWaveConditionsCalculationServiceTest.cs) (revision dd347e5ef5916532cce1004e1941e8523ec448b4) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2017. All rights reserved. +// Copyright (C) Stichting Deltares 2018. All rights reserved. // // This file is part of Ringtoets. // @@ -32,26 +32,23 @@ using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Service.TestUtil; -using Ringtoets.HydraRing.Calculation.Calculator.Factory; -using Ringtoets.HydraRing.Calculation.Data; -using Ringtoets.HydraRing.Calculation.Data.Input.WaveConditions; -using Ringtoets.HydraRing.Calculation.Exceptions; using Ringtoets.HydraRing.Calculation.TestUtil; using Ringtoets.HydraRing.Calculation.TestUtil.Calculator; using Ringtoets.Revetment.Data; using Ringtoets.Revetment.Data.TestUtil; using Ringtoets.Revetment.Service; using Ringtoets.StabilityStoneCover.Data; +using Riskeer.HydraRing.Calculation.Calculator.Factory; +using Riskeer.HydraRing.Calculation.Data; +using Riskeer.HydraRing.Calculation.Data.Input; +using Riskeer.HydraRing.Calculation.Data.Input.WaveConditions; +using Riskeer.HydraRing.Calculation.Exceptions; namespace Ringtoets.StabilityStoneCover.Service.Test { [TestFixture] public class StabilityStoneCoverWaveConditionsCalculationServiceTest { - 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 validPreprocessorDirectory = TestHelper.GetScratchPadPath(); - [Test] public void Constructor_ReturnsNewInstance() { @@ -75,8 +72,7 @@ // Call TestDelegate test = () => new StabilityStoneCoverWaveConditionsCalculationService().Calculate(null, assessmentSection, - failureMechanism.GeneralInput, - validFilePath); + failureMechanism.GeneralInput); // Assert var exception = Assert.Throws(test); @@ -94,8 +90,7 @@ // Call TestDelegate test = () => new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, null, - failureMechanism.GeneralInput, - validFilePath); + failureMechanism.GeneralInput); // Assert var exception = Assert.Throws(test); @@ -115,8 +110,7 @@ // Call TestDelegate test = () => new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - null, - validFilePath); + null); // Assert var exception = Assert.Throws(test); @@ -144,16 +138,19 @@ var calculatorFactory = mockRepository.StrictMock(); RoundedDouble[] waterLevels = GetWaterLevels(calculation, assessmentSection).ToArray(); int nrOfCalculators = waterLevels.Length * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call Action call = () => new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); // Assert TestHelper.AssertLogMessages(call, messages => @@ -208,7 +205,11 @@ var calculatorFactory = mockRepository.StrictMock(); RoundedDouble[] waterLevels = GetWaterLevels(calculation, assessmentSection).ToArray(); int nrOfCalculators = waterLevels.Length * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); switch (calculationType) @@ -231,8 +232,7 @@ // Call Action call = () => new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); // Assert TestHelper.AssertLogMessages(call, messages => @@ -283,7 +283,11 @@ var calculatorFactory = mockRepository.StrictMock(); RoundedDouble[] waterLevels = GetWaterLevels(calculation, assessmentSection).ToArray(); int nrOfCalculators = waterLevels.Length * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) @@ -302,8 +306,7 @@ // Call stabilityStoneCoverWaveConditionsCalculationService.Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); } mockRepository.VerifyAll(); @@ -328,16 +331,19 @@ var calculatorFactory = mockRepository.StrictMock(); RoundedDouble[] waterLevels = GetWaterLevels(calculation, assessmentSection).ToArray(); int nrOfCalculators = waterLevels.Length * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(calculator).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(calculator) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); // Assert WaveConditionsCosineCalculationInput[] testWaveConditionsInputs = calculator.ReceivedInputs.ToArray(); @@ -409,8 +415,7 @@ // Call stabilityStoneCoverWaveConditionsCalculationService.Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); // Assert Assert.IsFalse(calculation.HasOutput); @@ -431,7 +436,9 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(calculator); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(calculator); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) @@ -441,7 +448,7 @@ // Call stabilityStoneCoverWaveConditionsCalculationService.Calculate(calculation, - assessmentSection, stabilityStoneCoverFailureMechanism.GeneralInput, validFilePath); + assessmentSection, stabilityStoneCoverFailureMechanism.GeneralInput); // Assert Assert.IsNull(calculation.Output); @@ -463,16 +470,19 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); int nrOfCalculators = GetWaterLevels(calculation, assessmentSection).Count() * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); // Assert Assert.IsNotNull(calculation.Output); @@ -505,7 +515,11 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(calculatorThatFails).Repeat.Times(3); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() + .Return(calculatorThatFails) + .Repeat + .Times(3); mockRepository.ReplayAll(); IAssessmentSection assessmentSection = CreateAssessmentSectionWithHydraulicBoundaryOutput(); @@ -522,8 +536,7 @@ { new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - failureMechanism.GeneralInput, - validFilePath); + failureMechanism.GeneralInput); } catch (HydraRingCalculationException e) { @@ -593,9 +606,11 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)) + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() .Return(calculatorThatFails); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)) + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() .Return(new TestWaveConditionsCosineCalculator()) .Repeat .Times(5); @@ -611,8 +626,7 @@ // Call Action call = () => service.Calculate(calculation, assessmentSection, - failureMechanism.GeneralInput, - validFilePath); + failureMechanism.GeneralInput); // Assert RoundedDouble[] waterLevels = GetWaterLevels(calculation, assessmentSection).ToArray(); @@ -693,13 +707,16 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)) + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() .Return(new TestWaveConditionsCosineCalculator()) .Repeat .Times(3); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)) + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() .Return(calculatorThatFails); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)) + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(null)) + .IgnoreArguments() .Return(new TestWaveConditionsCosineCalculator()) .Repeat .Twice(); @@ -715,8 +732,7 @@ // Call Action call = () => service.Calculate(calculation, assessmentSection, - failureMechanism.GeneralInput, - validFilePath); + failureMechanism.GeneralInput); // Assert RoundedDouble[] waterLevels = GetWaterLevels(calculation, assessmentSection).ToArray(); @@ -787,16 +803,24 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); int nrOfCalculators = GetWaterLevels(calculation, assessmentSection).Count() * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(Arg.Is.NotNull)) + .WhenCalled(invocation => + { + HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( + HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase), + (HydraRingCalculationSettings) invocation.Arguments[0]); + }) + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); } // Assert @@ -810,7 +834,7 @@ IAssessmentSection assessmentSection = CreateAssessmentSectionWithHydraulicBoundaryOutput(); assessmentSection.HydraulicBoundaryDatabase.CanUsePreprocessor = true; assessmentSection.HydraulicBoundaryDatabase.UsePreprocessor = true; - assessmentSection.HydraulicBoundaryDatabase.PreprocessorDirectory = validPreprocessorDirectory; + assessmentSection.HydraulicBoundaryDatabase.PreprocessorDirectory = TestHelper.GetScratchPadPath(); StabilityStoneCoverWaveConditionsCalculation calculation = GetValidCalculation(assessmentSection.HydraulicBoundaryDatabase.Locations.First()); @@ -819,16 +843,24 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); int nrOfCalculators = GetWaterLevels(calculation, assessmentSection).Count() * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, validPreprocessorDirectory)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(Arg.Is.NotNull)) + .WhenCalled(invocation => + { + HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( + HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase), + (HydraRingCalculationSettings) invocation.Arguments[0]); + }) + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); } // Assert @@ -851,16 +883,24 @@ var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); int nrOfCalculators = GetWaterLevels(calculation, assessmentSection).Count() * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(testDataPath, string.Empty)).Return(new TestWaveConditionsCosineCalculator()).Repeat.Times(nrOfCalculators); + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(Arg.Is.NotNull)) + .WhenCalled(invocation => + { + HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( + HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase), + (HydraRingCalculationSettings) invocation.Arguments[0]); + }) + .Return(new TestWaveConditionsCosineCalculator()) + .Repeat + .Times(nrOfCalculators); mockRepository.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { // Call new StabilityStoneCoverWaveConditionsCalculationService().Calculate(calculation, assessmentSection, - stabilityStoneCoverFailureMechanism.GeneralInput, - validFilePath); + stabilityStoneCoverFailureMechanism.GeneralInput); } // Assert @@ -869,6 +909,9 @@ private static IAssessmentSection CreateAssessmentSectionWithHydraulicBoundaryOutput() { + string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Service, "HydraRingCalculation"); + string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1300001, string.Empty, 0, 0); var assessmentSection = new AssessmentSectionStub @@ -882,7 +925,8 @@ } } }; - + HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); + assessmentSection.SetHydraulicBoundaryLocationCalculations(new[] { hydraulicBoundaryLocation