Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs =================================================================== diff -u -r5f55b35b1398af4604a31b78b7d4a144d209684f -r716528adfed212743b359ecaf540a1027dbceb65 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs (.../WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs) (revision 5f55b35b1398af4604a31b78b7d4a144d209684f) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs (.../WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs) (revision 716528adfed212743b359ecaf540a1027dbceb65) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using Ringtoets.Common.Data.Calculation; using Ringtoets.HydraRing.Data; using Ringtoets.Revetment.Data; using Ringtoets.WaveImpactAsphaltCover.Data; @@ -63,7 +64,7 @@ } [Test] - public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_WithoutFailureMechanism_ThrowsArgumentNullException() + public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_FailureMechanismNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => @@ -75,206 +76,111 @@ } [Test] - public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_CalculationsWithHydraulicBoundaryLocationAndOutput_ClearsHydraulicBoundaryLocationAndCalculationsAndReturnsAffectedCalculations() + public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_WithVariousCalculations_ClearsOutputAndReturnsAffectedCalculations() { // Setup - var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0); + WaveImpactAsphaltCoverFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(); + var expectedAffectedCalculations = failureMechanism.Calculations.Cast() + .Where(c => c.InputParameters.HydraulicBoundaryLocation != null || c.HasOutput) + .ToArray(); - var calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation - { - InputParameters = - { - HydraulicBoundaryLocation = hydraulicBoundaryLocation - }, - Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) - }; + // Call + IEnumerable affectedItems = + WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations(failureMechanism); - var calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation - { - InputParameters = - { - HydraulicBoundaryLocation = hydraulicBoundaryLocation - }, - Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) - }; + // Assert + Assert.IsFalse(failureMechanism.Calculations.Cast() + .Any(c => c.InputParameters.HydraulicBoundaryLocation != null || c.HasOutput)); + CollectionAssert.AreEqual(expectedAffectedCalculations, affectedItems); + } - var calculation3 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + [Test] + public void ClearAllWaveConditionsCalculationOutput_FailureMechanismNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(null); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + } + [Test] + public void ClearAllWaveConditionsCalculationOutput_WithVariousCalculations_ClearsCalculationsOutputAndReturnsAffectedCalculations() + { + // Setup + WaveImpactAsphaltCoverFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(); + var expectedAffectedCalculations = failureMechanism.Calculations.Where(c => c.HasOutput) + .ToArray(); // Call IEnumerable affectedItems = - WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations(failureMechanism); + WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(failureMechanism); // Assert - foreach (WaveImpactAsphaltCoverWaveConditionsCalculation calculation in failureMechanism.WaveConditionsCalculationGroup.Children - .Cast()) - { - Assert.IsNull(calculation.InputParameters.HydraulicBoundaryLocation); - Assert.IsNull(calculation.Output); - } - CollectionAssert.AreEqual(new[] - { - calculation1, - calculation2 - }, affectedItems); + Assert.IsFalse(failureMechanism.Calculations.Any(c => c.HasOutput)); + CollectionAssert.AreEquivalent(expectedAffectedCalculations, affectedItems); } - [Test] - public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_CalculationsWithHydraulicBoundaryLocationNoOutput_ClearsHydraulicBoundaryLocationAndReturnsAffectedCalculations() + private static WaveImpactAsphaltCoverFailureMechanism CreateFullyConfiguredFailureMechanism() { - // Setup var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, string.Empty, 0, 0); - var calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var calculationWithOutput = new WaveImpactAsphaltCoverWaveConditionsCalculation { + Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) + }; + var calculationWithOutputAndHydraulicBoundaryLocation = new WaveImpactAsphaltCoverWaveConditionsCalculation + { InputParameters = { HydraulicBoundaryLocation = hydraulicBoundaryLocation - } + }, + Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) }; - - var calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation + var calculationWithHydraulicBoundaryLocation = new WaveImpactAsphaltCoverWaveConditionsCalculation { InputParameters = { HydraulicBoundaryLocation = hydraulicBoundaryLocation } }; - var calculation3 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); - - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); - - // Call - IEnumerable affectedItems = - WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations(failureMechanism); - - // Assert - foreach (WaveImpactAsphaltCoverWaveConditionsCalculation calculation in failureMechanism.WaveConditionsCalculationGroup.Children - .Cast()) + var subCalculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var subCalculationWithOutput = new WaveImpactAsphaltCoverWaveConditionsCalculation { - Assert.IsNull(calculation.InputParameters.HydraulicBoundaryLocation); - } - CollectionAssert.AreEqual(new[] - { - calculation1, - calculation2 - }, affectedItems); - } - - [Test] - public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_CalculationsWithOutputAndNoHydraulicBoundaryLocation_ClearsOutputAndReturnsAffectedCalculations() - { - // Setup - var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - - var calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation - { Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) }; - - var calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation + var subCalculationWithOutputAndHydraulicBoundaryLocation = new WaveImpactAsphaltCoverWaveConditionsCalculation { + InputParameters = + { + HydraulicBoundaryLocation = hydraulicBoundaryLocation + }, Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) }; - - var calculation3 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); - - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); - - // Call - IEnumerable affectedItems = - WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations(failureMechanism); - - // Assert - foreach (WaveImpactAsphaltCoverWaveConditionsCalculation calculation in failureMechanism.WaveConditionsCalculationGroup.Children - .Cast()) + var subCalculationWithHydraulicBoundaryLocation = new WaveImpactAsphaltCoverWaveConditionsCalculation { - Assert.IsNull(calculation.Output); - } - CollectionAssert.AreEqual(new[] - { - calculation1, - calculation2 - }, affectedItems); - } - - [Test] - public void ClearAllCalculationOutputAndHydraulicBoundaryLocations_CalculationWithoutOutputAndHydraulicBoundaryLocation_ReturnNoAffectedCalculations() - { - // Setup - var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - - var calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); - var calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); - var calculation3 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); - - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); - - // Call - IEnumerable affectedItems = - WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutputAndHydraulicBoundaryLocations(failureMechanism); - - // Assert - CollectionAssert.IsEmpty(affectedItems); - } - - [Test] - public void ClearAllWaveConditionsCalculationOutput_FailureMechanismNull_ThrowsArgumentNullException() - { - // Call - TestDelegate call = () => WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(null); - - // Assert - var exception = Assert.Throws(call); - Assert.AreEqual("failureMechanism", exception.ParamName); - } - - [Test] - public void ClearAllWaveConditionsCalculationOutput_WithOutput_ClearsCalculationsOutputAndReturnsAffectedCalculations() - { - // Setup - WaveImpactAsphaltCoverFailureMechanism failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - WaveImpactAsphaltCoverWaveConditionsCalculation calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation - { - Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) + InputParameters = + { + HydraulicBoundaryLocation = hydraulicBoundaryLocation + } }; - WaveImpactAsphaltCoverWaveConditionsCalculation calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation - { - Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) - }; + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationWithOutput); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationWithOutputAndHydraulicBoundaryLocation); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationWithHydraulicBoundaryLocation); - WaveImpactAsphaltCoverWaveConditionsCalculation calculation3 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var calculationGroup = new CalculationGroup(); + calculationGroup.Children.Add(subCalculation); + calculationGroup.Children.Add(subCalculationWithOutput); + calculationGroup.Children.Add(subCalculationWithOutputAndHydraulicBoundaryLocation); + calculationGroup.Children.Add(subCalculationWithHydraulicBoundaryLocation); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationGroup); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); - - // Call - IEnumerable affectedItems = WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(failureMechanism); - - // Assert - foreach (WaveImpactAsphaltCoverWaveConditionsCalculation calculation in failureMechanism.WaveConditionsCalculationGroup.Children.Cast()) - { - Assert.IsNull(calculation.Output); - } - CollectionAssert.AreEqual(new[] - { - calculation1, - calculation2 - }, affectedItems); + return failureMechanism; } } } \ No newline at end of file