Index: Riskeer/Integration/src/Riskeer.Integration.Service/Comparers/AssessmentSectionMergeComparer.cs =================================================================== diff -u -rfdc2f4a655bcb8d2b7e3319067c5f9bcc5543e21 -r2d6e384d5520384b2c8b7dea57673bd6025bb615 --- Riskeer/Integration/src/Riskeer.Integration.Service/Comparers/AssessmentSectionMergeComparer.cs (.../AssessmentSectionMergeComparer.cs) (revision fdc2f4a655bcb8d2b7e3319067c5f9bcc5543e21) +++ Riskeer/Integration/src/Riskeer.Integration.Service/Comparers/AssessmentSectionMergeComparer.cs (.../AssessmentSectionMergeComparer.cs) (revision 2d6e384d5520384b2c8b7dea57673bd6025bb615) @@ -80,9 +80,21 @@ private static bool AreHydraulicBoundaryDataInstancesEquivalent(HydraulicBoundaryData hydraulicBoundaryData, HydraulicBoundaryData otherHydraulicBoundaryData) { - return hydraulicBoundaryData.Version == otherHydraulicBoundaryData.Version - && AreHydraulicLocationConfigurationDatabasesEquivalent(hydraulicBoundaryData.HydraulicLocationConfigurationDatabase, - otherHydraulicBoundaryData.HydraulicLocationConfigurationDatabase); + if (AreHydraulicLocationConfigurationDatabasesEquivalent( + hydraulicBoundaryData.HydraulicLocationConfigurationDatabase, otherHydraulicBoundaryData.HydraulicLocationConfigurationDatabase)) + { + for (var i = 0; i < hydraulicBoundaryData.HydraulicBoundaryDatabases.Count; i++) + { + if (!AreHydraulicBoundaryDatabasesEquivalent(hydraulicBoundaryData.HydraulicBoundaryDatabases[i], otherHydraulicBoundaryData.HydraulicBoundaryDatabases[i])) + { + return false; + } + } + + return true; + } + + return false; } private static bool AreHydraulicLocationConfigurationDatabasesEquivalent(HydraulicLocationConfigurationDatabase hydraulicLocationConfigurationDatabase, @@ -100,6 +112,13 @@ && hydraulicLocationConfigurationDatabase.Comment == otherHydraulicLocationConfigurationDatabase.Comment; } + private static bool AreHydraulicBoundaryDatabasesEquivalent(HydraulicBoundaryDatabase hydraulicBoundaryDatabase, + HydraulicBoundaryDatabase otherHydraulicBoundaryDatabase) + { + return hydraulicBoundaryDatabase.Version == otherHydraulicBoundaryDatabase.Version + && hydraulicBoundaryDatabase.UsePreprocessorClosure == otherHydraulicBoundaryDatabase.UsePreprocessorClosure; + } + private static bool AreFailureMechanismContributionsEquivalent(FailureMechanismContribution failureMechanismContribution, FailureMechanismContribution otherFailureMechanismContribution) { Index: Riskeer/Integration/test/Riskeer.Integration.Service.Test/Comparers/AssessmentSectionMergeComparerTest.cs =================================================================== diff -u -rfdc2f4a655bcb8d2b7e3319067c5f9bcc5543e21 -r2d6e384d5520384b2c8b7dea57673bd6025bb615 --- Riskeer/Integration/test/Riskeer.Integration.Service.Test/Comparers/AssessmentSectionMergeComparerTest.cs (.../AssessmentSectionMergeComparerTest.cs) (revision fdc2f4a655bcb8d2b7e3319067c5f9bcc5543e21) +++ Riskeer/Integration/test/Riskeer.Integration.Service.Test/Comparers/AssessmentSectionMergeComparerTest.cs (.../AssessmentSectionMergeComparerTest.cs) (revision 2d6e384d5520384b2c8b7dea57673bd6025bb615) @@ -150,6 +150,32 @@ Assert.IsFalse(result); } + [Test] + [TestCaseSource(nameof(GetAssessmentSectionWithNotEquivalentHydraulicBoundaryDatabaseTestCases))] + public void Compare_AssessmentSectionWithNotEquivalentHydraulicBoundaryDatabase_ReturnsFalse(AssessmentSection otherAssessmentSection) + { + // Setup + AssessmentSection assessmentSection = CreateAssessmentSection(); + assessmentSection.HydraulicBoundaryData.HydraulicBoundaryDatabases.Add(CreateHydraulicBoundaryDatabase()); + + var comparer = new AssessmentSectionMergeComparer(); + + // Call + bool result = comparer.Compare(assessmentSection, otherAssessmentSection); + + // Assert + Assert.IsFalse(result); + } + + private static HydraulicBoundaryDatabase CreateHydraulicBoundaryDatabase() + { + return new HydraulicBoundaryDatabase + { + Version = "Version", + UsePreprocessorClosure = false + }; + } + private static AssessmentSection CreateAssessmentSection() { var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike, 0.1, 0.025); @@ -206,9 +232,6 @@ sec => sec.Id = "DifferentVersion", "Id"); yield return new ChangePropertyData( - sec => sec.HydraulicBoundaryData.Version = "DifferentVersion", - "HydraulicBoundaryData"); - yield return new ChangePropertyData( sec => sec.FailureMechanismContribution.MaximumAllowableFloodingProbability -= 1e-15, "MaximumAllowableFloodingProbability"); yield return new ChangePropertyData( @@ -317,5 +340,27 @@ }, "Different Comment"); } + + private static IEnumerable GetAssessmentSectionWithNotEquivalentHydraulicBoundaryDatabaseTestCases() + { + foreach (ChangePropertyData changeSingleDataProperty in ChangeSingleDataOfHydraulicBoundaryDatabase()) + { + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = CreateHydraulicBoundaryDatabase(); + AssessmentSection assessmentSection = CreateAssessmentSection(); + assessmentSection.HydraulicBoundaryData.HydraulicBoundaryDatabases.Add(hydraulicBoundaryDatabase); + changeSingleDataProperty.ActionToChangeProperty(hydraulicBoundaryDatabase); + yield return new TestCaseData(assessmentSection).SetName(changeSingleDataProperty.PropertyName); + } + } + + private static IEnumerable> ChangeSingleDataOfHydraulicBoundaryDatabase() + { + yield return new ChangePropertyData( + hydraulicBoundaryDatabase => hydraulicBoundaryDatabase.Version = "Other Version", + "Different Version"); + yield return new ChangePropertyData( + hydraulicBoundaryDatabase => hydraulicBoundaryDatabase.UsePreprocessorClosure = !hydraulicBoundaryDatabase.UsePreprocessorClosure, + "Different UsePreprocessorClosure"); + } } } \ No newline at end of file