public void CachedHashCodeExistsExpr() { var x = new BoundVariable(Token.NoToken, new TypedIdent(Token.NoToken, "x", BasicType.Int)); var y = new BoundVariable(Token.NoToken, new TypedIdent(Token.NoToken, "x", BasicType.Int)); var body = Expr.Gt (new IdentifierExpr (Token.NoToken, x, /*immutable=*/true), new IdentifierExpr(Token.NoToken, y, /*immutable=*/true)); var exists = new ExistsExpr(Token.NoToken, new List<Variable> () {x, y }, body, /*immutable=*/ true); Assert.AreEqual(exists.ComputeHashCode(), exists.GetHashCode()); }
public void SimpleExists() { var boundVar = new BoundVariable(Token.NoToken, new TypedIdent(Token.NoToken,"foo",Microsoft.Boogie.Type.Bool)); var id = new IdentifierExpr(Token.NoToken, boundVar); var exists = new ExistsExpr(Token.NoToken, new List<Variable>() { boundVar }, id); var id2 = new IdentifierExpr(Token.NoToken, boundVar); var exists2 = new ExistsExpr(Token.NoToken, new List<Variable>() { boundVar }, id2); Assert.AreNotSame(exists, exists2); // These are different references Assert.IsTrue(exists.Equals(exists2)); // These are "structurally equal" Assert.AreEqual(exists.GetHashCode(), exists2.GetHashCode()); // If the .Equals() is true then hash codes must be the same }