public void Test_Equality() { #pragma warning disable 1718 // No warning for comparison to self. CardSet c1 = new CardSet { bits = 0x02 }; CardSet c2 = new CardSet { bits = 0xF0 }; CardSet c3 = new CardSet { bits = 0x02 }; object o1 = c1; object o2 = c2; object o3 = c3; Assert.IsTrue(c1 == c1); Assert.IsFalse(c1 != c1); Assert.IsTrue(c1.Equals(c1)); Assert.IsTrue(c1.Equals(o1)); Assert.IsTrue(o1.Equals(c1)); Assert.IsTrue(o1.Equals(o1)); Assert.IsTrue(object.Equals(c1, c1)); Assert.AreEqual(c1.GetHashCode(), c1.GetHashCode()); Assert.IsTrue(c1 == c3); Assert.IsFalse(c1 != c3); Assert.IsTrue(c1.Equals(c3)); Assert.IsTrue(c1.Equals(o3)); Assert.IsTrue(o1.Equals(c3)); Assert.IsTrue(o1.Equals(o3)); Assert.IsTrue(object.Equals(c1, c3)); Assert.AreEqual(c1.GetHashCode(), c3.GetHashCode()); Assert.IsFalse(c1 == c2); Assert.IsTrue(c1 != c2); Assert.IsFalse(c1.Equals(c2)); Assert.IsFalse(c1.Equals(o2)); Assert.IsFalse(o1.Equals(c2)); Assert.IsFalse(o1.Equals(o2)); Assert.IsFalse(object.Equals(c1, c2)); #pragma warning restore 1718 }