Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/Waternet/IWaternetKernel.cs
===================================================================
diff -u -rfe0f11c19023237d7f3629c2206b4fe5eb5e121f -rf9472b2b0e70a6c8e2c9f78cfd622c8a099acaee
--- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/Waternet/IWaternetKernel.cs (.../IWaternetKernel.cs) (revision fe0f11c19023237d7f3629c2206b4fe5eb5e121f)
+++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/Waternet/IWaternetKernel.cs (.../IWaternetKernel.cs) (revision f9472b2b0e70a6c8e2c9f78cfd622c8a099acaee)
@@ -20,11 +20,10 @@
// All rights reserved.
using System.Collections.Generic;
-using Deltares.MacroStability.CSharpWrapper.Input;
using Deltares.MacroStability.CSharpWrapper.Output;
using Deltares.MacroStability.Standard;
using Riskeer.MacroStabilityInwards.KernelWrapper.Calculators.Waternet;
-using WtiStabilityWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
+using CSharpWrapperWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
namespace Riskeer.MacroStabilityInwards.KernelWrapper.Kernels.Waternet
{
@@ -43,7 +42,7 @@
///
/// Gets the Waternet result.
///
- WtiStabilityWaternet Waternet { get; }
+ CSharpWrapperWaternet Waternet { get; }
///
/// Performs the Waternet calculation.
Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/Waternet/WaternetKernelWrapper.cs
===================================================================
diff -u -rfe0f11c19023237d7f3629c2206b4fe5eb5e121f -rf9472b2b0e70a6c8e2c9f78cfd622c8a099acaee
--- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/Waternet/WaternetKernelWrapper.cs (.../WaternetKernelWrapper.cs) (revision fe0f11c19023237d7f3629c2206b4fe5eb5e121f)
+++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Kernels/Waternet/WaternetKernelWrapper.cs (.../WaternetKernelWrapper.cs) (revision f9472b2b0e70a6c8e2c9f78cfd622c8a099acaee)
@@ -26,13 +26,12 @@
using Deltares.MacroStability.CSharpWrapper.Output;
using Deltares.MacroStability.CSharpWrapper.Output.WaternetCreator;
using Deltares.MacroStability.Standard;
-using Deltares.MacroStability.WaternetCreator;
-using WtiStabilityWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
+using CSharpWrapperWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
namespace Riskeer.MacroStabilityInwards.KernelWrapper.Kernels.Waternet
{
///
- /// Class that wraps for performing a Waternet calculation.
+ /// Class that wraps the for performing a Waternet calculation.
///
internal class WaternetKernelWrapper : IWaternetKernel
{
@@ -43,17 +42,29 @@
///
/// Creates a new instance of .
///
- /// The to use.
+ /// The to use.
+ /// The to use.
/// The name of the .
- ///
+ /// Thrown when
+ /// or is null.
public WaternetKernelWrapper(ICalculator calculator, IValidator validator, string waternetName)
{
+ if (calculator == null)
+ {
+ throw new ArgumentNullException(nameof(calculator));
+ }
+
+ if (validator == null)
+ {
+ throw new ArgumentNullException(nameof(validator));
+ }
+
this.calculator = calculator;
this.validator = validator;
this.waternetName = waternetName;
}
- public WtiStabilityWaternet Waternet { get; private set; }
+ public CSharpWrapperWaternet Waternet { get; private set; }
public void Calculate()
{
Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Kernels/Waternet/WaternetKernelWrapperTest.cs
===================================================================
diff -u -rca9e457de56679e8bdbba7953235b02543cbfac3 -rf9472b2b0e70a6c8e2c9f78cfd622c8a099acaee
--- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Kernels/Waternet/WaternetKernelWrapperTest.cs (.../WaternetKernelWrapperTest.cs) (revision ca9e457de56679e8bdbba7953235b02543cbfac3)
+++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Kernels/Waternet/WaternetKernelWrapperTest.cs (.../WaternetKernelWrapperTest.cs) (revision f9472b2b0e70a6c8e2c9f78cfd622c8a099acaee)
@@ -19,315 +19,243 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using System.Collections.Generic;
-using System.Linq;
-using Core.Common.Util.Reflection;
-using Deltares.MacroStability.Geometry;
-using Deltares.MacroStability.Standard;
-using Deltares.MacroStability.WaternetCreator;
+using Deltares.MacroStability.CSharpWrapper;
+using Deltares.MacroStability.CSharpWrapper.Output;
+using Deltares.MacroStability.CSharpWrapper.Output.WaternetCreator;
using NUnit.Framework;
+using Rhino.Mocks;
using Riskeer.MacroStabilityInwards.KernelWrapper.Kernels.Waternet;
-using WtiStabilityWaternet = Deltares.MacroStability.Geometry.Waternet;
+using CSharpWrapperWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
namespace Riskeer.MacroStabilityInwards.KernelWrapper.Test.Kernels.Waternet
{
[TestFixture]
public class WaternetKernelWrapperTest
{
[Test]
- public void Constructor_ExpectedValues()
+ public void Constructor_CalculatorNull_ThrowsArgumentNullException()
{
// Setup
- var location = new Location();
+ var mocks = new MockRepository();
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
// Call
- var kernel = new WaternetKernelWrapper(location, "Waternet");
+ void Call() => new WaternetKernelWrapper(null, validator, string.Empty);
// Assert
- Assert.IsInstanceOf(kernel);
- Assert.IsNull(location.Surfaceline);
- Assert.IsNull(location.SoilProfile2D);
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("calculator", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
- public void Constructor_CompleteInput_InputCorrectlySetToWrappedKernel()
+ public void Constructor_ValidatorNull_ThrowsArgumentNullException()
{
// Setup
- var location = new Location();
- var soilProfile2D = new SoilProfile2D();
- var surfaceLine = new SurfaceLine2();
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ mocks.ReplayAll();
// Call
- var kernel = new WaternetKernelWrapper(location, "Waternet");
- kernel.SetSoilProfile(soilProfile2D);
- kernel.SetSurfaceLine(surfaceLine);
+ void Call() => new WaternetKernelWrapper(calculator, null, string.Empty);
// Assert
- var waternetCreator = TypeUtils.GetField(kernel, "waternetCreator");
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("validator", exception.ParamName);
+ mocks.VerifyAll();
+ }
- Assert.AreSame(surfaceLine, location.Surfaceline);
- Assert.AreSame(soilProfile2D, location.SoilProfile2D);
- Assert.AreEqual(9.81, kernel.Waternet.UnitWeight);
+ [Test]
+ public void Constructor_ExpectedValues()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
- AssertIrrelevantValues(kernel.Waternet, waternetCreator);
+ // Call
+ var kernel = new WaternetKernelWrapper(calculator, validator, "Waternet");
+
+ // Assert
+ Assert.IsInstanceOf(kernel);
+ Assert.IsNull(kernel.Waternet);
+ mocks.VerifyAll();
}
[Test]
- public void Calculate_ExceptionInWrappedKernel_ThrowsWaternetKernelWrapperException()
+ public void Calculate_SuccessfulCalculation_WaternetSet()
{
// Setup
- var kernel = new WaternetKernelWrapper(new Location(), "Waternet");
+ const string name = "Waternet";
+ var output = new WaternetCreatorOutput
+ {
+ Waternet = new CSharpWrapperWaternet()
+ };
+
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.CalculateWaternet(0)).Return(output);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+
+ var kernel = new WaternetKernelWrapper(calculator, validator, name);
+
// Call
- void Call() => kernel.Calculate();
+ kernel.Calculate();
// Assert
- var exception = Assert.Throws(Call);
- Assert.IsNotNull(exception.InnerException);
- Assert.AreEqual(exception.InnerException.Message, exception.Message);
+ Assert.AreSame(output.Waternet, kernel.Waternet);
+ Assert.AreEqual(name, kernel.Waternet.Name);
+ mocks.VerifyAll();
}
[Test]
- public void Validate_CompleteInput_NoValidationMessages()
+ public void Calculate_WaternetCannotBeGenerated_ThrowsWaternetKernelWrapperException()
{
// Setup
- WaternetKernelWrapper kernel = CreateValidKernel(new Soil
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ validator.Stub(v => v.ValidateWaternetCreator()).Return(new ValidationOutput
{
- ShearStrengthModel = ShearStrengthModel.CPhi,
- AbovePhreaticLevel = 15.0,
- BelowPhreaticLevel = 15.0,
- Cohesion = 10.0,
- Dilatancy = 10.0,
- FrictionAngle = 10.0
+ IsValid = false
});
+ mocks.ReplayAll();
+ var kernel = new WaternetKernelWrapper(calculator, validator, string.Empty);
+
// Call
- IEnumerable validationMessages = kernel.Validate();
+ void Call() => kernel.Calculate();
// Assert
- CollectionAssert.IsEmpty(validationMessages);
+ Assert.Throws(Call);
+ mocks.VerifyAll();
}
[Test]
- public void Validate_InputNotComplete_ReturnsValidationMessages()
+ public void Calculate_ExceptionInWrappedKernel_ThrowsWaternetKernelWrapperException()
{
// Setup
- var location = new Location
- {
- WaternetCreationMode = WaternetCreationMode.CreateWaternet
- };
+ var exceptionToThrow = new Exception();
- var kernel = new WaternetKernelWrapper(location, "Waternet");
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.CalculateWaternet(0)).Throw(exceptionToThrow);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+ var kernel = new WaternetKernelWrapper(calculator, validator, string.Empty);
+
// Call
- IEnumerable validationMessages = kernel.Validate();
+ void Call() => kernel.Calculate();
// Assert
- CollectionAssert.IsNotEmpty(validationMessages);
+ var exception = Assert.Throws(Call);
+ Assert.AreSame(exceptionToThrow, exception.InnerException);
+ Assert.AreEqual(exception.InnerException.Message, exception.Message);
+ mocks.VerifyAll();
}
- private static WaternetKernelWrapper CreateValidKernel(Soil soil)
+ [Test]
+ public void Calculate_ErrorMessageInCalculationOutput_ThrowsWaternetKernelWrapperException()
{
- var location = new Location
- {
- WaternetCreationMode = WaternetCreationMode.CreateWaternet,
- Inwards = true,
- PenetrationLength = 2,
- HeadInPlLine2Outwards = 1,
- WaterLevelPolder = 1,
- PlLineCreationMethod = PlLineCreationMethod.RingtoetsWti2017,
- PlLineOffsetBelowDikeToeAtPolder = 1,
- PlLineOffsetBelowDikeTopAtPolder = 1,
- PlLineOffsetBelowShoulderBaseInside = 1,
- MinimumLevelPhreaticLineAtDikeTopRiver = 1,
- MinimumLevelPhreaticLineAtDikeTopPolder = 1,
- DikeSoilScenario = DikeSoilScenario.ClayDikeOnSand
- };
+ // Setup
+ const string message1 = "Message1";
+ const string message2 = "Message2";
+ const string message3 = "Message3";
- 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 point9 = new Point2D(100, -100);
- var point10 = new Point2D(-50, -100);
- 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 curve9 = new GeometryCurve(point2, point9);
- var curve10 = new GeometryCurve(point9, point10);
- var curve11 = new GeometryCurve(point10, point1);
- var loop1 = new GeometryLoop
+ var waternetCreatorOutput = new WaternetCreatorOutput
{
- CurveList =
+ Messages = new List
{
- curve1,
- curve2,
- curve3,
- curve4,
- curve5,
- curve6,
- curve7,
- curve8
- }
- };
- var loop2 = new GeometryLoop
- {
- CurveList =
- {
- curve1,
- curve9,
- curve10,
- curve11
- }
- };
- var geometrySurface1 = new GeometrySurface
- {
- OuterLoop = loop1
- };
- var geometrySurface2 = new GeometrySurface
- {
- OuterLoop = loop2
- };
- var kernelWrapper = new WaternetKernelWrapper(location, "Waternet");
- kernelWrapper.SetSoilProfile(new SoilProfile2D
- {
- Geometry = new GeometryData
- {
- Points =
+ new Message
{
- point1,
- point2,
- point3,
- point4,
- point5,
- point6,
- point7,
- point9,
- point10
+ Content = message1,
+ MessageType = MessageType.Error
},
- Curves =
+ new Message
{
- curve1,
- curve2,
- curve3,
- curve4,
- curve5,
- curve6,
- curve7,
- curve8,
- curve9,
- curve10,
- curve11
+ Content = message2,
+ MessageType = MessageType.Error
},
- Loops =
+ new Message
{
- loop1,
- loop2
- },
- Surfaces =
- {
- geometrySurface1,
- geometrySurface2
- },
- Left = -50,
- Right = 100,
- Bottom = -50
- },
- Surfaces =
- {
- new SoilLayer2D
- {
- GeometrySurface = geometrySurface1,
- Soil = soil
- },
- new SoilLayer2D
- {
- GeometrySurface = geometrySurface2,
- Soil = soil,
- IsAquifer = true
+ Content = message3,
+ MessageType = MessageType.Warning
}
}
- });
- var surfaceLine = new SurfaceLine2
- {
- Geometry = new GeometryPointString
- {
- CalcPoints =
- {
- point8,
- point7,
- point6,
- point5,
- point4,
- point3
- }
- }
};
- surfaceLine.Geometry.SyncPoints();
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
+
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ calculator.Stub(c => c.CalculateWaternet(0)).Return(waternetCreatorOutput);
+ var validator = mocks.Stub();
+ mocks.ReplayAll();
+
+ var kernel = new WaternetKernelWrapper(calculator, validator, string.Empty);
+
+ // Call
+ void Call() => kernel.Calculate();
+
+ // Assert
+ var exception = Assert.Throws(Call);
+ string expectedMessage = $"{message1}{Environment.NewLine}" +
+ $"{message2}";
+ Assert.AreEqual(expectedMessage, exception.Message);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void Validate_ValidationCompleted_ReturnsValidationMessages()
+ {
+ // Setup
+ var validationOutput = new ValidationOutput
{
- CharacteristicPointType = CharacteristicPointType.DikeToeAtPolder,
- X = -10,
- Z = 0,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
- {
- CharacteristicPointType = CharacteristicPointType.DikeTopAtPolder,
- X = 0,
- Z = 10,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
- {
- CharacteristicPointType = CharacteristicPointType.DikeTopAtRiver,
- X = 10,
- Z = 10,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
- {
- CharacteristicPointType = CharacteristicPointType.DikeToeAtRiver,
- X = 20,
- Z = 0,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
- {
- CharacteristicPointType = CharacteristicPointType.SurfaceLevelOutside,
- X = 20,
- Z = 0,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
- surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint
- {
- CharacteristicPointType = CharacteristicPointType.SurfaceLevelInside,
- X = 20,
- Z = 0,
- GeometryPoint = surfaceLine.Geometry.Points[5]
- });
+ Messages = new Message[0]
+ };
- kernelWrapper.SetSurfaceLine(surfaceLine);
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ validator.Stub(v => v.ValidateWaternetCreator()).Return(validationOutput);
+ mocks.ReplayAll();
- return kernelWrapper;
+ var kernel = new WaternetKernelWrapper(calculator, validator, string.Empty);
+
+ // Call
+ IEnumerable validationMessages = kernel.Validate();
+
+ // Assert
+ Assert.AreSame(validationOutput.Messages, validationMessages);
+ mocks.VerifyAll();
}
- private static void AssertIrrelevantValues(WtiStabilityWaternet waternet, WaternetCreator waternetCreator)
+ [Test]
+ public void Validate_ExceptionInWrappedKernel_ThrowsUpliftVanKernelWrapperException()
{
- Assert.AreEqual("Waternet", waternet.Name);
- Assert.IsFalse(waternet.IsGenerated);
+ // Setup
+ var exceptionToThrow = new Exception();
- Assert.AreEqual(Enumerable.Empty(), waternetCreator.LogMessages);
- Assert.AreEqual(LanguageType.Dutch, waternetCreator.Language);
+ var mocks = new MockRepository();
+ var calculator = mocks.Stub();
+ var validator = mocks.Stub();
+ validator.Stub(v => v.ValidateWaternetCreator()).Throw(exceptionToThrow);
+ mocks.ReplayAll();
+
+ var kernel = new WaternetKernelWrapper(calculator, validator, string.Empty);
+
+ // 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