/// <summary> /// Gets the hash code. /// </summary> /// <returns>The hash code.</returns> public override int GetHashCode() { // see Effective Java by Joshua Bloch int hash = 17; hash = 37 * hash + chunkSize.GetHashCode(); hash = 37 * hash + root.GetHashCode(); hash = 37 * hash + safeMode.GetHashCode(); return(hash); }
/// <summary> /// Gets the hash code. /// </summary> /// <returns>The hash code.</returns> public override int GetHashCode() { if (_isFrozen) { return(_frozenHashCode); } // see Effective Java by Joshua Bloch int hash = 17; hash = 37 * hash + _chunkSize.GetHashCode(); hash = 37 * hash + _root.GetHashCode(); hash = 37 * hash + _safeMode.GetHashCode(); return(hash); }
public void TestEquals() { var a1 = new SafeMode(false); var a2 = new SafeMode(true) { Enabled = false }; var a3 = a2; var b = new SafeMode(false) { Enabled = true }; var c = new SafeMode(false) { FSync = true }; var d = new SafeMode(false) { Journal = true }; var e = new SafeMode(false) { W = 2 }; var f = new SafeMode(false) { WMode = "mode" }; var g = new SafeMode(false) { W = 2, WTimeout = TimeSpan.FromMinutes(1) }; var null1 = (SafeMode)null; var null2 = (SafeMode)null; Assert.AreNotSame(a1, a2); Assert.AreSame(a2, a3); Assert.IsTrue(a1.Equals((object)a2)); Assert.IsFalse(a1.Equals((object)null)); Assert.IsFalse(a1.Equals((object)"x")); Assert.IsTrue(a1 == a2); Assert.IsTrue(a2 == a3); Assert.IsFalse(a1 == b); Assert.IsFalse(a1 == c); Assert.IsFalse(a1 == d); Assert.IsFalse(a1 == e); Assert.IsFalse(a1 == f); Assert.IsFalse(a1 == g); Assert.IsFalse(a1 == null1); Assert.IsFalse(null1 == a1); Assert.IsTrue(null1 == null2); Assert.IsFalse(a1 != a2); Assert.IsFalse(a2 != a3); Assert.IsTrue(a1 != b); Assert.IsTrue(a1 != c); Assert.IsTrue(a1 != d); Assert.IsTrue(a1 != e); Assert.IsTrue(a1 != f); Assert.IsTrue(a1 != g); Assert.IsTrue(a1 != null1); Assert.IsTrue(null1 != a1); Assert.IsFalse(null1 != null2); var hash = a1.GetHashCode(); Assert.AreEqual(hash, a2.GetHashCode()); // check that all tests still pass after objects are Frozen a1.Freeze(); a2.Freeze(); a3.Freeze(); b.Freeze(); c.Freeze(); d.Freeze(); e.Freeze(); f.Freeze(); g.Freeze(); Assert.AreNotSame(a1, a2); Assert.AreSame(a2, a3); Assert.IsTrue(a1.Equals((object)a2)); Assert.IsFalse(a1.Equals((object)null)); Assert.IsFalse(a1.Equals((object)"x")); Assert.IsTrue(a1 == a2); Assert.IsTrue(a2 == a3); Assert.IsFalse(a1 == b); Assert.IsFalse(a1 == c); Assert.IsFalse(a1 == d); Assert.IsFalse(a1 == e); Assert.IsFalse(a1 == f); Assert.IsFalse(a1 == g); Assert.IsFalse(a1 == null1); Assert.IsFalse(null1 == a1); Assert.IsTrue(null1 == null2); Assert.IsFalse(a1 != a2); Assert.IsFalse(a2 != a3); Assert.IsTrue(a1 != b); Assert.IsTrue(a1 != c); Assert.IsTrue(a1 != d); Assert.IsTrue(a1 != e); Assert.IsTrue(a1 != f); Assert.IsTrue(a1 != g); Assert.IsTrue(a1 != null1); Assert.IsTrue(null1 != a1); Assert.IsFalse(null1 != null2); Assert.AreEqual(hash, a1.GetHashCode()); Assert.AreEqual(hash, a2.GetHashCode()); }