summaryrefslogtreecommitdiff
path: root/Source/UnitTests
diff options
context:
space:
mode:
authorGravatar Dan Liew <daniel.liew@imperial.ac.uk>2015-01-29 09:20:52 +0000
committerGravatar Dan Liew <daniel.liew@imperial.ac.uk>2015-01-29 09:20:52 +0000
commit07479d57e747cac41ffe4380165225dd4502f7b3 (patch)
treedbd3d35e40175c7fa6d21569c93cd33abd1ca267 /Source/UnitTests
parent3eb1b720b8222b6415bed0faed12bd7b04ca5425 (diff)
Add unit tests to check that ComputeHashCode() and GetHashCode() agree
for LiteralExpr, IdentifierExpr and NAryExpr.
Diffstat (limited to 'Source/UnitTests')
-rw-r--r--Source/UnitTests/CoreTests/ExprImmutability.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/Source/UnitTests/CoreTests/ExprImmutability.cs b/Source/UnitTests/CoreTests/ExprImmutability.cs
index 9a9536c1..a1c08e9e 100644
--- a/Source/UnitTests/CoreTests/ExprImmutability.cs
+++ b/Source/UnitTests/CoreTests/ExprImmutability.cs
@@ -16,6 +16,40 @@ namespace CoreTests
// Cached hashcode checkers
[Test()]
+ public void CachedHashCodeLiteralExpr()
+ {
+ var literal = new LiteralExpr(Token.NoToken, true, /*immutable=*/true);
+ Assert.AreEqual(literal.ComputeHashCode(), literal.GetHashCode());
+
+ var literal2 = new LiteralExpr(Token.NoToken, Microsoft.Basetypes.BigNum.FromInt(0), /*immutable=*/true);
+ Assert.AreEqual(literal2.ComputeHashCode(), literal2.GetHashCode());
+
+ var literal3 = new LiteralExpr(Token.NoToken, Microsoft.Basetypes.BigDec.FromInt(0), /*immutable=*/true);
+ Assert.AreEqual(literal3.ComputeHashCode(), literal3.GetHashCode());
+
+ var literal4 = new LiteralExpr(Token.NoToken, Microsoft.Basetypes.BigNum.FromInt(0), 8, /*immutable=*/true);
+ Assert.AreEqual(literal4.ComputeHashCode(), literal4.GetHashCode());
+ }
+
+ [Test()]
+ public void CachedHashCodeIdentifierExpr()
+ {
+ var id = new IdentifierExpr(Token.NoToken, "foo", BasicType.Bool, /*immutable=*/true);
+ Assert.AreEqual(id.ComputeHashCode(), id.GetHashCode());
+
+ var variable = new BoundVariable(Token.NoToken, new TypedIdent(Token.NoToken, "foo2", BasicType.Int));
+ var id2 = new IdentifierExpr(Token.NoToken, variable, /*immutable=*/true);
+ Assert.AreEqual(id2.ComputeHashCode(), id2.GetHashCode());
+ }
+
+ [Test()]
+ public void CachedHashCodeNAryExpr()
+ {
+ var nary = new NAryExpr(Token.NoToken, new UnaryOperator(Token.NoToken, UnaryOperator.Opcode.Not), new List<Expr>() { Expr.True }, /*immutable=*/true);
+ Assert.AreEqual(nary.ComputeHashCode(), nary.GetHashCode());
+ }
+
+ [Test()]
public void CachedHashCodeForAllExpr()
{
var x = new BoundVariable(Token.NoToken, new TypedIdent(Token.NoToken, "x", BasicType.Int));