public void Equals()
{
List list1 = List.MakeList(new object[] { 1, 2, 3 });
List list1b = List.MakeList(new object[] { 1, 2, 3 }, new Variable("X"));
List list2 = List.MakeList(new object[] { 1, 2, 4 });
List list3 = List.MakeList(new object[] { 1, 2 });
List list4 = List.MakeList(new object[] { 1, 2, 3 });
List list4b = List.MakeList(new object[] { 1, 2, 3 }, new Variable("X"));
Assert.AreEqual(list1, list4);
Assert.AreEqual(list4, list1);
Assert.AreEqual(list1b, list4b);
Assert.AreEqual(list4b, list1b);
Assert.AreEqual(list1.GetHashCode(), list4.GetHashCode());
Assert.AreEqual(list1b.GetHashCode(), list4b.GetHashCode());
Assert.IsFalse(list1.Equals(null));
Assert.IsFalse(list1.Equals(1));
Assert.IsFalse(list1.Equals("foo"));
Assert.AreNotEqual(list1, list2);
Assert.AreNotEqual(list2, list1);
Assert.AreNotEqual(list1, list3);
Assert.AreNotEqual(list3, list1);
}