Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresDataSynchronizationServiceTest.cs =================================================================== diff -u -r12cec002453a1828efc68633fbd25219632c6c47 -r3ce69e451a97f622288b172d1dcef1ac3fbc9bc1 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresDataSynchronizationServiceTest.cs (.../HeightStructuresDataSynchronizationServiceTest.cs) (revision 12cec002453a1828efc68633fbd25219632c6c47) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresDataSynchronizationServiceTest.cs (.../HeightStructuresDataSynchronizationServiceTest.cs) (revision 3ce69e451a97f622288b172d1dcef1ac3fbc9bc1) @@ -308,169 +308,6 @@ CollectionAssert.AreEquivalent(expectedRemovedObjects, results.RemovedObjects); } - [Test] - public void RemoveHeightStructure_FullyConfiguredFailureMechanism_RemovesStructureAndClearsDependentData() - { - // Setup - HeightStructuresFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(); - HeightStructure structure = failureMechanism.HeightStructures[0]; - StructuresCalculation[] calculationsWithStructure = failureMechanism.Calculations - .Cast>() - .Where(c => ReferenceEquals(c.InputParameters.Structure, structure)) - .ToArray(); - HeightStructuresFailureMechanismSectionResult[] sectionResultsWithStructure = failureMechanism.SectionResults - .Where(sr => calculationsWithStructure.Contains(sr.Calculation)) - .ToArray(); - StructuresCalculation[] calculationsWithOutput = calculationsWithStructure.Where(c => c.HasOutput) - .ToArray(); - - int originalNumberOfSectionResultAssignments = failureMechanism.SectionResults.Count(sr => sr.Calculation != null); - HeightStructuresFailureMechanismSectionResult[] sectionResults = failureMechanism.SectionResults - .Where(sr => calculationsWithStructure.Contains(sr.Calculation)) - .ToArray(); - - // Precondition - CollectionAssert.IsNotEmpty(calculationsWithOutput); - CollectionAssert.IsNotEmpty(calculationsWithStructure); - CollectionAssert.IsNotEmpty(sectionResultsWithStructure); - - // Call - IEnumerable affectedObjects = RingtoetsCommonDataSynchronizationService.RemoveStructure( - structure, - failureMechanism.Calculations.Cast>(), - failureMechanism.HeightStructures, - failureMechanism.SectionResults); - - // 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.DoesNotContain(failureMechanism.HeightStructures, structure); - foreach (StructuresCalculation calculation in calculationsWithStructure) - { - Assert.IsNull(calculation.InputParameters.Structure); - } - foreach (StructuresCalculation calculation in calculationsWithOutput) - { - Assert.IsFalse(calculation.HasOutput); - } - foreach (HeightStructuresFailureMechanismSectionResult sectionResult in sectionResultsWithStructure) - { - Assert.IsNull(sectionResult.Calculation); - } - - IObservable[] array = affectedObjects.ToArray(); - Assert.AreEqual(1 + calculationsWithOutput.Length + calculationsWithStructure.Length + sectionResultsWithStructure.Length, - array.Length); - CollectionAssert.Contains(array, failureMechanism.HeightStructures); - foreach (StructuresCalculation calculation in calculationsWithStructure) - { - CollectionAssert.Contains(array, calculation.InputParameters); - } - foreach (StructuresCalculation calculation in calculationsWithOutput) - { - CollectionAssert.Contains(array, calculation); - } - foreach (HeightStructuresFailureMechanismSectionResult result in sectionResultsWithStructure) - { - CollectionAssert.Contains(array, result); - } - Assert.AreEqual(originalNumberOfSectionResultAssignments - sectionResults.Length, failureMechanism.SectionResults.Count(sr => sr.Calculation != null), - "Other section results with a different calculation/structure should still have their association."); - } - - [Test] - public void RemoveAllStructures_CalculationsNull_ThrowsArgumentNullException() - { - // Call - TestDelegate call = () => RingtoetsCommonDataSynchronizationService.RemoveAllStructures( - null, - new StructureCollection(), - Enumerable.Empty>()); - - // Assert - string paramName = Assert.Throws(call).ParamName; - Assert.AreEqual("calculations", paramName); - } - - [Test] - public void RemoveAllStructures_StructuresNull_ThrowsArgumentNullException() - { - // Call - TestDelegate call = () => RingtoetsCommonDataSynchronizationService.RemoveAllStructures( - Enumerable.Empty>(), - null, - Enumerable.Empty>()); - - // Assert - string paramName = Assert.Throws(call).ParamName; - Assert.AreEqual("structures", paramName); - } - - [Test] - public void RemoveAllStructures_SectionResultsNull_ThrowsArgumentNullException() - { - // Call - TestDelegate call = () => RingtoetsCommonDataSynchronizationService.RemoveAllStructures( - Enumerable.Empty>(), - new StructureCollection(), - null); - - // Assert - string paramName = Assert.Throws(call).ParamName; - Assert.AreEqual("sectionResults", paramName); - } - - [Test] - public void RemoveAllStructures_FullyConfiguredFailureMechanism_RemoveAllHeightStructuresAndClearDependentData() - { - // Setup - HeightStructuresFailureMechanism failureMechanism = CreateFullyConfiguredFailureMechanism(); - StructuresCalculation[] calculationsWithStructure = failureMechanism.Calculations - .Cast>() - .Where(calc => calc.InputParameters.Structure != null) - .ToArray(); - StructuresCalculation[] calculationsWithOutput = calculationsWithStructure.Where(c => c.HasOutput) - .ToArray(); - - HeightStructuresFailureMechanismSectionResult[] sectionResultsWithStructure = failureMechanism.SectionResults - .Where(sr => calculationsWithStructure.Contains(sr.Calculation)) - .ToArray(); - - // Precondition - CollectionAssert.IsNotEmpty(calculationsWithStructure); - - // Call - IEnumerable observables = RingtoetsCommonDataSynchronizationService.RemoveAllStructures( - failureMechanism.Calculations.Cast>(), - failureMechanism.HeightStructures, - failureMechanism.SectionResults); - - // 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.IsEmpty(failureMechanism.HeightStructures); - foreach (StructuresCalculation calculation in calculationsWithStructure) - { - Assert.IsNull(calculation.InputParameters.Structure); - } - - foreach (StructuresCalculation calculation in calculationsWithOutput) - { - Assert.IsFalse(calculation.HasOutput); - } - - IEnumerable expectedAffectedObjects = - calculationsWithStructure.Select(calc => calc.InputParameters) - .Cast() - .Concat(calculationsWithOutput) - .Concat(sectionResultsWithStructure) - .Concat(new IObservable[] - { - failureMechanism.HeightStructures - }); - CollectionAssert.AreEquivalent(expectedAffectedObjects, observables); - } - private HeightStructuresFailureMechanism CreateFullyConfiguredFailureMechanism() { var section1 = new FailureMechanismSection("A", new[]