Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/UpliftVanKernelWrapper.cs
===================================================================
diff -u -rfe0f11c19023237d7f3629c2206b4fe5eb5e121f -r734930d018da0d76aa02134be1b611c4f3d2e9ae
--- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/UpliftVanKernelWrapper.cs (.../UpliftVanKernelWrapper.cs) (revision fe0f11c19023237d7f3629c2206b4fe5eb5e121f)
+++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/UpliftVan/UpliftVanKernelWrapper.cs (.../UpliftVanKernelWrapper.cs) (revision 734930d018da0d76aa02134be1b611c4f3d2e9ae)
@@ -38,8 +38,22 @@
///
/// Creates a new instance of .
///
+ /// The to use.
+ /// The to use.
+ /// Thrown when any parameter
+ /// is null.
public UpliftVanKernelWrapper(ICalculator calculator, IValidator validator)
{
+ if (calculator == null)
+ {
+ throw new ArgumentNullException(nameof(calculator));
+ }
+
+ if (validator == null)
+ {
+ throw new ArgumentNullException(nameof(validator));
+ }
+
this.calculator = calculator;
this.validator = validator;
Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Kernels/UpliftVan/UpliftVanKernelWrapperTest.cs
===================================================================
diff -u -rfe0f11c19023237d7f3629c2206b4fe5eb5e121f -r734930d018da0d76aa02134be1b611c4f3d2e9ae
--- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Kernels/UpliftVan/UpliftVanKernelWrapperTest.cs (.../UpliftVanKernelWrapperTest.cs) (revision fe0f11c19023237d7f3629c2206b4fe5eb5e121f)
+++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Kernels/UpliftVan/UpliftVanKernelWrapperTest.cs (.../UpliftVanKernelWrapperTest.cs) (revision 734930d018da0d76aa02134be1b611c4f3d2e9ae)
@@ -21,512 +21,246 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using Core.Common.TestUtil;
-using Core.Common.Util.Reflection;
-using Deltares.MacroStability.CSharpWrapper.Input;
+using Deltares.MacroStability.CSharpWrapper;
using Deltares.MacroStability.CSharpWrapper.Output;
using NUnit.Framework;
+using Rhino.Mocks;
using Riskeer.MacroStabilityInwards.KernelWrapper.Kernels.UpliftVan;
-using WtiStabilityWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
namespace Riskeer.MacroStabilityInwards.KernelWrapper.Test.Kernels.UpliftVan
{
[TestFixture]
public class UpliftVanKernelWrapperTest
{
[Test]
- public void Constructor_ExpectedValues()
+ public void Constructor_CalculatorNull_ThrowsArgumentNullException()
{
- // Call
- var kernel = new UpliftVanKernelWrapper();
-
- // Assert
- Assert.IsInstanceOf(kernel);
- Assert.IsNaN(kernel.FactorOfStability);
- Assert.IsNaN(kernel.ForbiddenZonesXEntryMin);
- Assert.IsNaN(kernel.ForbiddenZonesXEntryMax);
- Assert.IsNull(kernel.SlidingCurveResult);
- Assert.IsNull(kernel.UpliftVanCalculationGridResult);
- Assert.IsNull(kernel.CalculationMessages);
-
- var input = TypeUtils.GetField(kernel, "input");
-
- AssertConstructorValues(input);
- }
-
- [Test]
- public void Constructor_CompleteInput_InputCorrectlySetToWrappedKernel()
- {
// Setup
- var random = new Random(21);
- var soilModel = new List();
- var soilProfile2D = new SoilProfile2D();
- var waternetDaily = new WtiStabilityWaternet();
- var waternetExtreme = new WtiStabilityWaternet();
- bool moveGrid = random.NextBoolean();
- double maximumSliceWidth = random.NextDouble();
- var slipPlaneUpliftVan = new SlipPlaneUpliftVan();
- var surfaceLine = new SurfaceLine2();
- var slipPlaneConstraints = new SlipPlaneConstraints();
- bool gridAutomaticDetermined = random.NextBoolean();
- bool tangentLinesAutomaticDetermined = random.NextBoolean();
- var fixedSoilStresses = new[]
- {
- new FixedSoilStress()
- };
- var preConsolidationStresses = new[]
- {
- new PreConsolidationStress()
- };
- bool automaticForbiddenZones = random.NextBoolean();
+ var mocks = new MockRepository();
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
// Call
- var kernel = new UpliftVanKernelWrapper();
- kernel.SetSoils(soilModel);
- kernel.SetSoilProfile(soilProfile2D);
- kernel.SetMaximumSliceWidth(maximumSliceWidth);
- kernel.SetUpliftVanCalculationGrid(slipPlaneUpliftVan);
- kernel.SetSurfaceLine(surfaceLine);
- kernel.SetMoveGrid(moveGrid);
- kernel.SetGridAutomaticDetermined(gridAutomaticDetermined);
- kernel.SetTangentLinesAutomaticDetermined(tangentLinesAutomaticDetermined);
- kernel.SetSlipPlaneConstraints(slipPlaneConstraints);
- kernel.SetWaternetDaily(waternetDaily);
- kernel.SetWaternetExtreme(waternetExtreme);
- kernel.SetFixedSoilStresses(fixedSoilStresses);
- kernel.SetPreconsolidationStresses(preConsolidationStresses);
- kernel.SetAutomaticForbiddenZones(automaticForbiddenZones);
+ void Call() => new UpliftVanKernelWrapper(null, validator);
// Assert
- var kernelModel = TypeUtils.GetField(kernel, "kernelModel");
-
- AssertStabilityOutputModel(kernelModel.StabilityOutputModel);
- AssertPreProcessingModel(kernelModel.PreprocessingModel);
-
- StabilityModel stabilityModel = kernelModel.StabilityModel;
- CollectionAssert.AreEqual(soilModel, kernelModel.StabilityModel.Soils);
- Assert.AreEqual(moveGrid, stabilityModel.MoveGrid);
- Assert.AreEqual(maximumSliceWidth, stabilityModel.MaximumSliceWidth);
- Assert.AreSame(slipPlaneUpliftVan, stabilityModel.SlipPlaneUpliftVan);
- Assert.AreEqual(slipPlaneUpliftVan.SlipPlaneTangentLine.NumberOfRefinements, stabilityModel.NumberOfRefinementsTangentLines);
- Assert.AreSame(surfaceLine, kernelModel.PreprocessingModel.LastStage.SurfaceLine);
- Assert.AreSame(slipPlaneConstraints, stabilityModel.SlipPlaneConstraints);
- Assert.AreEqual(gridAutomaticDetermined, kernelModel.PreprocessingModel.SearchAreaConditions.AutoSearchArea);
- Assert.AreEqual(tangentLinesAutomaticDetermined, kernelModel.PreprocessingModel.SearchAreaConditions.AutoTangentLines);
- Assert.AreEqual(automaticForbiddenZones, kernelModel.PreprocessingModel.SearchAreaConditions.AutomaticForbiddenZones);
-
- AssertConstructorValues(stabilityModel, kernelModel);
-
- AssertConstructionStages(stabilityModel.ConstructionStages, soilProfile2D, new[]
- {
- waternetDaily,
- waternetExtreme
- }, fixedSoilStresses, preConsolidationStresses);
-
- AssertIrrelevantValues(stabilityModel);
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("calculator", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
- public void Calculate_ExceptionInWrappedKernel_ThrowsUpliftVanKernelWrapperException()
+ public void Constructor_ValidatorNull_ThrowsArgumentNullException()
{
// Setup
- var kernel = new UpliftVanKernelWrapper();
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ mocks.ReplayAll();
// Call
- void Call() => kernel.Calculate();
+ void Call() => new UpliftVanKernelWrapper(calculator, null);
// Assert
- var exception = Assert.Throws(Call);
- Assert.IsNotNull(exception.InnerException);
- Assert.AreEqual(exception.InnerException.Message, exception.Message);
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("validator", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
- public void Calculate_ExceptionDuringCalculation_OutputPropertiesNotSet()
+ public void Constructor_ExpectedValues()
{
// Setup
- var kernel = new UpliftVanKernelWrapper();
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
// Call
- void Call() => kernel.Calculate();
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
// Assert
- Assert.Throws(Call);
+ Assert.IsInstanceOf(kernel);
Assert.IsNaN(kernel.FactorOfStability);
- Assert.IsNaN(kernel.ForbiddenZonesXEntryMax);
Assert.IsNaN(kernel.ForbiddenZonesXEntryMin);
+ Assert.IsNaN(kernel.ForbiddenZonesXEntryMax);
Assert.IsNull(kernel.SlidingCurveResult);
Assert.IsNull(kernel.UpliftVanCalculationGridResult);
+ Assert.IsNull(kernel.CalculationMessages);
+ mocks.VerifyAll();
}
[Test]
- public void Calculate_CompleteInput_ReturnsNoErrors()
+ public void Calculate_SuccessfulCalculation_OutputSet()
{
// Setup
- UpliftVanKernelWrapper kernel = CreateValidKernel(new Soil
- {
- ShearStrengthModel = ShearStrengthModel.CPhi,
- AbovePhreaticLevel = 15.0,
- BelowPhreaticLevel = 15.0,
- Cohesion = 10.0,
- Dilatancy = 10.0,
- FrictionAngle = 10.0
- });
+ var calculatorOutput = new MacroStabilityOutput();
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.Calculate()).Return(calculatorOutput);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
+
// Call
kernel.Calculate();
// Assert
- LogMessage[] errorMessages = kernel.CalculationMessages.Where(m => m.MessageType == LogMessageType.Error ||
- m.MessageType == LogMessageType.FatalError).ToArray();
- Assert.AreEqual(0, errorMessages.Length);
+ Assert.AreEqual(calculatorOutput.StabilityOutput.SafetyFactor, kernel.FactorOfStability);
+ Assert.AreEqual(calculatorOutput.PreprocessingOutputBase.ForbiddenZone.XEntryMin, kernel.ForbiddenZonesXEntryMin);
+ Assert.AreEqual(calculatorOutput.PreprocessingOutputBase.ForbiddenZone.XEntryMax, kernel.ForbiddenZonesXEntryMax);
- Assert.IsFalse(double.IsNaN(kernel.FactorOfStability));
- Assert.IsFalse(double.IsNaN(kernel.ForbiddenZonesXEntryMin));
- Assert.IsFalse(double.IsNaN(kernel.ForbiddenZonesXEntryMax));
- Assert.IsNotNull(kernel.SlidingCurveResult);
- Assert.IsNotNull(kernel.UpliftVanCalculationGridResult);
+ Assert.AreSame((DualSlidingCircleMinimumSafetyCurve) calculatorOutput.StabilityOutput.MinimumSafetyCurve, kernel.SlidingCurveResult);
+ Assert.AreSame(((UpliftVanPreprocessingOutput) calculatorOutput.PreprocessingOutputBase).UpliftVanCalculationGrid, kernel.UpliftVanCalculationGridResult);
+ mocks.VerifyAll();
}
[Test]
- public void Validate_InputComplete_NoValidationMessages()
+ public void Calculate_CalculatorMessagesNull_CalculationMessagesEmpty()
{
// Setup
- UpliftVanKernelWrapper kernel = CreateValidKernel(new Soil
- {
- ShearStrengthModel = ShearStrengthModel.CPhi,
- AbovePhreaticLevel = 15.0,
- BelowPhreaticLevel = 15.0,
- Cohesion = 10.0,
- Dilatancy = 10.0,
- FrictionAngle = 10.0
- });
+ var calculatorOutput = new MacroStabilityOutput();
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.Calculate()).Return(calculatorOutput);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
+
// Call
- IEnumerable validationMessages = kernel.Validate();
+ kernel.Calculate();
// Assert
- Assert.IsEmpty(validationMessages);
+ CollectionAssert.IsEmpty(kernel.CalculationMessages);
+ mocks.VerifyAll();
}
[Test]
- public void Validate_InputNotComplete_ThrowsUpliftVanKernelWrapperException()
+ public void Calculate_CalculatorHasMessages_CalculationMessagesSet()
{
// Setup
- UpliftVanKernelWrapper kernel = CreateInvalidKernel(null);
+ var calculatorOutput = new MacroStabilityOutput
+ {
+ StabilityOutput =
+ {
+ Messages = new Message[0]
+ }
+ };
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.Calculate()).Return(calculatorOutput);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
+
// Call
- void Test() => kernel.Validate();
+ kernel.Calculate();
// Assert
- var exception = Assert.Throws(Test);
- Assert.IsInstanceOf(exception.InnerException);
- Assert.AreEqual(exception.InnerException.Message, exception.Message);
+ Assert.AreSame(calculatorOutput.StabilityOutput.Messages, kernel.CalculationMessages);
+ mocks.VerifyAll();
}
[Test]
- public void Validate_InvalidInput_GeneratesValidationMessages()
+ public void Calculate_ExceptionInWrappedKernel_ThrowsUpliftVanKernelWrapperException()
{
// Setup
- UpliftVanKernelWrapper kernel = CreateInvalidKernel(new Soil());
+ var exceptionToThrow = new Exception();
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.Calculate()).Throw(exceptionToThrow);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
+
// Call
- IEnumerable validationMessages = kernel.Validate();
+ void Call() => kernel.Calculate();
// Assert
- Assert.AreEqual(11, validationMessages.Count());
+ var exception = Assert.Throws(Call);
+ Assert.AreSame(exceptionToThrow, exception.InnerException);
+ Assert.AreEqual(exception.InnerException.Message, exception.Message);
+ mocks.VerifyAll();
}
- private static void AssertConstructorValues(MacroStabilityInput input)
+ [Test]
+ public void Calculate_ExceptionDuringCalculation_OutputPropertiesNotSet()
{
- Assert.AreEqual(Orientation.Inwards, input.StabilityModel.Orientation);
- Assert.IsNotNull(input.StabilityModel.BishopCalculationCircle);
- Assert.AreEqual(SearchAlgorithm.Grid, input.StabilityModel.SearchAlgorithm);
- Assert.AreEqual(StabilityModelOptionType.UpliftVan, input.StabilityModel.ModelOption);
-
- Assert.AreEqual(0.8, input.PreprocessingInput.SearchAreaConditions.MaxSpacingBetweenBoundaries);
- Assert.IsTrue(input.PreprocessingInput.SearchAreaConditions.OnlyAbovePleistoceen);
+ // Setup
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.Calculate()).Throw(new Exception());
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
- Assert.AreEqual(2, input.PreprocessingInput.PreConstructionStages.Count);
- Assert.IsTrue(input.PreprocessingInput.PreConstructionStages.All(stage => stage.WaternetCreationMode == WaternetCreationMode.FillInWaternetValues));
- }
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
- private static void AssertConstructionStages(IEnumerable constructionStages, SoilProfile soilProfile2D, IEnumerable waternets,
- IEnumerable fixedSoilStresses, IEnumerable preConsolidationStresses)
- {
- Assert.AreEqual(2, constructionStages.Count());
+ // Call
+ void Call() => kernel.Calculate();
- for (var i = 0; i < constructionStages.Count(); i++)
- {
- ConstructionStage constructionStage = constructionStages.ElementAt(i);
-
- Assert.AreSame(waternets.ElementAt(i), constructionStage.Waternet);
- Assert.AreSame(soilProfile2D, constructionStage.SoilProfile);
- Assert.AreEqual(1, constructionStage.MultiplicationFactorsCPhiForUplift.Count);
- Assert.AreEqual(1.2, constructionStage.MultiplicationFactorsCPhiForUplift.ElementAt(0).UpliftFactor);
- Assert.AreEqual(0.0, constructionStage.MultiplicationFactorsCPhiForUplift.ElementAt(0).MultiplicationFactor);
- }
-
- CollectionAssert.AreEqual(fixedSoilStresses, constructionStages.First().FixedSoilStresses);
- CollectionAssert.AreEqual(preConsolidationStresses, constructionStages.First().PreconsolidationStresses);
- CollectionAssert.IsEmpty(constructionStages.Last().FixedSoilStresses);
- CollectionAssert.IsEmpty(constructionStages.Last().PreconsolidationStresses);
+ // Assert
+ Assert.Throws(Call);
+ Assert.IsNaN(kernel.FactorOfStability);
+ Assert.IsNaN(kernel.ForbiddenZonesXEntryMax);
+ Assert.IsNaN(kernel.ForbiddenZonesXEntryMin);
+ Assert.IsNull(kernel.SlidingCurveResult);
+ Assert.IsNull(kernel.UpliftVanCalculationGridResult);
+ mocks.VerifyAll();
}
- private static UpliftVanKernelWrapper CreateValidKernel(Soil soil)
+ [Test]
+ public void Validate_ValidationCompleted_ReturnsValidationMessages()
{
- var point1 = new Point2D(-50, -50);
- var point2 = new Point2D(100, -50);
- var point3 = new Point2D(100, 6);
- var point4 = new Point2D(50, 6);
- var point5 = new Point2D(0, 10);
- var point6 = new Point2D(-25, 10);
- var point7 = new Point2D(-35, 6);
- var point8 = new Point2D(-50, 6);
- var curve1 = new GeometryCurve(point1, point2);
- var curve2 = new GeometryCurve(point2, point3);
- var curve3 = new GeometryCurve(point3, point4);
- var curve4 = new GeometryCurve(point4, point5);
- var curve5 = new GeometryCurve(point5, point6);
- var curve6 = new GeometryCurve(point6, point7);
- var curve7 = new GeometryCurve(point7, point8);
- var curve8 = new GeometryCurve(point8, point1);
- var loop = new GeometryLoop
+ // Setup
+ var validationOutput = new ValidationOutput
{
- CurveList =
- {
- curve1,
- curve2,
- curve3,
- curve4,
- curve5,
- curve6,
- curve7,
- curve8
- }
+ Messages = new Message[0]
};
- var geometrySurface = new GeometrySurface
- {
- OuterLoop = loop
- };
- var kernelWrapper = new UpliftVanKernelWrapper();
- kernelWrapper.SetSoils(new List
- {
- soil
- });
- kernelWrapper.SetSoilProfile(new SoilProfile2D
- {
- Geometry = new GeometryData
- {
- Points =
- {
- point1,
- point2,
- point3,
- point4,
- point5,
- point6,
- point7,
- point8
- },
- Curves =
- {
- curve1,
- curve2,
- curve3,
- curve4,
- curve5,
- curve6,
- curve7,
- curve8
- },
- Loops =
- {
- loop
- },
- Surfaces =
- {
- geometrySurface
- },
- Left = -50,
- Right = 100,
- Bottom = -50
- },
- Surfaces =
- {
- new SoilLayer2D
- {
- GeometrySurface = geometrySurface,
- Soil = soil
- }
- }
- });
- kernelWrapper.SetUpliftVanCalculationGrid(new SlipPlaneUpliftVan
- {
- SlipPlaneLeftGrid = new SlipCircleGrid
- {
- GridXLeft = -10.0,
- GridXRight = 20.0,
- GridZBottom = 12.0,
- GridZTop = 25.0,
- GridXNumber = 5,
- GridZNumber = 5
- },
- SlipPlaneRightGrid = new SlipCircleGrid
- {
- GridXLeft = 30,
- GridXRight = 60,
- GridZBottom = 10.0,
- GridZTop = 20.0,
- GridXNumber = 5,
- GridZNumber = 5
- }
- });
- var surfaceLine = new SurfaceLine2
- {
- Geometry = new GeometryPointString
- {
- CalcPoints =
- {
- point8,
- point7,
- point6,
- point5,
- point4,
- point3
- }
- }
- };
- surfaceLine.Geometry.SyncPoints();
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
- {
- CharacteristicPointType = CharacteristicPointType.DikeTopAtPolder,
- X = 0,
- Z = 10,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
- kernelWrapper.SetSurfaceLine(surfaceLine);
- kernelWrapper.SetGridAutomaticDetermined(false);
- kernelWrapper.SetMoveGrid(true);
- kernelWrapper.SetMaximumSliceWidth(100);
- kernelWrapper.SetSlipPlaneConstraints(new SlipPlaneConstraints
- {
- XLeftMin = 0.0,
- XLeftMax = 100
- });
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ validator.Stub(v => v.Validate()).Return(validationOutput);
+ mocks.ReplayAll();
- return kernelWrapper;
- }
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
- private static UpliftVanKernelWrapper CreateInvalidKernel(Soil soil)
- {
- var point1 = new Point2D(0, 0);
- var point2 = new Point2D(1, 1);
- var point3 = new Point2D(2, 2);
- var point4 = new Point2D(3, 3);
- var curve1 = new GeometryCurve(point1, point2);
- var curve2 = new GeometryCurve(point2, point3);
- var curve3 = new GeometryCurve(point3, point4);
- var curve4 = new GeometryCurve(point4, point1);
- var loop = new GeometryLoop
- {
- CurveList =
- {
- curve1,
- curve2,
- curve3,
- curve4
- }
- };
- var geometrySurface = new GeometrySurface
- {
- OuterLoop = loop
- };
- var kernelWrapper = new UpliftVanKernelWrapper();
- kernelWrapper.SetSoils(new List
- {
- soil
- });
- kernelWrapper.SetSoilProfile(new SoilProfile2D
- {
- Geometry = new GeometryData
- {
- Points =
- {
- point1,
- point2,
- point3,
- point4
- },
- Curves =
- {
- curve1,
- curve2,
- curve3,
- curve4
- },
- Loops =
- {
- loop
- },
- Surfaces =
- {
- geometrySurface
- }
- },
- Surfaces =
- {
- new SoilLayer2D
- {
- GeometrySurface = geometrySurface,
- Soil = soil
- }
- }
- });
- kernelWrapper.SetUpliftVanCalculationGrid(new SlipPlaneUpliftVan());
- kernelWrapper.SetMoveGrid(true);
- kernelWrapper.SetMaximumSliceWidth(0);
- kernelWrapper.SetSlipPlaneConstraints(new SlipPlaneConstraints());
+ // Call
+ IEnumerable validationMessages = kernel.Validate();
- return kernelWrapper;
+ // Assert
+ Assert.AreSame(validationOutput.Messages, validationMessages);
+ mocks.VerifyAll();
}
- private static void AssertIrrelevantValues(StabilityInput stabilityModel)
+ [Test]
+ public void Validate_ExceptionInWrappedKernel_ThrowsUpliftVanKernelWrapperException()
{
- Assert.IsNotNull(stabilityModel.BeeswarmOptions);
- Assert.IsNotNull(stabilityModel.SpencerSlipPlanes);
- Assert.IsNotNull(stabilityModel.LevenbergMarquardtOptions);
- Assert.IsNull(stabilityModel.MinimumSafetyCurve); // Output
- Assert.AreEqual(0.8, stabilityModel.RequiredForcePointsInSlices); // Only for Spencer
- Assert.AreEqual(60.0, stabilityModel.MaxAllowedAngleBetweenSlices); // Only for Spencer
- Assert.AreEqual(9.81, stabilityModel.UnitWeightWater);
- Assert.AreEqual(2, stabilityModel.TraversalGridPoints);
- Assert.AreEqual(50, stabilityModel.MaxGridMoves);
- Assert.IsNotNull(stabilityModel.Validator);
- Assert.AreEqual(0, stabilityModel.TraversalRefinements);
- Assert.IsFalse(stabilityModel.FinalizeWithLevenbergMarquardt);
- Assert.IsNotNull(stabilityModel.GeneticAlgorithmOptions); // Only for genetic search algorithm
- Assert.IsNotNull(stabilityModel.LevenbergMarquardtOptions); // Only for Levenberg Marquardt search algorithm
- }
+ // Setup
+ var exceptionToThrow = new Exception();
- private static void AssertPreProcessingModel(PreprocessingModel preProcessingModel)
- {
- Assert.AreEqual(Enumerable.Empty(), preProcessingModel.LogMessages);
- Assert.AreEqual(preProcessingModel.StabilityModel, preProcessingModel.StabilityModel);
- }
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ validator.Stub(v => v.Validate()).Throw(exceptionToThrow);
+ mocks.ReplayAll();
- private static void AssertStabilityOutputModel(StabilityOutputModel stabilityOutputModel)
- {
- Assert.AreEqual(Enumerable.Empty(), stabilityOutputModel.LogMessages);
- Assert.AreEqual(ModelOptions.Bishop, stabilityOutputModel.ModelOption);
- Assert.IsFalse(stabilityOutputModel.Succeeded);
- Assert.AreEqual(0.0, stabilityOutputModel.SafetyFactor);
- Assert.AreEqual(0.0, stabilityOutputModel.ZValue);
- Assert.IsNull(stabilityOutputModel.MinimumSlidingCurve);
- Assert.IsNotNull(stabilityOutputModel.VersionInfo);
- Assert.IsNotNull(stabilityOutputModel.PreProcessingOutput);
+ var kernel = new UpliftVanKernelWrapper(calculator, validator);
+
+ // Call
+ void Call() => kernel.Validate();
+
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreSame(exceptionToThrow, exception.InnerException);
+ Assert.AreEqual(exception.InnerException.Message, exception.Message);
}
}
}
\ No newline at end of file