/// <summary> /// Returns a hash code for this instance. /// </summary> /// <returns> /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. /// </returns> public override int GetHashCode() { unchecked { // ReSharper disable NonReadonlyMemberInGetHashCode - Properties are only set by persistence return(((BudgetBucket?.GetHashCode() ?? 0) * 397) ^ (StoredInAccount?.GetHashCode() ?? 0)); // ReSharper restore NonReadonlyMemberInGetHashCode } }
public void TwoBucketsAreTheSameIfCodesAreEqual() { BudgetBucket subject1 = Arrange("Foo", "Name"); BudgetBucket subject2 = Arrange("Foo", "Name"); Assert.AreEqual(subject1, subject2); Assert.IsTrue(subject1 == subject2); Assert.AreEqual(subject1.GetHashCode(), subject2.GetHashCode()); }
public void TwoReferencesToTheSameObjectAreEqual() { BudgetBucket subject1 = Arrange("Foo", "Name"); BudgetBucket subject2 = subject1; Assert.AreEqual(subject1, subject2); Assert.IsTrue(subject1 == subject2); Assert.AreEqual(subject1.GetHashCode(), subject2.GetHashCode()); }
public void TwoBucketsAreDifferentIfCodesAreDifferent() { BudgetBucket subject1 = Arrange("Foo1", "Name"); BudgetBucket subject2 = Arrange("Foo2", "Name"); Assert.AreNotEqual(subject1, subject2); Assert.IsTrue(subject1 != subject2); Assert.AreNotEqual(subject1.GetHashCode(), subject2.GetHashCode()); }
public void TwoReferencesToDifferentObjectsAreNotEqual() { BudgetBucket subject1 = Arrange("Foo", "Name"); BudgetBucket subject2 = Arrange("Ben", "Is Awesome"); Assert.AreNotEqual(subject1, subject2); Assert.IsTrue(subject1 != subject2); Assert.AreNotEqual(subject1.GetHashCode(), subject2.GetHashCode()); }