From 07479d57e747cac41ffe4380165225dd4502f7b3 Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Thu, 29 Jan 2015 09:20:52 +0000 Subject: Add unit tests to check that ComputeHashCode() and GetHashCode() agree for LiteralExpr, IdentifierExpr and NAryExpr. --- Source/UnitTests/CoreTests/ExprImmutability.cs | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Source/UnitTests') 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 @@ -15,6 +15,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.True }, /*immutable=*/true); + Assert.AreEqual(nary.ComputeHashCode(), nary.GetHashCode()); + } + [Test()] public void CachedHashCodeForAllExpr() { -- cgit v1.2.3