Index: Core/Common/src/Core.Common.Controls/PresentationObjects/WrappedObjectContextBase.cs =================================================================== diff -u -r33bb120fbaf0452934a7762b24d675201325e774 -r676ded0dcba61b9a3e54cd7e946a4e4ba3eaeb43 --- Core/Common/src/Core.Common.Controls/PresentationObjects/WrappedObjectContextBase.cs (.../WrappedObjectContextBase.cs) (revision 33bb120fbaf0452934a7762b24d675201325e774) +++ Core/Common/src/Core.Common.Controls/PresentationObjects/WrappedObjectContextBase.cs (.../WrappedObjectContextBase.cs) (revision 676ded0dcba61b9a3e54cd7e946a4e4ba3eaeb43) @@ -71,18 +71,18 @@ { return false; } + if (obj.GetType() != GetType()) + { + return false; + } if (ReferenceEquals(this, obj)) { return true; } + return Equals(obj as WrappedObjectContextBase); } - public override int GetHashCode() - { - return WrappedData.GetHashCode(); - } - #endregion } } \ No newline at end of file Index: Core/Common/test/Core.Common.Controls.Test/PresentationObjects/WrappedObjectContextBaseTest.cs =================================================================== diff -u -r33bb120fbaf0452934a7762b24d675201325e774 -r676ded0dcba61b9a3e54cd7e946a4e4ba3eaeb43 --- Core/Common/test/Core.Common.Controls.Test/PresentationObjects/WrappedObjectContextBaseTest.cs (.../WrappedObjectContextBaseTest.cs) (revision 33bb120fbaf0452934a7762b24d675201325e774) +++ Core/Common/test/Core.Common.Controls.Test/PresentationObjects/WrappedObjectContextBaseTest.cs (.../WrappedObjectContextBaseTest.cs) (revision 676ded0dcba61b9a3e54cd7e946a4e4ba3eaeb43) @@ -81,13 +81,32 @@ } [Test] - public void Equals_ToOtherValueType_ReturnFalse() + public void Equals_ToItself_ReturnTrue() { // Setup var mocks = new MockRepository(); var sourceObject = mocks.Stub(); mocks.ReplayAll(); + var context = new SimpleWrappedObjectContext(sourceObject); + + // Call + var isEqual = context.Equals(context); + + // Assert + Assert.IsTrue(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentWrappedType_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var sourceObject = mocks.Stub(); + mocks.ReplayAll(); + var context1 = new SimpleWrappedObjectContext(sourceObject); var context2 = new SimpleWrappedObjectContext>(Enumerable.Empty()); @@ -103,7 +122,7 @@ } [Test] - public void Equals_ToOtherValueOfSameType_ReturnFalse() + public void Equals_ToOtherWithDifferentWrappedData_ReturnFalse() { // Setup var sourceObj1 = new object(); @@ -127,26 +146,29 @@ } [Test] - public void Equals_ToItself_ReturnTrue() + public void Equals_ToOtherWithDifferentContextType_ReturnFalse() { // Setup var mocks = new MockRepository(); var sourceObject = mocks.Stub(); mocks.ReplayAll(); - var context = new SimpleWrappedObjectContext(sourceObject); + var context1 = new SimpleWrappedObjectContext(sourceObject); + object context2 = new AnotherSimpleWrappedObjectContext(sourceObject); // Call - var isEqual = context.Equals(context); + var isEqual1 = context1.Equals(context2); + var isEqual2 = context1.Equals(context2); // Assert - Assert.IsTrue(isEqual); + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); mocks.VerifyAll(); } [Test] - public void Equals_ToOtherEqualInstance_ReturnTrue() + public void Equals_ToOtherWithSameWrappedData_ReturnTrue() { // Setup var mocks = new MockRepository(); @@ -167,31 +189,14 @@ mocks.VerifyAll(); } - [Test] - public void GetHashCode_EqualObjects_ReturnSameHashCode() + private class SimpleWrappedObjectContext : WrappedObjectContextBase { - // Setup - var sourceObject = new object(); - var sourceObject1 = new SimpleEquatable(sourceObject); - var sourceObject2 = new SimpleEquatable(sourceObject); - - var context1 = new SimpleWrappedObjectContext(sourceObject1); - object context2 = new SimpleWrappedObjectContext(sourceObject2); - - // Precondition: - Assert.AreEqual(context1, context2); - - // Call - var hashCode1 = context1.GetHashCode(); - var hashCode2 = context2.GetHashCode(); - - // Assert - Assert.AreEqual(hashCode1, hashCode2); + public SimpleWrappedObjectContext(T wrappedData) : base(wrappedData) {} } - private class SimpleWrappedObjectContext : WrappedObjectContextBase + private class AnotherSimpleWrappedObjectContext : WrappedObjectContextBase { - public SimpleWrappedObjectContext(T wrappedData) : base(wrappedData) {} + public AnotherSimpleWrappedObjectContext(T wrappedData) : base(wrappedData) { } } private class SimpleEquatable : IEquatable