public void ValidateEquality() { var one = new DirectoryNode(TargetDirectory, null); var oneRef = one; var oneToo = new DirectoryNode(TargetDirectory, null); var two = new DirectoryNode(TargetDirectory.Parent, null); Assert.IsTrue(one.Equals(oneRef)); oneRef = null; // ReSharper disable ExpressionIsAlwaysNull Assert.IsFalse(one.Equals(oneRef)); // ReSharper restore ExpressionIsAlwaysNull Assert.AreEqual(one, oneToo); Assert.AreEqual(one.GetHashCode(), oneToo.GetHashCode()); Assert.AreEqual(one.ToString(), oneToo.ToString()); Assert.AreNotEqual(one, two); var shouldBeTrue = one == oneToo; Assert.IsTrue(shouldBeTrue); var shouldBeFalse = one != oneToo; Assert.IsFalse(shouldBeFalse); Assert.IsFalse(one.Equals(new object())); }