Beispiel #1
0
 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());
 }
Beispiel #2
0
        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
        }