Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Forms/PresentationObjects/HydraulicBoundaryDatabaseContext.cs =================================================================== diff -u -r06f9145d8180df7fd26eac086a3f431c181e4d64 -rdd06f9ed513bb87a09d386f279130f98a927754e --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Forms/PresentationObjects/HydraulicBoundaryDatabaseContext.cs (.../HydraulicBoundaryDatabaseContext.cs) (revision 06f9145d8180df7fd26eac086a3f431c181e4d64) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Forms/PresentationObjects/HydraulicBoundaryDatabaseContext.cs (.../HydraulicBoundaryDatabaseContext.cs) (revision dd06f9ed513bb87a09d386f279130f98a927754e) @@ -58,5 +58,36 @@ return parent; } } + + #region Equal implementation + + private bool Equals(HydraulicBoundaryDatabaseContext other) + { + return Equals(parent, other.parent); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + if (obj.GetType() != GetType()) + { + return false; + } + return Equals((HydraulicBoundaryDatabaseContext) obj); + } + + public override int GetHashCode() + { + return (parent != null ? parent.GetHashCode() : 0); + } + + #endregion } } \ No newline at end of file Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Forms.Test/PresentationObjects/HydraulicBoundaryDatabaseContextTest.cs =================================================================== diff -u -r06f9145d8180df7fd26eac086a3f431c181e4d64 -rdd06f9ed513bb87a09d386f279130f98a927754e --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Forms.Test/PresentationObjects/HydraulicBoundaryDatabaseContextTest.cs (.../HydraulicBoundaryDatabaseContextTest.cs) (revision 06f9145d8180df7fd26eac086a3f431c181e4d64) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Forms.Test/PresentationObjects/HydraulicBoundaryDatabaseContextTest.cs (.../HydraulicBoundaryDatabaseContextTest.cs) (revision dd06f9ed513bb87a09d386f279130f98a927754e) @@ -23,7 +23,6 @@ using Core.Common.Base; using NUnit.Framework; using Rhino.Mocks; -using Ringtoets.HydraRing.Data; using Ringtoets.HydraRing.Forms.PresentationObjects; using Ringtoets.Integration.Data; @@ -103,5 +102,119 @@ // Assert mocks.VerifyAll(); // Expect not calls on 'observer' } + + [Test] + public void Equals_EqualsWithItself_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var context = new HydraulicBoundaryDatabaseContext(assessmentSection); + + // Call + var isEqual = context.Equals(context); + + // Assert + Assert.IsTrue(isEqual); + } + + [Test] + public void Equals_EqualsWithNull_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var context = new HydraulicBoundaryDatabaseContext(assessmentSection); + + // Call + var isEqual = context.Equals(null); + + // Assert + Assert.IsFalse(isEqual); + } + + [Test] + public void Equals_EqualsWithOtherTypeOfObject_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var context = new HydraulicBoundaryDatabaseContext(assessmentSection); + + var objectOfDifferentType = new object(); + + // Call + var isEqual = context.Equals(objectOfDifferentType); + + // Assert + Assert.IsFalse(isEqual); + } + + [Test] + public void Equals_EqualsWithOtherEqualMapData_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + object context1 = new HydraulicBoundaryDatabaseContext(assessmentSection); + HydraulicBoundaryDatabaseContext context2 = new HydraulicBoundaryDatabaseContext(assessmentSection); + + // Call + var isEqual1 = context1.Equals(context2); + var isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsTrue(isEqual1); + Assert.IsTrue(isEqual2); + } + + [Test] + public void Equals_TwoUnequalAssessmentSectionMapDataInstances_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection1 = mocks.Stub(); + var assessmentSection2 = mocks.Stub(); + mocks.ReplayAll(); + + object context1 = new HydraulicBoundaryDatabaseContext(assessmentSection1); + HydraulicBoundaryDatabaseContext context2 = new HydraulicBoundaryDatabaseContext(assessmentSection2); + + // Call + var isEqual1 = context1.Equals(context2); + var isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + } + + + [Test] + public void GetHashCode_TwoEqualAssessmentSectionMapDataInstances_ReturnSameHash() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + object context1 = new HydraulicBoundaryDatabaseContext(assessmentSection); + HydraulicBoundaryDatabaseContext context2 = new HydraulicBoundaryDatabaseContext(assessmentSection); + + // Call + int hash1 = context1.GetHashCode(); + int hash2 = context2.GetHashCode(); + + // Assert + Assert.AreEqual(hash1, hash2); + } } } \ No newline at end of file