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