Mercurial > genshi > mirror
changeset 340:b517929eb334 trunk
Make expressions hashable.
author | cmlenz |
---|---|
date | Thu, 09 Nov 2006 16:42:08 +0000 |
parents | 7763f7aec949 |
children | 35189e960252 |
files | genshi/template/eval.py genshi/template/tests/eval.py |
diffstat | 2 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/genshi/template/eval.py +++ b/genshi/template/eval.py @@ -83,6 +83,15 @@ self.code = _compile(ast.Expression(source), filename=filename, lineno=lineno) + def __eq__(self, other): + return (type(other) == Expression) and (self.code == other.code) + + def __hash__(self): + return hash(self.code) + + def __ne__(self, other): + return not self == other + def __repr__(self): return 'Expression(%r)' % self.source
--- a/genshi/template/tests/eval.py +++ b/genshi/template/tests/eval.py @@ -20,6 +20,16 @@ class ExpressionTestCase(unittest.TestCase): + def test_eq(self): + expr = Expression('x,y') + self.assertEqual(expr, Expression('x,y')) + self.assertNotEqual(expr, Expression('y, x')) + + def test_hash(self): + expr = Expression('x,y') + self.assertEqual(hash(expr), hash(Expression('x,y'))) + self.assertNotEqual(hash(expr), hash(Expression('y, x'))) + def test_name_lookup(self): self.assertEqual('bar', Expression('foo').evaluate({'foo': 'bar'})) self.assertEqual(id, Expression('id').evaluate({}, nocall=True))