示例#1
0
        public void DamageEqualsAndHashCode()
        {
            Damage damage = new Damage(DamageType.Chaos, 10, 2);

            //Using IsTrue/IsFalse to cover all paths (aren't covered, when using Equals)
            //Equal tests
            Assert.IsTrue(damage.Equals(damage));
            Assert.AreEqual(damage.GetHashCode(), damage.GetHashCode());

            object equal = new Damage(DamageType.Chaos, 10, 2);
            Assert.IsTrue(damage.Equals(equal));
            Assert.AreEqual(equal.GetHashCode(), damage.GetHashCode());

            //Not equal tests
            Assert.IsFalse(damage.Equals(null));

            object notEqual = new object();
            Assert.IsFalse(damage.Equals(notEqual));
            Assert.AreNotEqual(notEqual.GetHashCode(), damage.GetHashCode());

            notEqual = new Damage(DamageType.Magic, 10, 2);
            Assert.IsFalse(damage.Equals(notEqual));
            Assert.AreNotEqual(notEqual.GetHashCode(), damage.GetHashCode());

            notEqual = new Damage(DamageType.Chaos, 5, 2);
            Assert.IsFalse(damage.Equals(notEqual));
            Assert.AreNotEqual(notEqual.GetHashCode(), damage.GetHashCode());

            notEqual = new Damage(DamageType.Chaos, 10, 0);
            Assert.IsFalse(damage.Equals(notEqual));
            Assert.AreNotEqual(notEqual.GetHashCode(), damage.GetHashCode());
        }