Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs =================================================================== diff -u -rcad9ccc6257b370c0b642e88cab8c528b032c3d4 -r178bbc2c5f319a03f6272570fe3668e70bd6dc8c --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision cad9ccc6257b370c0b642e88cab8c528b032c3d4) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/RingtoetsDataSynchronizationServiceTest.cs (.../RingtoetsDataSynchronizationServiceTest.cs) (revision 178bbc2c5f319a03f6272570fe3668e70bd6dc8c) @@ -262,37 +262,17 @@ } [Test] - public void ClearHydraulicBoundaryLocationOutputOfFailureMechanisms_TwoArgumentsDuneErosionFailureMechanismNull_ThrowsArgumentNullException() + public void ClearHydraulicBoundaryLocationOutputOfFailureMechanisms_AssessmentSectionNull_ThrowsArgumentNullException() { // Call - TestDelegate test = () => RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(null); + TestDelegate test = () => RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms((IAssessmentSection)null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("assessmentSection", exception.ParamName); } [Test] - public void ClearHydraulicBoundaryLocationOutput_HydraulicBoundaryDatabaseWithoutLocations_DoNothing() - { - // Setup - var mockRepository = new MockRepository(); - var assessmentSection = mockRepository.Stub(); - assessmentSection.HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); - assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new IFailureMechanism[0]); - mockRepository.ReplayAll(); - - // Call - IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput( - assessmentSection.HydraulicBoundaryDatabase, assessmentSection); - - // Assert - CollectionAssert.IsEmpty(affectedObjects); - - mockRepository.VerifyAll(); - } - - [Test] public void ClearHydraulicBoundaryLocationOutput_GrassCoverErosionOutwardsAndDunesWithoutLocations_DoNothing() { // Setup @@ -315,30 +295,20 @@ } [Test] - [TestCaseSource(nameof(HydraulicBoundaryLocationAndGrassAndDuneLocations))] - public void ClearHydraulicBoundaryLocationOutput_HydraulicBoundaryGrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation hydraulicBoundaryLocation, - HydraulicBoundaryLocation grassCoverErosionLocation, - DuneLocation duneLocation, - IEnumerable expectedAffectedItems) + [TestCaseSource(nameof(GrassAndDuneLocations))] + public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_GrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation grassCoverErosionLocation, + DuneLocation duneLocation, + IEnumerable expectedAffectedItems) { // Setup - var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase - { - Locations = - { - hydraulicBoundaryLocation - } - }; + var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations.Add(grassCoverErosionLocation); var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); duneErosionFailureMechanism.DuneLocations.Add(duneLocation); - var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); - grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations.Add(grassCoverErosionLocation); - var mockRepository = new MockRepository(); IAssessmentSection assessmentSection = mockRepository.Stub(); - assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new IFailureMechanism[] { grassCoverErosionOutwardsFailureMechanism, @@ -347,14 +317,12 @@ mockRepository.ReplayAll(); // Call - IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(assessmentSection.HydraulicBoundaryDatabase, assessmentSection); + IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(assessmentSection); // Assert // Note: To make sure the clear is performed regardless of what is done with // the return result, no ToArray() should be called before these assertions: CollectionAssert.AreEquivalent(expectedAffectedItems, affectedObjects); - Assert.IsNull(hydraulicBoundaryLocation.DesignWaterLevelOutput); - Assert.IsNull(hydraulicBoundaryLocation.WaveHeightOutput); Assert.IsNull(grassCoverErosionLocation.DesignWaterLevelOutput); Assert.IsNull(grassCoverErosionLocation.WaveHeightOutput); Assert.IsNull(duneLocation.Output); @@ -363,8 +331,33 @@ } [Test] + public void ClearHydraulicBoundaryLocationOutputOfFailureMechanisms_FailureMechanismsNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms((IEnumerable)null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("failureMechanisms", exception.ParamName); + } + + [Test] + public void ClearHydraulicBoundaryLocationOutput_FailureMechanismsGrassCoverErosionOutwardsAndDunesWithoutLocations_DoNothing() + { + // Call + IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(new IFailureMechanism[] + { + new GrassCoverErosionOutwardsFailureMechanism(), + new DuneErosionFailureMechanism() + }); + + // Assert + CollectionAssert.IsEmpty(affectedObjects); + } + + [Test] [TestCaseSource(nameof(GrassAndDuneLocations))] - public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_GrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation grassCoverErosionLocation, + public void ClearHydraulicBoundaryLocationOutputForFailureMechanisms_FailureMechanismsGrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation grassCoverErosionLocation, DuneLocation duneLocation, IEnumerable expectedAffectedItems) { @@ -375,8 +368,47 @@ var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); duneErosionFailureMechanism.DuneLocations.Add(duneLocation); + // Call + IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(new IFailureMechanism[] + { + grassCoverErosionOutwardsFailureMechanism, + duneErosionFailureMechanism + }); + + // Assert + // Note: To make sure the clear is performed regardless of what is done with + // the return result, no ToArray() should be called before these assertions: + CollectionAssert.AreEquivalent(expectedAffectedItems, affectedObjects); + Assert.IsNull(grassCoverErosionLocation.DesignWaterLevelOutput); + Assert.IsNull(grassCoverErosionLocation.WaveHeightOutput); + Assert.IsNull(duneLocation.Output); + } + + [Test] + [TestCaseSource(nameof(HydraulicBoundaryLocationAndGrassAndDuneLocations))] + public void ClearHydraulicBoundaryLocationOutput_HydraulicBoundaryGrassCoverErosionOutwardsAndDuneLocations_ClearDataAndReturnAffectedLocations(HydraulicBoundaryLocation hydraulicBoundaryLocation, + HydraulicBoundaryLocation grassCoverErosionLocation, + DuneLocation duneLocation, + IEnumerable expectedAffectedItems) + { + // Setup + var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase + { + Locations = + { + hydraulicBoundaryLocation + } + }; + + var duneErosionFailureMechanism = new DuneErosionFailureMechanism(); + duneErosionFailureMechanism.DuneLocations.Add(duneLocation); + + var grassCoverErosionOutwardsFailureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + grassCoverErosionOutwardsFailureMechanism.HydraulicBoundaryLocations.Add(grassCoverErosionLocation); + var mockRepository = new MockRepository(); IAssessmentSection assessmentSection = mockRepository.Stub(); + assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new IFailureMechanism[] { grassCoverErosionOutwardsFailureMechanism, @@ -385,12 +417,14 @@ mockRepository.ReplayAll(); // Call - IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutputOfFailureMechanisms(assessmentSection); + IEnumerable affectedObjects = RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(assessmentSection.HydraulicBoundaryDatabase, assessmentSection); // Assert // Note: To make sure the clear is performed regardless of what is done with // the return result, no ToArray() should be called before these assertions: CollectionAssert.AreEquivalent(expectedAffectedItems, affectedObjects); + Assert.IsNull(hydraulicBoundaryLocation.DesignWaterLevelOutput); + Assert.IsNull(hydraulicBoundaryLocation.WaveHeightOutput); Assert.IsNull(grassCoverErosionLocation.DesignWaterLevelOutput); Assert.IsNull(grassCoverErosionLocation.WaveHeightOutput); Assert.IsNull(duneLocation.Output); @@ -402,7 +436,7 @@ public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_AssessmentSectionNull_ThrowsArgumentNullException() { // Call - TestDelegate test = () => RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(null); + TestDelegate test = () => RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms((IAssessmentSection)null); // Assert var exception = Assert.Throws(test); @@ -430,6 +464,29 @@ } [Test] + public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_FailureMechanismsNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms((IEnumerable)null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("failureMechanisms", exception.ParamName); + } + + [Test] + [TestCaseSource(nameof(FailureMechanisms))] + public void GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms_FailureMechanismsGrassCoverOutwardsAndDuneLocations_ReturnsExpectedAffectedCollections(IEnumerable availableFailureMechanisms, + IEnumerable expectedCollections) + { + // Call + IEnumerable affectedCollections = RingtoetsDataSynchronizationService.GetHydraulicBoundaryLocationCollectionsOfFailureMechanisms(availableFailureMechanisms); + + // Assert + CollectionAssert.AreEquivalent(expectedCollections, affectedCollections); + } + + [Test] public void ClearReferenceLine_AssessmentSectionNull_ThrowArgumentNullException() { // Call