Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PresentationObjects/GrassCoverErosionOutwardsHydraulicBoundaryLocationContext.cs =================================================================== diff -u -r8db89aecb3565f4784cedd541e7407e8360b6a6f -rc88515b6259adb2c94f3dad04dc635afa3382d22 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PresentationObjects/GrassCoverErosionOutwardsHydraulicBoundaryLocationContext.cs (.../GrassCoverErosionOutwardsHydraulicBoundaryLocationContext.cs) (revision 8db89aecb3565f4784cedd541e7407e8360b6a6f) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PresentationObjects/GrassCoverErosionOutwardsHydraulicBoundaryLocationContext.cs (.../GrassCoverErosionOutwardsHydraulicBoundaryLocationContext.cs) (revision c88515b6259adb2c94f3dad04dc635afa3382d22) @@ -57,5 +57,15 @@ /// Gets the . /// public HydraulicBoundaryLocation HydraulicBoundaryLocation { get; private set; } + + public override bool Equals(WrappedObjectContextBase> other) + { + return base.Equals(other) && ReferenceEquals(((GrassCoverErosionOutwardsHydraulicBoundaryLocationContext) other).HydraulicBoundaryLocation, HydraulicBoundaryLocation); + } + + public override int GetHashCode() + { + return base.GetHashCode() ^ HydraulicBoundaryLocation.GetHashCode(); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PresentationObjects/GrassCoverErosionOutwardsHydraulicBoundaryLocationContextTest.cs =================================================================== diff -u -re42bdf3dd379c46bab9212eb7b30f4754c9bc91c -rc88515b6259adb2c94f3dad04dc635afa3382d22 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PresentationObjects/GrassCoverErosionOutwardsHydraulicBoundaryLocationContextTest.cs (.../GrassCoverErosionOutwardsHydraulicBoundaryLocationContextTest.cs) (revision e42bdf3dd379c46bab9212eb7b30f4754c9bc91c) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PresentationObjects/GrassCoverErosionOutwardsHydraulicBoundaryLocationContextTest.cs (.../GrassCoverErosionOutwardsHydraulicBoundaryLocationContextTest.cs) (revision c88515b6259adb2c94f3dad04dc635afa3382d22) @@ -64,6 +64,114 @@ Assert.AreSame(hydraulicBoundaryLocation, presentationObject.HydraulicBoundaryLocation); } + [Test] + public void Equals_ToNull_ReturnFalse() + { + // Setup + var hydraulicBoundaryLocationList = new ObservableList(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "Name", 2.0, 3.0); + + var context = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation); + + // Call + var isEqual = context.Equals(null); + + // Assert + Assert.IsFalse(isEqual); + } + + [Test] + public void Equals_ToItself_ReturnTrue() + { + // Setup + var hydraulicBoundaryLocationList = new ObservableList(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "Name", 2.0, 3.0); + + var context = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation); + + // Call + var isEqual = context.Equals(context); + + // Assert + Assert.IsTrue(isEqual); + } + + [Test] + public void Equals_ToOtherWithDifferentLocationListAndSameLocation_ReturnFalse() + { + // Setup + var hydraulicBoundaryLocationList1 = new ObservableList(); + var hydraulicBoundaryLocationList2 = new ObservableList(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "Name", 2.0, 3.0); + var context1 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList1, hydraulicBoundaryLocation); + var context2 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList2, hydraulicBoundaryLocation); + + // Call + var isEqual1 = context1.Equals(context2); + var isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + } + + [Test] + public void Equals_ToOtherWithSameLocationListAndDifferentLocation_ReturnFalse() + { + // Setup + var hydraulicBoundaryLocationList = new ObservableList(); + var hydraulicBoundaryLocation1 = new HydraulicBoundaryLocation(1, "First name", 2.0, 3.0); + var hydraulicBoundaryLocation2 = new HydraulicBoundaryLocation(2, "Second name", 4.0, 5.0); + var context1 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation1); + var context2 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation2); + + // Call + var isEqual1 = context1.Equals(context2); + var isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + } + + [Test] + public void Equals_ToOtherWithSameLocationListAndSameLocation_ReturnTrue() + { + // Setup + var hydraulicBoundaryLocationList = new ObservableList(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "Name", 2.0, 3.0); + var context1 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation); + var context2 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation); + + // Call + var isEqual1 = context1.Equals(context2); + var isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsTrue(isEqual1); + Assert.IsTrue(isEqual2); + } + + [Test] + public void GetHashCode_EqualObjects_ReturnSameHashCode() + { + // Setup + var hydraulicBoundaryLocationList = new ObservableList(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "Name", 2.0, 3.0); + var context1 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation); + var context2 = new TestGrassCoverErosionOutwardsLocationContext(hydraulicBoundaryLocationList, hydraulicBoundaryLocation); + + // Precondition + Assert.AreEqual(context1, context2); + + // Call + var hashCode1 = context1.GetHashCode(); + var hashCode2 = context2.GetHashCode(); + + // Assert + Assert.AreEqual(hashCode1, hashCode2); + } + private class TestGrassCoverErosionOutwardsLocationContext : GrassCoverErosionOutwardsHydraulicBoundaryLocationContext { public TestGrassCoverErosionOutwardsLocationContext(ObservableList observable,