Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs =================================================================== diff -u -r8d2c93e2bc5f1993b9e8e9037f015e7d366ec636 -raa019c917497b6ef42da091940f29e64fd82fc19 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs (.../GrassCoverErosionInwardsCalculationServiceTest.cs) (revision 8d2c93e2bc5f1993b9e8e9037f015e7d366ec636) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs (.../GrassCoverErosionInwardsCalculationServiceTest.cs) (revision aa019c917497b6ef42da091940f29e64fd82fc19) @@ -534,12 +534,12 @@ var failureMechanismSection = grassCoverErosionInwardsFailureMechanism.Sections.First(); var service = new GrassCoverErosionInwardsCalculationService(); - // Call using (new HydraRingCalculatorFactoryConfig()) { var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).OvertoppingCalculator; calculator.CalculationFinishedHandler += (s, e) => service.Cancel(); + // Call service.CalculateDikeHeight(calculation, assessmentSectionStub, failureMechanismSection, @@ -554,7 +554,9 @@ } [Test] - public void Calculate_CancelWithValidDikeCalculationInput_CancelsCalculatorAndHasNullOutput() + [TestCase(true)] + [TestCase(false)] + public void Calculate_CancelWithValidDikeCalculationInput_CancelsCalculatorAndHasNullOutput(bool cancelBeforeDikeHeightCalculationStarts) { // Setup var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism(); @@ -584,8 +586,20 @@ // Call using (new HydraRingCalculatorFactoryConfig()) { - var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DikeHeightCalculator; - calculator.CalculationFinishedHandler += (s, e) => service.Cancel(); + var testFactory = (TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance; + var overToppingCalculator = testFactory.OvertoppingCalculator; + var dikeHeightCalculator = testFactory.DikeHeightCalculator; + + if (cancelBeforeDikeHeightCalculationStarts) + { + overToppingCalculator.CalculationFinishedHandler += (s, e) => service.Cancel(); + } + else + { + dikeHeightCalculator.CalculationFinishedHandler += (s, e) => service.Cancel(); + } + + // Call service.CalculateDikeHeight(calculation, assessmentSectionStub, failureMechanismSection, @@ -595,7 +609,19 @@ // Assert Assert.IsNull(calculation.Output); - Assert.IsTrue(calculator.IsCanceled); + + if (cancelBeforeDikeHeightCalculationStarts) + { + Assert.IsTrue(overToppingCalculator.IsCanceled); + + // dikeheightCalculator is initialised after the overtopping calculation succesfully finishes. + Assert.IsFalse(dikeHeightCalculator.IsCanceled); + } + else + { + Assert.IsTrue(overToppingCalculator.IsCanceled); + Assert.IsTrue(dikeHeightCalculator.IsCanceled); + } } }