added test for token_re option
[urisagit/Template-Simple.git] / t / options.t
1 #!perl
2
3 use lib qw(t) ;
4 use common ;
5
6 my $tests = [
7
8         {
9                 name    => 'pre_delim',
10                 opts    => {
11                         pre_delim => '<%',
12                 },
13                 data    => {
14                         foo     => 'FOO is 3',
15                         BAR     => 'bar is baz',
16                 },
17                 template => <<TEMPLATE,
18 <%foo%]
19 <%BAR%]
20 TEMPLATE
21                 expected => <<EXPECTED,
22 FOO is 3
23 bar is baz
24 EXPECTED
25         },
26         {
27                 name    => 'post_delim',
28                 opts    => {
29                         post_delim => '%>',
30                 },
31                 data    => {
32                         foo     => 'FOO is 3',
33                         BAR     => 'bar is baz',
34                 },
35                 template => <<TEMPLATE,
36 [%foo%>
37 [%BAR%>
38 TEMPLATE
39                 expected => <<EXPECTED,
40 FOO is 3
41 bar is baz
42 EXPECTED
43         },
44         {
45                 name    => 'pre/post_delim',
46                 opts    => {
47                         pre_delim => '<%',
48                         post_delim => '%>',
49                 },
50                 data    => {
51                         foo     => 'FOO is 3',
52                         BAR     => 'bar is baz',
53                 },
54                 template => <<TEMPLATE,
55 <%foo%>
56 <%BAR%>
57 TEMPLATE
58                 expected => <<EXPECTED,
59 FOO is 3
60 bar is baz
61 EXPECTED
62         },
63         {
64                 name    => 'pre/post_delim regexes',
65                 opts    => {
66                         pre_delim => qr/A+/,
67                         post_delim => qr/B+/,
68                 },
69                 data    => {
70                         foo     => 'FOO is 3',
71                         bAR     => 'bar is baz',
72                 },
73                 template => <<TEMPLATE,
74 AAAfooBBBBB
75 AbARB
76 TEMPLATE
77                 expected => <<EXPECTED,
78 FOO is 3
79 bar is baz
80 EXPECTED
81         },
82         {
83                 name    => 'chunk delim',
84                 opts    => {
85                         pre_delim => '<%',
86                         post_delim => '%>',
87                 },
88                 data    => {
89                         foo     => { FOO => 3 },
90                         bar     => { BAR => 4 },
91                 },
92                 template => <<TEMPLATE,
93 <%START foo%>
94 <%FOO%>
95 <%END foo%>
96 <%START bar%><%BAR%><%END bar%>
97 TEMPLATE
98                 expected => <<EXPECTED,
99
100 3
101
102 4
103 EXPECTED
104         },
105
106         {
107                 name    => 'chunk delim - array of hashes',
108                 opts    => {
109                         pre_delim => '<%',
110                         post_delim => '%>',
111                 },
112                 data    => [
113                         {
114                                 foo     => { FOO => 3 },
115                                 bar     => { BAR => 4 },
116                         },
117                         {
118                                 foo     => { FOO => 6 },
119                                 bar     => { BAR => 'quux' },
120                         }
121                 ],
122                 template => <<TEMPLATE,
123 <%START foo%>
124 <%FOO%>
125 <%END foo%>
126 <%START bar%><%BAR%><%END bar%>
127 TEMPLATE
128                 expected => <<EXPECTED,
129
130 3
131
132 4
133
134 6
135
136 quux
137 EXPECTED
138         },
139         {
140                 name    => 'greedy chunk',
141                 opts    => {
142                         greedy_chunk    => 1,
143                 },
144                 data    => {
145                         FOO     => 'foo',
146                 },
147                 template => <<TEMPLATE,
148 [%START FOO%]
149 [%START FOO%]
150 bar
151 [%END FOO%]
152 [%END FOO%]
153 TEMPLATE
154                 expected => <<EXPECTED,
155 foo
156 EXPECTED
157         },
158         {
159                 name    => 'not greedy chunk',
160                 opts    => {
161                         greedy_chunk    => 0,
162                 },
163                 data    => {
164                         FOO     => 'foo',
165                 },
166                 template => <<TEMPLATE,
167 [%START FOO%]
168 [%START FOO%]
169 bar
170 [%END FOO%]
171 [%END FOO%]
172 TEMPLATE
173                 expected => <<EXPECTED,
174 foo
175 [%END FOO%]
176 EXPECTED
177         },
178         {
179                 name    => 'token_id',
180                 opts    => {
181                         token_id => qw/[-\w]+?/,
182                 },
183                 data    => {
184                         'foo-bar'       => 'FOO is 3',
185                         'BAR-BAZ'       => 'bar is baz',
186                 },
187                 template => <<TEMPLATE,
188 [%foo-bar%]
189 [%BAR-BAZ%]
190 TEMPLATE
191                 expected => <<EXPECTED,
192 FOO is 3
193 bar is baz
194 EXPECTED
195         },
196 ] ;
197
198 template_tester( $tests ) ;
199
200 exit ;