Mercurial > genshi > mirror
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({})))