diff markup/tests/eval.py @ 88:628ba9ed39ef trunk

Add support for list comprehension in expressions (see #12).
author cmlenz
date Mon, 17 Jul 2006 17:33:14 +0000
parents 1b874f032bde
children c835e81c50af
line wrap: on
line diff
--- a/markup/tests/eval.py
+++ b/markup/tests/eval.py
@@ -180,10 +180,17 @@
         data = {'foo': {'bar': range(42)}}
         self.assertEqual(42, Expression("len(foo.bar)").evaluate(data))
 
-    # FIXME: need support for local names in comprehensions
-    #def test_list_comprehension(self):
-    #    expr = Expression("[n for n in numbers if n < 2]")
-    #    self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))
+    def test_list_comprehension(self):
+        expr = Expression("[n for n in numbers if n < 2]")
+        self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))
+
+        expr = Expression("[(i, n + 1) for i, n in enumerate(numbers)]")
+        self.assertEqual([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)],
+                         expr.evaluate({'numbers': range(5)}))
+
+        expr = Expression("[offset + n for n in numbers]")
+        self.assertEqual([2, 3, 4, 5, 6],
+                         expr.evaluate({'numbers': range(5), 'offset': 2}))
 
 
 def suite():
Copyright (C) 2012-2017 Edgewall Software