Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/Converters/MacroStabilityInwardsWaternetConverter.cs =================================================================== diff -u -r38b96b5fe034945cfa33600ec134e21507b40922 -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/Converters/MacroStabilityInwardsWaternetConverter.cs (.../MacroStabilityInwardsWaternetConverter.cs) (revision 38b96b5fe034945cfa33600ec134e21507b40922) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/Converters/MacroStabilityInwardsWaternetConverter.cs (.../MacroStabilityInwardsWaternetConverter.cs) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -50,8 +50,9 @@ IDictionary phreaticLineLookup = calculatorResult.PhreaticLines .ToDictionary(pl => pl, ConvertPhreaticLine); - return new MacroStabilityInwardsWaternet(phreaticLineLookup.Values, calculatorResult.WaternetLines - .Select(wl => ConvertWaternetLine(wl, phreaticLineLookup))); + return new MacroStabilityInwardsWaternet(phreaticLineLookup.Values.ToArray(), + calculatorResult.WaternetLines + .Select(wl => ConvertWaternetLine(wl, phreaticLineLookup)).ToArray()); } private static MacroStabilityInwardsWaternetLine ConvertWaternetLine(WaternetLineResult waternetLine, Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/WaternetCalculationService.cs =================================================================== diff -u -rcc068526b5a84a94aeeebf872b29f7da4c28ceab -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/WaternetCalculationService.cs (.../WaternetCalculationService.cs) (revision cc068526b5a84a94aeeebf872b29f7da4c28ceab) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/WaternetCalculationService.cs (.../WaternetCalculationService.cs) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -65,7 +65,8 @@ } catch (WaternetCalculatorException) { - return null; + return new MacroStabilityInwardsWaternet(new MacroStabilityInwardsPhreaticLine[0], + new MacroStabilityInwardsWaternetLine[0]); } } @@ -97,7 +98,8 @@ } catch (WaternetCalculatorException) { - return null; + return new MacroStabilityInwardsWaternet(new MacroStabilityInwardsPhreaticLine[0], + new MacroStabilityInwardsWaternetLine[0]); } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/DerivedMacroStabilityInwardsInput.cs =================================================================== diff -u -r14c118039f313ea66787d8065daad0aa783b731a -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/DerivedMacroStabilityInwardsInput.cs (.../DerivedMacroStabilityInwardsInput.cs) (revision 14c118039f313ea66787d8065daad0aa783b731a) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/DerivedMacroStabilityInwardsInput.cs (.../DerivedMacroStabilityInwardsInput.cs) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -20,7 +20,7 @@ // All rights reserved. using System; -using System.Linq; +using Ringtoets.MacroStabilityInwards.CalculatedInput; using Ringtoets.MacroStabilityInwards.Primitives; namespace Ringtoets.MacroStabilityInwards.Data @@ -41,32 +41,36 @@ { if (input == null) { - throw new ArgumentNullException(nameof(input), @"Cannot create DerivedMacroStabilityInwardsInput without MacroStabilityInwardsInput."); + throw new ArgumentNullException(nameof(input)); } this.input = input; } /// - /// + /// Gets the calculated waternet for extreme circumstances. /// public MacroStabilityInwardsWaternet WaternetExtreme { get { - return new MacroStabilityInwardsWaternet(Enumerable.Empty(), - Enumerable.Empty()); + return input.SoilProfileUnderSurfaceLine != null + ? WaternetCalculationService.CalculateExtreme(input) + : new MacroStabilityInwardsWaternet(new MacroStabilityInwardsPhreaticLine[0], + new MacroStabilityInwardsWaternetLine[0]); } } /// - /// + /// Gets the calculated waternet for daily circumstances. /// public MacroStabilityInwardsWaternet WaternetDaily { get { - return new MacroStabilityInwardsWaternet(Enumerable.Empty(), - Enumerable.Empty()); + return input.SoilProfileUnderSurfaceLine != null + ? WaternetCalculationService.CalculateDaily(input) + : new MacroStabilityInwardsWaternet(new MacroStabilityInwardsPhreaticLine[0], + new MacroStabilityInwardsWaternetLine[0]); } } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/Ringtoets.MacroStabilityInwards.Data.csproj =================================================================== diff -u -rcfa7dc2bce5e37f5677d9c8772b68599f9e26a0c -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/Ringtoets.MacroStabilityInwards.Data.csproj (.../Ringtoets.MacroStabilityInwards.Data.csproj) (revision cfa7dc2bce5e37f5677d9c8772b68599f9e26a0c) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/Ringtoets.MacroStabilityInwards.Data.csproj (.../Ringtoets.MacroStabilityInwards.Data.csproj) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -107,6 +107,11 @@ Ringtoets.Common.Data False + + {D0887613-858E-4EED-9320-8C5A09170761} + Ringtoets.MacroStabilityInwards.CalculatedInput + False + {E9B39743-2DC9-4922-9E0F-6BA3E0E54189} Ringtoets.MacroStabilityInwards.Primitives Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.CalculatedInput.Test/WaternetCalculationServiceTest.cs =================================================================== diff -u -rcc068526b5a84a94aeeebf872b29f7da4c28ceab -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.CalculatedInput.Test/WaternetCalculationServiceTest.cs (.../WaternetCalculationServiceTest.cs) (revision cc068526b5a84a94aeeebf872b29f7da4c28ceab) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.CalculatedInput.Test/WaternetCalculationServiceTest.cs (.../WaternetCalculationServiceTest.cs) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -35,6 +35,14 @@ [TestFixture] public class WaternetCalculationServiceTest { + private MacroStabilityInwardsCalculationScenario testCalculation; + + [SetUp] + public void Setup() + { + testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + } + [Test] public void CalculateExtreme_InputNull_ThrowsArgumentNullException() { @@ -50,7 +58,6 @@ public void CalculateExtreme_WithInput_SetsInputOnCalculator() { // Setup - MacroStabilityInwardsCalculationScenario testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); MacroStabilityInwardsInput input = testCalculation.InputParameters; using (new MacroStabilityInwardsCalculatorFactoryConfig()) @@ -74,8 +81,6 @@ public void CalculateExtreme_CalculationRan_ReturnMacroStabilityInwardsWaternet() { // Setup - MacroStabilityInwardsCalculationScenario testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); - using (new MacroStabilityInwardsCalculatorFactoryConfig()) { var calculatorFactory = (TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance; @@ -89,11 +94,9 @@ } [Test] - public void CalculateExtreme_ErrorInCalculation_ReturnNull() + public void CalculateExtreme_ErrorInCalculation_ReturnMacroStabilityInwardsWaternet() { // Setup - MacroStabilityInwardsCalculationScenario testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); - using (new MacroStabilityInwardsCalculatorFactoryConfig()) { var calculatorFactory = (TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance; @@ -103,7 +106,9 @@ MacroStabilityInwardsWaternet output = WaternetCalculationService.CalculateExtreme(testCalculation.InputParameters); // Assert - Assert.IsNull(output); + Assert.IsNotNull(output); + CollectionAssert.IsEmpty(output.PhreaticLines); + CollectionAssert.IsEmpty(output.WaternetLines); } } @@ -122,7 +127,6 @@ public void CalculateDaily_WithInput_SetsInputOnCalculator() { // Setup - MacroStabilityInwardsCalculationScenario testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); MacroStabilityInwardsInput input = testCalculation.InputParameters; using (new MacroStabilityInwardsCalculatorFactoryConfig()) @@ -146,8 +150,6 @@ public void CalculateDaily_CalculationRan_ReturnMacroStabilityInwardsWaternet() { // Setup - MacroStabilityInwardsCalculationScenario testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); - using (new MacroStabilityInwardsCalculatorFactoryConfig()) { var calculatorFactory = (TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance; @@ -161,11 +163,9 @@ } [Test] - public void CalculateDaily_ErrorInCalculation_ReturnNull() + public void CalculateDaily_ErrorInCalculation_ReturnMacroStabilityInwardsWaternet() { // Setup - MacroStabilityInwardsCalculationScenario testCalculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); - using (new MacroStabilityInwardsCalculatorFactoryConfig()) { var calculatorFactory = (TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance; @@ -175,7 +175,9 @@ MacroStabilityInwardsWaternet output = WaternetCalculationService.CalculateDaily(testCalculation.InputParameters); // Assert - Assert.IsNull(output); + Assert.IsNotNull(output); + CollectionAssert.IsEmpty(output.PhreaticLines); + CollectionAssert.IsEmpty(output.WaternetLines); } } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/DerivedMacroStabilityInwardsInputTest.cs =================================================================== diff -u -r7438751456088ede76933c01627857c4e11681c9 -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/DerivedMacroStabilityInwardsInputTest.cs (.../DerivedMacroStabilityInwardsInputTest.cs) (revision 7438751456088ede76933c01627857c4e11681c9) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/DerivedMacroStabilityInwardsInputTest.cs (.../DerivedMacroStabilityInwardsInputTest.cs) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -20,8 +20,12 @@ // All rights reserved. using System; -using Core.Common.TestUtil; using NUnit.Framework; +using Ringtoets.MacroStabilityInwards.CalculatedInput.TestUtil; +using Ringtoets.MacroStabilityInwards.Data.TestUtil; +using Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators; +using Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators; +using Ringtoets.MacroStabilityInwards.Primitives; namespace Ringtoets.MacroStabilityInwards.Data.Test { @@ -35,8 +39,8 @@ TestDelegate call = () => new DerivedMacroStabilityInwardsInput(null); // Assert - const string expectedMessage = "Cannot create DerivedMacroStabilityInwardsInput without MacroStabilityInwardsInput."; - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); + var exception = Assert.Throws(call); + Assert.AreEqual("input", exception.ParamName); } [Test] @@ -48,5 +52,117 @@ // Assert Assert.DoesNotThrow(call); } + + [Test] + public void WaternetExtreme_SoilProfileNull_ReturnMacroStabilityInwardsWaternet() + { + // Setup + MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + calculation.InputParameters.StochasticSoilProfile = null; + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + // Call + MacroStabilityInwardsWaternet waternet = new DerivedMacroStabilityInwardsInput(calculation.InputParameters).WaternetExtreme; + + // Assert + Assert.IsNotNull(waternet); + CollectionAssert.IsEmpty(waternet.PhreaticLines); + CollectionAssert.IsEmpty(waternet.WaternetLines); + } + } + + [Test] + public void WaternetExtreme_SurfaceLineNull_ReturnMacroStabilityInwardsWaternet() + { + // Setup + MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + calculation.InputParameters.SurfaceLine = null; + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + // Call + MacroStabilityInwardsWaternet waternet = new DerivedMacroStabilityInwardsInput(calculation.InputParameters).WaternetExtreme; + + // Assert + Assert.IsNotNull(waternet); + CollectionAssert.IsEmpty(waternet.PhreaticLines); + CollectionAssert.IsEmpty(waternet.WaternetLines); + } + } + + [Test] + public void WaternetExtreme_ValidInput_ReturnMacroStabilityInwardsWaternet() + { + // Setup + MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + var calculatorFactory = (TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance; + + // Call + MacroStabilityInwardsWaternet waternet = new DerivedMacroStabilityInwardsInput(calculation.InputParameters).WaternetExtreme; + + // Assert + CalculatorOutputAssert.AssertWaternet(calculatorFactory.LastCreatedWaternetCalculator.Output, waternet); + } + } + + [Test] + public void WaternetDaily_SoilProfileNull_ReturnMacroStabilityInwardsWaternet() + { + // Setup + MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + calculation.InputParameters.StochasticSoilProfile = null; + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + // Call + MacroStabilityInwardsWaternet waternet = new DerivedMacroStabilityInwardsInput(calculation.InputParameters).WaternetDaily; + + // Assert + Assert.IsNotNull(waternet); + CollectionAssert.IsEmpty(waternet.PhreaticLines); + CollectionAssert.IsEmpty(waternet.WaternetLines); + } + } + + [Test] + public void WaternetDaily_SurfaceLineNull_ReturnMacroStabilityInwardsWaternet() + { + // Setup + MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + calculation.InputParameters.SurfaceLine = null; + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + // Call + MacroStabilityInwardsWaternet waternet = new DerivedMacroStabilityInwardsInput(calculation.InputParameters).WaternetDaily; + + // Assert + Assert.IsNotNull(waternet); + CollectionAssert.IsEmpty(waternet.PhreaticLines); + CollectionAssert.IsEmpty(waternet.WaternetLines); + } + } + + [Test] + public void WaternetDaily_ValidInput_ReturnMacroStabilityInwardsWaternet() + { + // Setup + MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(); + + using (new MacroStabilityInwardsCalculatorFactoryConfig()) + { + var calculatorFactory = (TestMacroStabilityInwardsCalculatorFactory) MacroStabilityInwardsCalculatorFactory.Instance; + + // Call + MacroStabilityInwardsWaternet waternet = new DerivedMacroStabilityInwardsInput(calculation.InputParameters).WaternetDaily; + + // Assert + CalculatorOutputAssert.AssertWaternet(calculatorFactory.LastCreatedWaternetCalculator.Output, waternet); + } + } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/Ringtoets.MacroStabilityInwards.Data.Test.csproj =================================================================== diff -u -rcfa7dc2bce5e37f5677d9c8772b68599f9e26a0c -r6e703bab0430cff5eb3f81b41b630afbd1d6b59a --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/Ringtoets.MacroStabilityInwards.Data.Test.csproj (.../Ringtoets.MacroStabilityInwards.Data.Test.csproj) (revision cfa7dc2bce5e37f5677d9c8772b68599f9e26a0c) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/Ringtoets.MacroStabilityInwards.Data.Test.csproj (.../Ringtoets.MacroStabilityInwards.Data.Test.csproj) (revision 6e703bab0430cff5eb3f81b41b630afbd1d6b59a) @@ -122,14 +122,26 @@ {83d6b73e-91d5-46b0-9218-955da1f75f7c} Ringtoets.MacroStabilityInwards.Data + + {3C0D3B38-A9F7-4B22-9705-513DA26AE2CC} + Ringtoets.MacroStabilityInwards.KernelWrapper + {e9b39743-2dc9-4922-9e0f-6ba3e0e54189} Ringtoets.MacroStabilityInwards.Primitives + + {53F7C73E-6D85-4B90-A6A8-DAA7F4BCB071} + Ringtoets.MacroStabilityInwards.CalculatedInput.TestUtil + {2b78cf04-4785-4f27-a6e5-45bddbb7bf04} Ringtoets.MacroStabilityInwards.Data.TestUtil + + {3810D738-6412-47D1-8BC0-729D55BC951F} + Ringtoets.MacroStabilityInwards.KernelWrapper.TestUtil +