using UnitTestSharp; namespace Vellum.UnitTests { public class ReferenceComparerTests : TestFixture { public class EqualsTests : TestFixture { public void SameObject_IsEqual() { var stamp = new Stamp { Id = "a" }; CheckTrue(ReferenceComparer.Instance.Equals(stamp, stamp)); } public void EqualButDistinctObjects_AreNotEqual() { CheckFalse(ReferenceComparer.Instance.Equals(new Stamp { Id = "a" }, new Stamp { Id = "a" })); } public void Strings_AreComparedByIdentityToo() { string first = new string('a', 3); string second = new string('a', 3); CheckFalse(ReferenceComparer.Instance.Equals(first, second)); } public void TwoNulls_AreEqual() { CheckTrue(ReferenceComparer.Instance.Equals(null, null)); } } public class GetHashCodeTests : TestFixture { public void SameObject_HasTheSameHashCode() { var stamp = new Stamp { Id = "a" }; int first = ReferenceComparer.Instance.GetHashCode(stamp); CheckEqual(first, ReferenceComparer.Instance.GetHashCode(stamp)); } public void ObjectOverridingGetHashCode_IsHashedByIdentity() { var stamp = new Stamp { Id = "a" }; int before = ReferenceComparer.Instance.GetHashCode(stamp); stamp.Id = "b"; CheckEqual(before, ReferenceComparer.Instance.GetHashCode(stamp)); } } } }