comparison markup/tests/eval.py @ 90:242610137d1f

When an expression evaluates to a callable, it is called implicitly.
author cmlenz
date Wed, 19 Jul 2006 17:50:17 +0000
parents 9ecae580dd93
children 12efdfe8af47
comparison
equal deleted inserted replaced
89:d4c7617900e3 90:242610137d1f
178 data = {'foo': 'bar'} 178 data = {'foo': 'bar'}
179 self.assertEqual('BAR', Expression("foo.upper()").evaluate(data)) 179 self.assertEqual('BAR', Expression("foo.upper()").evaluate(data))
180 data = {'foo': {'bar': range(42)}} 180 data = {'foo': {'bar': range(42)}}
181 self.assertEqual(42, Expression("len(foo.bar)").evaluate(data)) 181 self.assertEqual(42, Expression("len(foo.bar)").evaluate(data))
182 182
183 def test_call_function_without_params(self):
184 self.assertEqual(42, Expression("foo").evaluate({'foo': lambda: 42}))
185 data = {'foo': 'bar'}
186 self.assertEqual('BAR', Expression("foo.upper").evaluate(data))
187 data = {'foo': {'bar': range(42)}}
188
183 def test_list_comprehension(self): 189 def test_list_comprehension(self):
184 expr = Expression("[n for n in numbers if n < 2]") 190 expr = Expression("[n for n in numbers if n < 2]")
185 self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)})) 191 self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))
186 192
187 expr = Expression("[(i, n + 1) for i, n in enumerate(numbers)]") 193 expr = Expression("[(i, n + 1) for i, n in enumerate(numbers)]")
Copyright (C) 2012-2017 Edgewall Software