Index: Riskeer/GrassCoverErosionOutwards/src/Riskeer.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsCalculationActivityFactory.cs =================================================================== diff -u -r512d35716e4a14f14d35258a436f560230c64b14 -r2c1e108f7c6e62fd4025809fe4f97fee7d0d2948 --- Riskeer/GrassCoverErosionOutwards/src/Riskeer.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsCalculationActivityFactory.cs (.../GrassCoverErosionOutwardsCalculationActivityFactory.cs) (revision 512d35716e4a14f14d35258a436f560230c64b14) +++ Riskeer/GrassCoverErosionOutwards/src/Riskeer.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsCalculationActivityFactory.cs (.../GrassCoverErosionOutwardsCalculationActivityFactory.cs) (revision 2c1e108f7c6e62fd4025809fe4f97fee7d0d2948) @@ -37,31 +37,6 @@ public static class GrassCoverErosionOutwardsCalculationActivityFactory { /// - /// Creates a collection of based on the calculations in - /// . - /// - /// The failure mechanism to create the activities for. - /// The assessment section the failure mechanism belongs to. - /// A collection of . - /// Thrown when any parameter is null. - public static IEnumerable CreateCalculationActivities( - GrassCoverErosionOutwardsFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) - { - if (failureMechanism == null) - { - throw new ArgumentNullException(nameof(failureMechanism)); - } - - if (assessmentSection == null) - { - throw new ArgumentNullException(nameof(assessmentSection)); - } - - return CreateWaveConditionsCalculationActivities(failureMechanism.WaveConditionsCalculationGroup, failureMechanism, assessmentSection); - } - - /// /// Creates a collection of based on the wave conditions calculations in /// . /// Index: Riskeer/GrassCoverErosionOutwards/test/Riskeer.GrassCoverErosionOutwards.Service.Test/GrassCoverErosionOutwardsCalculationActivityFactoryTest.cs =================================================================== diff -u -r9d221e6be2eafb09c7286ad1f5d831e45db00d20 -r2c1e108f7c6e62fd4025809fe4f97fee7d0d2948 --- Riskeer/GrassCoverErosionOutwards/test/Riskeer.GrassCoverErosionOutwards.Service.Test/GrassCoverErosionOutwardsCalculationActivityFactoryTest.cs (.../GrassCoverErosionOutwardsCalculationActivityFactoryTest.cs) (revision 9d221e6be2eafb09c7286ad1f5d831e45db00d20) +++ Riskeer/GrassCoverErosionOutwards/test/Riskeer.GrassCoverErosionOutwards.Service.Test/GrassCoverErosionOutwardsCalculationActivityFactoryTest.cs (.../GrassCoverErosionOutwardsCalculationActivityFactoryTest.cs) (revision 2c1e108f7c6e62fd4025809fe4f97fee7d0d2948) @@ -26,7 +26,6 @@ using Core.Common.Base.Data; using Core.Common.Base.Service; using Core.Common.TestUtil; -using Core.Common.Util; using NUnit.Framework; using Rhino.Mocks; using Riskeer.Common.Data.AssessmentSection; @@ -40,7 +39,6 @@ using Riskeer.GrassCoverErosionOutwards.Data.TestUtil; using Riskeer.HydraRing.Calculation.Calculator.Factory; using Riskeer.HydraRing.Calculation.Data.Input; -using Riskeer.HydraRing.Calculation.Data.Input.Hydraulics; using Riskeer.HydraRing.Calculation.Data.Input.WaveConditions; using Riskeer.HydraRing.Calculation.TestUtil.Calculator; using Riskeer.Revetment.Data; @@ -54,224 +52,6 @@ private static readonly string validFilePath = Path.Combine(testDataPath, "HRD ijsselmeer.sqlite"); [Test] - public void CreateCalculationActivitiesForFailureMechanism_FailureMechanismNull_ThrowsArgumentNullException() - { - // Setup - var mocks = new MockRepository(); - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - - // Call - void Call() => GrassCoverErosionOutwardsCalculationActivityFactory.CreateCalculationActivities(null, assessmentSection); - - // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("failureMechanism", exception.ParamName); - mocks.VerifyAll(); - } - - [Test] - public void CreateCalculationActivitiesForFailureMechanism_AssessmentSectionNull_ThrowsArgumentNullException() - { - // Call - void Call() => GrassCoverErosionOutwardsCalculationActivityFactory.CreateCalculationActivities(new GrassCoverErosionOutwardsFailureMechanism(), null); - - // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("assessmentSection", exception.ParamName); - } - - [Test] - public void CreateCalculationActivitiesForFailureMechanism_WithValidData_ExpectedInputSetToActivities() - { - // Setup - AssessmentSectionStub assessmentSection = CreateAssessmentSection(); - GrassCoverErosionOutwardsFailureMechanism failureMechanism = CreateFailureMechanism(); - - var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation("locationName 1"); - GrassCoverErosionOutwardsHydraulicBoundaryLocationsTestHelper.SetHydraulicBoundaryLocations(failureMechanism, assessmentSection, new[] - { - hydraulicBoundaryLocation - }); - - GrassCoverErosionOutwardsWaveConditionsCalculation calculation1 = CreateValidCalculation(hydraulicBoundaryLocation); - GrassCoverErosionOutwardsWaveConditionsCalculation calculation2 = CreateValidCalculation(hydraulicBoundaryLocation); - - failureMechanism.WaveConditionsCalculationGroup.Children.AddRange(new[] - { - calculation1, - calculation2 - }); - - // Call - IEnumerable activities = - GrassCoverErosionOutwardsCalculationActivityFactory.CreateCalculationActivities( - failureMechanism, - assessmentSection); - - // Assert - Assert.AreEqual(12, activities.Count()); - - double mechanismSpecificFactorizedSignalingNorm = GetExpectedNorm(failureMechanism, - assessmentSection.FailureMechanismContribution.SignalingNorm / 30); - double mechanismSpecificSignalingNorm = GetExpectedNorm(failureMechanism, assessmentSection.FailureMechanismContribution.SignalingNorm); - double mechanismSpecificLowerLimitNorm = GetExpectedNorm(failureMechanism, assessmentSection.FailureMechanismContribution.LowerLimitNorm); - double lowerLimitNorm = assessmentSection.FailureMechanismContribution.LowerLimitNorm; - double factorizedLowerLimitNorm = lowerLimitNorm * 30; - - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = assessmentSection.HydraulicBoundaryDatabase; - AssertDesignWaterLevelCalculationActivity(activities.First(), - hydraulicBoundaryLocation, - mechanismSpecificFactorizedSignalingNorm, - "Iv", - hydraulicBoundaryDatabase); - AssertDesignWaterLevelCalculationActivity(activities.ElementAt(1), - hydraulicBoundaryLocation, - mechanismSpecificSignalingNorm, - "IIv", - hydraulicBoundaryDatabase); - - AssertDesignWaterLevelCalculationActivity(activities.ElementAt(2), - hydraulicBoundaryLocation, - mechanismSpecificLowerLimitNorm, - "IIIv", - hydraulicBoundaryDatabase); - AssertDesignWaterLevelCalculationActivity(activities.ElementAt(3), - hydraulicBoundaryLocation, - lowerLimitNorm, - "IVv", - hydraulicBoundaryDatabase); - AssertDesignWaterLevelCalculationActivity(activities.ElementAt(4), - hydraulicBoundaryLocation, - factorizedLowerLimitNorm, - "Vv", - hydraulicBoundaryDatabase); - - AssertWaveHeightCalculationActivity(activities.ElementAt(5), - hydraulicBoundaryLocation, - mechanismSpecificFactorizedSignalingNorm, - "Iv", - hydraulicBoundaryDatabase); - AssertWaveHeightCalculationActivity(activities.ElementAt(6), - hydraulicBoundaryLocation, - mechanismSpecificSignalingNorm, - "IIv", - hydraulicBoundaryDatabase); - - AssertWaveHeightCalculationActivity(activities.ElementAt(7), - hydraulicBoundaryLocation, - mechanismSpecificLowerLimitNorm, - "IIIv", - hydraulicBoundaryDatabase); - AssertWaveHeightCalculationActivity(activities.ElementAt(8), - hydraulicBoundaryLocation, - lowerLimitNorm, - "IVv", - hydraulicBoundaryDatabase); - AssertWaveHeightCalculationActivity(activities.ElementAt(9), - hydraulicBoundaryLocation, - factorizedLowerLimitNorm, - "Vv", - hydraulicBoundaryDatabase); - - var hydraulicBoundaryLocationCalculationOutput = new TestHydraulicBoundaryLocationCalculationOutput(2.0); - failureMechanism.WaterLevelCalculationsForMechanismSpecificFactorizedSignalingNorm.Single().Output = hydraulicBoundaryLocationCalculationOutput; - - AssertGrassCoverErosionOutwardsWaveConditionsCalculationActivity(activities.ElementAt(10), - calculation1, - hydraulicBoundaryLocationCalculationOutput.Result, - hydraulicBoundaryDatabase); - AssertGrassCoverErosionOutwardsWaveConditionsCalculationActivity(activities.ElementAt(11), - calculation2, - hydraulicBoundaryLocationCalculationOutput.Result, - hydraulicBoundaryDatabase); - } - - private static GrassCoverErosionOutwardsFailureMechanism CreateFailureMechanism() - { - return new GrassCoverErosionOutwardsFailureMechanism - { - Contribution = 10 - }; - } - - private static AssessmentSectionStub CreateAssessmentSection() - { - var assessmentSection = new AssessmentSectionStub - { - HydraulicBoundaryDatabase = - { - FilePath = validFilePath - } - }; - HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); - - return assessmentSection; - } - - private static GrassCoverErosionOutwardsWaveConditionsCalculation CreateValidCalculation(HydraulicBoundaryLocation hydraulicBoundaryLocation) - { - return new GrassCoverErosionOutwardsWaveConditionsCalculation - { - InputParameters = - { - HydraulicBoundaryLocation = hydraulicBoundaryLocation, - CategoryType = FailureMechanismCategoryType.MechanismSpecificFactorizedSignalingNorm, - ForeshoreProfile = new TestForeshoreProfile(true) - { - BreakWater = - { - Height = new Random(39).NextRoundedDouble() - } - }, - UseForeshore = true, - UseBreakWater = true, - LowerBoundaryRevetment = (RoundedDouble) 1, - UpperBoundaryRevetment = (RoundedDouble) 3, - LowerBoundaryWaterLevels = (RoundedDouble) 1, - UpperBoundaryWaterLevels = (RoundedDouble) 3 - } - }; - } - - private static void AssertGrassCoverErosionOutwardsWaveConditionsCalculationActivity(Activity activity, - GrassCoverErosionOutwardsWaveConditionsCalculation calculation, - RoundedDouble assessmentLevel, - HydraulicBoundaryDatabase hydraulicBoundaryDatabase) - { - var mocks = new MockRepository(); - var testCalculator = new TestWaveConditionsCosineCalculator(); - var calculatorFactory = mocks.StrictMock(); - int nrOfCalculations = calculation.InputParameters.GetWaterLevels(assessmentLevel).Count() * 2; - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(Arg.Is.NotNull)) - .WhenCalled(invocation => - { - HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( - HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase), - (HydraRingCalculationSettings) invocation.Arguments[0]); - }) - .Return(testCalculator) - .Repeat - .Times(nrOfCalculations); - mocks.ReplayAll(); - - using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) - { - activity.Run(); - - Assert.AreEqual(nrOfCalculations, testCalculator.ReceivedInputs.Count()); - foreach (WaveConditionsCosineCalculationInput input in testCalculator.ReceivedInputs) - { - Assert.AreEqual(calculation.InputParameters.BreakWater.Height, input.BreakWater.Height); - } - } - - mocks.VerifyAll(); - } - - #region Wave Conditions Calculations - - [Test] public void CreateCalculationActivity_CalculationNull_ThrowsArgumentNullException() { // Setup @@ -441,86 +221,72 @@ AssertGrassCoverErosionOutwardsWaveConditionsCalculationActivity(activities.ElementAt(1), calculation2, assessmentLevel, hydraulicBoundaryDatabase); } - #endregion - - #region Hydraulic Boundary Location Calculations - - private static void AssertDesignWaterLevelCalculationActivity(Activity activity, - HydraulicBoundaryLocation hydraulicBoundaryLocation, - double norm, - string categoryBoundaryName, - HydraulicBoundaryDatabase hydraulicBoundaryDatabase) + private static GrassCoverErosionOutwardsFailureMechanism CreateFailureMechanism() { - var mocks = new MockRepository(); - var designWaterLevelCalculator = new TestDesignWaterLevelCalculator(); - var calculatorFactory = mocks.Stub(); - calculatorFactory.Expect(cf => cf.CreateDesignWaterLevelCalculator(Arg.Is.NotNull)) - .WhenCalled(invocation => - { - HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( - HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase), - (HydraRingCalculationSettings) invocation.Arguments[0]); - }) - .Return(designWaterLevelCalculator); - mocks.ReplayAll(); - - using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) + return new GrassCoverErosionOutwardsFailureMechanism { - Action call = activity.Run; + Contribution = 10 + }; + } - string expectedLogMessage = $"Waterstand berekenen voor locatie '{hydraulicBoundaryLocation.Name}' ({categoryBoundaryName}) is gestart."; - - TestHelper.AssertLogMessageIsGenerated(call, expectedLogMessage); - AssessmentLevelCalculationInput actualCalculationInput = designWaterLevelCalculator.ReceivedInputs.Single(); - Assert.AreEqual(hydraulicBoundaryLocation.Id, actualCalculationInput.HydraulicBoundaryLocationId); - Assert.AreEqual(StatisticsConverter.ProbabilityToReliability(norm), actualCalculationInput.Beta); - } - - mocks.VerifyAll(); + private static GrassCoverErosionOutwardsWaveConditionsCalculation CreateValidCalculation(HydraulicBoundaryLocation hydraulicBoundaryLocation) + { + return new GrassCoverErosionOutwardsWaveConditionsCalculation + { + InputParameters = + { + HydraulicBoundaryLocation = hydraulicBoundaryLocation, + CategoryType = FailureMechanismCategoryType.MechanismSpecificFactorizedSignalingNorm, + ForeshoreProfile = new TestForeshoreProfile(true) + { + BreakWater = + { + Height = new Random(39).NextRoundedDouble() + } + }, + UseForeshore = true, + UseBreakWater = true, + LowerBoundaryRevetment = (RoundedDouble) 1, + UpperBoundaryRevetment = (RoundedDouble) 3, + LowerBoundaryWaterLevels = (RoundedDouble) 1, + UpperBoundaryWaterLevels = (RoundedDouble) 3 + } + }; } - private static void AssertWaveHeightCalculationActivity(Activity activity, - HydraulicBoundaryLocation hydraulicBoundaryLocation, - double norm, - string categoryBoundaryName, - HydraulicBoundaryDatabase hydraulicBoundaryDatabase) + private static void AssertGrassCoverErosionOutwardsWaveConditionsCalculationActivity(Activity activity, + GrassCoverErosionOutwardsWaveConditionsCalculation calculation, + RoundedDouble assessmentLevel, + HydraulicBoundaryDatabase hydraulicBoundaryDatabase) { var mocks = new MockRepository(); - var waveHeightCalculator = new TestWaveHeightCalculator(); - var calculatorFactory = mocks.Stub(); - calculatorFactory.Expect(cf => cf.CreateWaveHeightCalculator(Arg.Is.NotNull)) + var testCalculator = new TestWaveConditionsCosineCalculator(); + var calculatorFactory = mocks.StrictMock(); + int nrOfCalculations = calculation.InputParameters.GetWaterLevels(assessmentLevel).Count() * 2; + calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(Arg.Is.NotNull)) .WhenCalled(invocation => { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase), (HydraRingCalculationSettings) invocation.Arguments[0]); }) - .Return(waveHeightCalculator); + .Return(testCalculator) + .Repeat + .Times(nrOfCalculations); mocks.ReplayAll(); using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { - Action call = activity.Run; + activity.Run(); - string expectedLogMessage = $"Golfhoogte berekenen voor locatie '{hydraulicBoundaryLocation.Name}' ({categoryBoundaryName}) is gestart."; - - TestHelper.AssertLogMessageIsGenerated(call, expectedLogMessage); - WaveHeightCalculationInput actualCalculationInput = waveHeightCalculator.ReceivedInputs.Single(); - Assert.AreEqual(hydraulicBoundaryLocation.Id, actualCalculationInput.HydraulicBoundaryLocationId); - Assert.AreEqual(StatisticsConverter.ProbabilityToReliability(norm), actualCalculationInput.Beta); + Assert.AreEqual(nrOfCalculations, testCalculator.ReceivedInputs.Count()); + foreach (WaveConditionsCosineCalculationInput input in testCalculator.ReceivedInputs) + { + Assert.AreEqual(calculation.InputParameters.BreakWater.Height, input.BreakWater.Height); + } } mocks.VerifyAll(); } - - private static double GetExpectedNorm(GrassCoverErosionOutwardsFailureMechanism failureMechanism, double norm) - { - return CalculationServiceTestHelper.ProfileSpecificRequiredProbability( - norm, - failureMechanism.Contribution, - failureMechanism.GeneralInput.N); - } - - #endregion } } \ No newline at end of file