Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/IMacroStabilityInwardsCalculatorFactory.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/IMacroStabilityInwardsCalculatorFactory.cs (.../IMacroStabilityInwardsCalculatorFactory.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/IMacroStabilityInwardsCalculatorFactory.cs (.../IMacroStabilityInwardsCalculatorFactory.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -22,6 +22,7 @@ using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Kernels; namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators @@ -43,8 +44,10 @@ /// /// Creates a Waternet calculator. /// + /// The containing all the values required + /// for performing a Waternet calculation. /// The factory responsible for creating the Waternet kernel. /// The Waternet calculator. - IWaternetCalculator CreateWaternetCalculator(IMacroStabilityInwardsKernelFactory factory); + IWaternetCalculator CreateWaternetCalculator(WaternetCalculatorInput input, IMacroStabilityInwardsKernelFactory factory); } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/MacroStabilityInwardsCalculatorFactory.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/MacroStabilityInwardsCalculatorFactory.cs (.../MacroStabilityInwardsCalculatorFactory.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/MacroStabilityInwardsCalculatorFactory.cs (.../MacroStabilityInwardsCalculatorFactory.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -22,6 +22,7 @@ using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Kernels; namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators @@ -53,9 +54,9 @@ return new UpliftVanCalculator(input, factory); } - public IWaternetCalculator CreateWaternetCalculator(IMacroStabilityInwardsKernelFactory factory) + public IWaternetCalculator CreateWaternetCalculator(WaternetCalculatorInput input, IMacroStabilityInwardsKernelFactory factory) { - return new WaternetCalculator(factory); + return new WaternetCalculator(input, factory); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/Waternet/WaternetCalculator.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/Waternet/WaternetCalculator.cs (.../WaternetCalculator.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.KernelWrapper/Calculators/Waternet/WaternetCalculator.cs (.../WaternetCalculator.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Kernels; namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet @@ -29,19 +30,28 @@ /// public class WaternetCalculator : IWaternetCalculator { + private readonly WaternetCalculatorInput input; private readonly IMacroStabilityInwardsKernelFactory factory; /// /// Creates a new instance of . /// - /// The factory responsible for creating the Uplift Van kernel. - /// Thrown when is null. - public WaternetCalculator(IMacroStabilityInwardsKernelFactory factory) + /// The containing all the values + /// required for performing the Waternet calculation. + /// The factory responsible for creating the Waternet kernel. + /// Thrown when or + /// is null. + public WaternetCalculator(WaternetCalculatorInput input, IMacroStabilityInwardsKernelFactory factory) { + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } + this.input = input; this.factory = factory; } } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/MacroStabilityInwardsCalculatorFactoryTest.cs =================================================================== diff -u -r484ac98127f04b1d315c98fdada7bd9f5a004872 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/MacroStabilityInwardsCalculatorFactoryTest.cs (.../MacroStabilityInwardsCalculatorFactoryTest.cs) (revision 484ac98127f04b1d315c98fdada7bd9f5a004872) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/MacroStabilityInwardsCalculatorFactoryTest.cs (.../MacroStabilityInwardsCalculatorFactoryTest.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -25,6 +25,7 @@ using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Kernels; @@ -103,7 +104,15 @@ IMacroStabilityInwardsCalculatorFactory factory = MacroStabilityInwardsCalculatorFactory.Instance; // Call - IWaternetCalculator waternetCalculator = factory.CreateWaternetCalculator(new TestMacroStabilityInwardsKernelFactory()); + IWaternetCalculator waternetCalculator = factory.CreateWaternetCalculator( + new WaternetCalculatorInput(new WaternetCalculatorInput.ConstructionProperties + { + SurfaceLine = new MacroStabilityInwardsSurfaceLine("test"), + SoilProfile = new TestSoilProfile(), + PhreaticLineOffsetsExtreme = new PhreaticLineOffsets(), + PhreaticLineOffsetsDaily = new PhreaticLineOffsets(), + DrainageConstruction = new DrainageConstruction(), + }), new TestMacroStabilityInwardsKernelFactory()); // Assert Assert.IsInstanceOf(waternetCalculator); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/UpliftVanCalculatorTest.cs =================================================================== diff -u -r484ac98127f04b1d315c98fdada7bd9f5a004872 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/UpliftVanCalculatorTest.cs (.../UpliftVanCalculatorTest.cs) (revision 484ac98127f04b1d315c98fdada7bd9f5a004872) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/UpliftVan/UpliftVanCalculatorTest.cs (.../UpliftVanCalculatorTest.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -70,8 +70,10 @@ [Test] public void Constructor_FactoryNull_ArgumentNullException() { - // Call + // Setup UpliftVanCalculatorInput input = CreateValidCalculatorInput(); + + // Call TestDelegate call = () => new UpliftVanCalculator(input, null); // Assert @@ -94,6 +96,7 @@ // Assert Assert.IsInstanceOf(calculator); + mocks.VerifyAll(); } [Test] Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/Waternet/WaternetCalculatorTest.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/Waternet/WaternetCalculatorTest.cs (.../WaternetCalculatorTest.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.Test/Calculators/Waternet/WaternetCalculatorTest.cs (.../WaternetCalculatorTest.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -20,21 +20,46 @@ // All rights reserved. using System; +using System.Linq; +using Core.Common.Base.Geometry; using NUnit.Framework; using Rhino.Mocks; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Kernels; +using Ringtoets.MacroStabilityInwards.Primitives; namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Test.Calculators.Waternet { [TestFixture] public class WaternetCalculatorTest { [Test] + public void Constructor_InputNull_ArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var factory = mocks.Stub(); + mocks.ReplayAll(); + + // Call + TestDelegate call = () => new WaternetCalculator(null, factory); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("input", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] public void Constructor_FactoryNull_ArgumentNullException() { + // Setup + WaternetCalculatorInput input = CreateValidCalculatorInput(); + // Call - TestDelegate call = () => new WaternetCalculator(null); + TestDelegate call = () => new WaternetCalculator(input, null); // Assert var exception = Assert.Throws(call); @@ -49,12 +74,92 @@ var factory = mocks.Stub(); mocks.ReplayAll(); + WaternetCalculatorInput input = CreateValidCalculatorInput(); + // Call - var calculator = new WaternetCalculator(factory); + var calculator = new WaternetCalculator(input, factory); // Assert Assert.IsInstanceOf(calculator); mocks.VerifyAll(); } + + private WaternetCalculatorInput CreateValidCalculatorInput() + { + var random = new Random(21); + + MacroStabilityInwardsSurfaceLine surfaceLine = CreateValidSurfaceLine(); + return new WaternetCalculatorInput(new WaternetCalculatorInput.ConstructionProperties + { + AssessmentLevel = random.NextDouble(), + SurfaceLine = surfaceLine, + SoilProfile = CreateValidSoilProfile(surfaceLine), + DrainageConstruction = new DrainageConstruction(), + PhreaticLineOffsetsExtreme = new PhreaticLineOffsets(), + PhreaticLineOffsetsDaily = new PhreaticLineOffsets() + }); + } + + private static SoilProfile CreateValidSoilProfile(MacroStabilityInwardsSurfaceLine surfaceLine) + { + return new SoilProfile(new[] + { + new SoilLayer( + new[] + { + surfaceLine.LocalGeometry.First(), + surfaceLine.LocalGeometry.Last() + }, + Enumerable.Empty(), + new SoilLayer.ConstructionProperties()), + new SoilLayer( + new[] + { + surfaceLine.LocalGeometry.First(), + surfaceLine.LocalGeometry.Last() + }, + Enumerable.Empty(), + new SoilLayer.ConstructionProperties + { + IsAquifer = true + }), + new SoilLayer( + new[] + { + surfaceLine.LocalGeometry.First(), + surfaceLine.LocalGeometry.Last() + }, + Enumerable.Empty(), + new SoilLayer.ConstructionProperties()), + new SoilLayer( + new[] + { + surfaceLine.LocalGeometry.First(), + surfaceLine.LocalGeometry.Last() + }, + Enumerable.Empty(), + new SoilLayer.ConstructionProperties()) + }, new[] + { + new PreconsolidationStress(new Point2D(0, 0), 1.1) + }); + } + + private static MacroStabilityInwardsSurfaceLine CreateValidSurfaceLine() + { + var surfaceLine = new MacroStabilityInwardsSurfaceLine(string.Empty); + var dikeToeAtRiver = new Point3D(1, 0, 8); + + surfaceLine.SetGeometry(new[] + { + new Point3D(0, 0, 2), + dikeToeAtRiver, + new Point3D(2, 0, -1) + }); + + surfaceLine.SetDikeToeAtRiverAt(dikeToeAtRiver); + + return surfaceLine; + } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/TestMacroStabilityInwardsCalculatorFactoryTest.cs =================================================================== diff -u -r484ac98127f04b1d315c98fdada7bd9f5a004872 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/TestMacroStabilityInwardsCalculatorFactoryTest.cs (.../TestMacroStabilityInwardsCalculatorFactoryTest.cs) (revision 484ac98127f04b1d315c98fdada7bd9f5a004872) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/TestMacroStabilityInwardsCalculatorFactoryTest.cs (.../TestMacroStabilityInwardsCalculatorFactoryTest.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -23,7 +23,7 @@ using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; -using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.UpliftVan; @@ -47,6 +47,7 @@ Assert.IsNotNull(factory.LastCreatedUpliftVanCalculator); Assert.IsNull(factory.LastCreatedUpliftVanCalculator.Input); Assert.IsNotNull(factory.LastCreatedWaternetCalculator); + Assert.IsNull(factory.LastCreatedWaternetCalculator.Input); } [Test] @@ -72,16 +73,25 @@ } [Test] - public void CreateWaternetCalculator_Always_ReturnStub() + public void CreateWaternetCalculator_Always_ReturnStubWithInputSet() { // Setup var factory = new TestMacroStabilityInwardsCalculatorFactory(); - + var input = new WaternetCalculatorInput(new WaternetCalculatorInput.ConstructionProperties + { + SurfaceLine = new MacroStabilityInwardsSurfaceLine("test"), + SoilProfile = new TestSoilProfile(), + PhreaticLineOffsetsExtreme = new PhreaticLineOffsets(), + PhreaticLineOffsetsDaily = new PhreaticLineOffsets(), + DrainageConstruction = new DrainageConstruction(), + }); + // Call - IWaternetCalculator calculator = factory.CreateWaternetCalculator(new TestMacroStabilityInwardsKernelFactory()); + var calculator = (WaternetCalculatorStub) factory.CreateWaternetCalculator(input, new TestMacroStabilityInwardsKernelFactory()); // Assert Assert.IsInstanceOf(calculator); + Assert.AreSame(input, calculator.Input); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/Waternet/WaternetCalculatorStubTest.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/Waternet/WaternetCalculatorStubTest.cs (.../WaternetCalculatorStubTest.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/Waternet/WaternetCalculatorStubTest.cs (.../WaternetCalculatorStubTest.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -36,6 +36,7 @@ // Assert Assert.IsInstanceOf(calculator); + Assert.IsNull(calculator.Input); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/TestMacroStabilityInwardsCalculatorFactory.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/TestMacroStabilityInwardsCalculatorFactory.cs (.../TestMacroStabilityInwardsCalculatorFactory.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/TestMacroStabilityInwardsCalculatorFactory.cs (.../TestMacroStabilityInwardsCalculatorFactory.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -23,6 +23,7 @@ using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; using Ringtoets.MacroStabilityInwards.KernelWrapper.Kernels; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.UpliftVan; using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.Waternet; @@ -60,8 +61,10 @@ return LastCreatedUpliftVanCalculator; } - public IWaternetCalculator CreateWaternetCalculator(IMacroStabilityInwardsKernelFactory factory) + public IWaternetCalculator CreateWaternetCalculator(WaternetCalculatorInput input, IMacroStabilityInwardsKernelFactory factory) { + LastCreatedWaternetCalculator.Input = input; + return LastCreatedWaternetCalculator; } } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/Waternet/WaternetCalculatorStub.cs =================================================================== diff -u -rdfa159a984ea89b9e80109b2e55235a7ee09dfe4 -ra1b68821bc11b10c5ec147df7109ffd69e0acbd2 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/Waternet/WaternetCalculatorStub.cs (.../WaternetCalculatorStub.cs) (revision dfa159a984ea89b9e80109b2e55235a7ee09dfe4) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/Waternet/WaternetCalculatorStub.cs (.../WaternetCalculatorStub.cs) (revision a1b68821bc11b10c5ec147df7109ffd69e0acbd2) @@ -20,11 +20,18 @@ // All rights reserved. using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.Waternet.Input; namespace Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.Waternet { /// /// Waternet calculator stub for testing purposes. /// - public class WaternetCalculatorStub : IWaternetCalculator {} + public class WaternetCalculatorStub : IWaternetCalculator + { + /// + /// Gest or sets the Waternet calculator input. + /// + public WaternetCalculatorInput Input { get; set; } + } } \ No newline at end of file