public void EqualsAndHash() { Joint joint = new Joint.Builder("joint", Joint.JointType.Continuous, new Link.Builder("parent").Build(), new Link.Builder("child").Build()).Build(); Joint same = new Joint.Builder("joint", Joint.JointType.Continuous, new Link.Builder("parent").Build(), new Link.Builder("child").Build()).Build(); Joint diff1 = new Joint.Builder("different_joint", Joint.JointType.Continuous, new Link.Builder("parent").Build(), new Link.Builder("child").Build()).Build(); Joint diff2 = new Joint.Builder("joint", Joint.JointType.Fixed, new Link.Builder("parent").Build(), new Link.Builder("child").Build()).Build(); Joint diff3 = new Joint.Builder("joint", Joint.JointType.Continuous, new Link.Builder("differnt_parent").Build(), new Link.Builder("child").Build()).Build(); Joint diff4 = new Joint.Builder("joint", Joint.JointType.Continuous, new Link.Builder("parent").Build(), new Link.Builder("different_child").Build()).Build(); Assert.IsTrue(joint.Equals(joint)); Assert.IsFalse(joint.Equals(null)); Assert.IsTrue(joint.Equals(same)); Assert.IsTrue(same.Equals(joint)); Assert.IsFalse(joint.Equals(diff1)); Assert.IsFalse(joint.Equals(diff2)); Assert.IsFalse(joint.Equals(diff3)); Assert.IsFalse(joint.Equals(diff4)); Assert.AreEqual(joint.GetHashCode(), joint.GetHashCode()); Assert.AreEqual(joint.GetHashCode(), same.GetHashCode()); Assert.AreNotEqual(joint.GetHashCode(), diff1.GetHashCode()); Assert.AreNotEqual(joint.GetHashCode(), diff2.GetHashCode()); Assert.AreNotEqual(joint.GetHashCode(), diff3.GetHashCode()); Assert.AreNotEqual(joint.GetHashCode(), diff4.GetHashCode()); }