-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathiterator_test.py
More file actions
115 lines (103 loc) · 2.38 KB
/
iterator_test.py
File metadata and controls
115 lines (103 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from template import constants
from template.iterator import Iterator
from template.test import TestCase, main
class IteratorTest(TestCase):
def testIterator(self):
data = ("foo", "bar", "baz", "qux", "wiz", "woz", "waz")
vars = {"data": data}
i1 = Iterator(data)
self.assertEqual("foo", i1.get_first())
self.assertEqual("bar", i1.get_next())
self.assertEqual("baz", i1.get_next())
rest = i1.get_all()
self.assertEqual(4, len(rest))
self.assertEqual("qux", rest[0])
self.assertEqual("waz", rest[3])
val, err = i1.get_next()
self.assertTrue(not val)
self.assertEqual(constants.STATUS_DONE, err)
val, err = i1.get_all()
self.assertTrue(not val)
self.assertEqual(constants.STATUS_DONE, err)
i1.get_first()
self.assertEqual("foo", i1.get_first())
self.assertEqual("bar", i1.get_next())
rest = i1.get_all()
self.assertEqual(5, len(rest))
self.Expect(DATA, {"POST_CHOMP": 1}, vars)
DATA = r"""
-- test --
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
* [% i +%]
[% END %]
-- expect --
* foo
* bar
* baz
* qux
-- test --
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
#[% loop.index %]/[% loop.max %] [% i +%]
[% END %]
-- expect --
#0/3 foo
#1/3 bar
#2/3 baz
#3/3 qux
-- test --
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
#[% loop.count %]/[% loop.size %] [% i +%]
[% END %]
-- expect --
#1/4 foo
#2/4 bar
#3/4 baz
#4/4 qux
-- test --
# test that 'number' is supported as an alias to 'count', for backwards
# compatability
[% items = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% FOREACH i = items %]
#[% loop.number %]/[% loop.size %] [% i +%]
[% END %]
-- expect --
#1/4 foo
#2/4 bar
#3/4 baz
#4/4 qux
-- test --
[% USE iterator(data) %]
[% FOREACH i = iterator %]
[% IF iterator.first %]
List of items:
[% END %]
* [% i +%]
[% IF iterator.last %]
End of list
[% END %]
[% END %]
-- expect --
List of items:
* foo
* bar
* baz
* qux
* wiz
* woz
* waz
End of list
-- test --
[% FOREACH i = [ 'foo' 'bar' 'baz' 'qux' ] %]
[% "$loop.prev<-" IF loop.prev -%][[% i -%]][% "->$loop.next" IF loop.next +%]
[% END %]
-- expect --
[foo]->bar
foo<-[bar]->baz
bar<-[baz]->qux
baz<-[qux]
"""
if __name__ == '__main__':
main()