public void testHashCode()
{
Term cons1 = new Constant("C1");
Term cons2 = new Constant("C2");
Term var1 = new Variable("v1");
List<Term> pts1 = new List<Term>();
List<Term> pts2 = new List<Term>();
pts1.Add(cons1);
pts1.Add(cons2);
pts1.Add(var1);
pts2.Add(cons2);
pts2.Add(cons1);
pts2.Add(var1);
Clause c1 = new Clause();
Clause c2 = new Clause();
Assert.AreEqual(c1.GetHashCode(), c2.GetHashCode());
c1.addNegativeLiteral(new Predicate("Pred1", pts1));
Assert.AreNotSame(c1.GetHashCode(), c2.GetHashCode());
c2.addNegativeLiteral(new Predicate("Pred1", pts1));
Assert.AreEqual(c1.GetHashCode(), c2.GetHashCode());
c1.addPositiveLiteral(new Predicate("Pred1", pts1));
Assert.AreNotSame(c1.GetHashCode(), c2.GetHashCode());
c2.addPositiveLiteral(new Predicate("Pred1", pts1));
Assert.AreEqual(c1.GetHashCode(), c2.GetHashCode());
}