diff markup/tests/eval.py @ 225:16d7b5db7ef4 trunk

support slices in expressions (fixes #51)
author mgood
date Thu, 07 Sep 2006 20:40:56 +0000
parents 48fab34e5e4d
children 96a7e5011c69
line wrap: on
line diff
--- a/markup/tests/eval.py
+++ b/markup/tests/eval.py
@@ -274,6 +274,30 @@
             expr = Expression("list(i['name'] for i in items if i['value'] > 1)")
             self.assertEqual(['b'], expr.evaluate({'items': items}))
 
+    def test_slice(self):
+        expr = Expression("numbers[0:2]")
+        self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))
+
+    def test_slice_with_vars(self):
+        expr = Expression("numbers[start:end]")
+        self.assertEqual([0, 1], expr.evaluate({'numbers': range(5), 'start': 0, 'end': 2}))
+
+    def test_slice_copy(self):
+        expr = Expression("numbers[:]")
+        self.assertEqual([0, 1, 2, 3, 4], expr.evaluate({'numbers': range(5)}))
+
+    def test_slice_stride(self):
+        expr = Expression("numbers[::stride]")
+        self.assertEqual([0, 2, 4], expr.evaluate({'numbers': range(5), 'stride': 2}))
+
+    def test_slice_negative_start(self):
+        expr = Expression("numbers[-1:]")
+        self.assertEqual([4], expr.evaluate({'numbers': range(5)}))
+
+    def test_slice_negative_end(self):
+        expr = Expression("numbers[:-1]")
+        self.assertEqual([0, 1, 2, 3], expr.evaluate({'numbers': range(5)}))
+
     def test_error_access_undefined(self):
         expr = Expression("nothing", filename='index.html', lineno=50)
         self.assertEqual(Undefined, type(expr.evaluate({})))
Copyright (C) 2012-2017 Edgewall Software