Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/HydraRingCalculatorBaseTest.cs =================================================================== diff -u -re69acb9595f7bf1d202ddd1fb51934b66768b75d -rb646e027b7b030947d7339c442d44810d9347893 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/HydraRingCalculatorBaseTest.cs (.../HydraRingCalculatorBaseTest.cs) (revision e69acb9595f7bf1d202ddd1fb51934b66768b75d) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/HydraRingCalculatorBaseTest.cs (.../HydraRingCalculatorBaseTest.cs) (revision b646e027b7b030947d7339c442d44810d9347893) @@ -19,13 +19,128 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Collections.Generic; using NUnit.Framework; +using Ringtoets.HydraRing.Calculation.Calculator; +using Ringtoets.HydraRing.Calculation.Data; +using Ringtoets.HydraRing.Calculation.Data.Input; +using Ringtoets.HydraRing.Calculation.Parsers; namespace Ringtoets.HydraRing.Calculation.Test.Calculator { [TestFixture] public class HydraRingCalculatorBaseTest { - + [Test] + public void Constructor_WithoutHlcdDirectory_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new TestHydraRingCalculator(null, null); + + // Assert + var paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("hlcdDirectory", paramName); + } + + [Test] + public void Constructor_WithHlcdDirectory_InitializesOutputWithoutValues() + { + // Call + var calculator = new TestHydraRingCalculator("", null); + + // Assert + Assert.IsNull(calculator.OutputFileContent); + } + + [Test] + public void Calculate_WithCustomParser_ParsersExecutedAndOutputSet() + { + // Setup + var calculator = new TestHydraRingCalculator("", null); + + // Call + calculator.PublicCalculate(); + + // Assert + Assert.AreEqual("Fatal error: File not found: HLCD.sqlite\r\n", calculator.OutputFileContent); + Assert.IsTrue(calculator.Output); + } } + + internal class TestHydraRingCalculator : HydraRingCalculatorBase + { + private readonly TestParser parser; + + public TestHydraRingCalculator(string hlcdDirectory, string ringId) : base(hlcdDirectory, ringId) + { + parser = new TestParser(); + } + + public bool Output { get; set; } + + public void PublicCalculate() + { + Calculate(HydraRingUncertaintiesType.All, new TestHydraRingCalculationInput()); + } + + protected override void SetOutputs() + { + Output = parser.Parsed; + } + + protected override IEnumerable GetParsers() + { + yield return parser; + } + } + + internal class TestHydraRingCalculationInput : HydraRingCalculationInput + { + private readonly HydraRingSection section = new HydraRingSection(12, 12, 12); + + public TestHydraRingCalculationInput() : base(12) {} + + public override HydraRingFailureMechanismType FailureMechanismType + { + get + { + return 0; + } + } + + public override int CalculationTypeId + { + get + { + return 0; + } + } + + public override int VariableId + { + get + { + return 0; + } + } + + public override HydraRingSection Section + { + get + { + return section; + } + } + } + + internal class TestParser : IHydraRingFileParser + { + public bool Parsed { get; set; } + + public void Parse(string workingDirectory, int sectionId) + { + Parsed = true; + } + } } \ No newline at end of file