Mercurial > genshi > genshi-test
diff markup/tests/eval.py @ 225:0edf663b97d6
support slices in expressions (fixes #51)
author | mgood |
---|---|
date | Thu, 07 Sep 2006 20:40:56 +0000 |
parents | 6addf7af09f6 |
children | 98b8e1a92df8 |
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({})))