1#!perl
2
3use lib qw(t) ;
4use common ;
5
6my $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%]
20TEMPLATE
21		expected => <<EXPECTED,
22FOO is 3
23bar is baz
24EXPECTED
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%>
38TEMPLATE
39		expected => <<EXPECTED,
40FOO is 3
41bar is baz
42EXPECTED
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%>
57TEMPLATE
58		expected => <<EXPECTED,
59FOO is 3
60bar is baz
61EXPECTED
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,
74AAAfooBBBBB
75AbARB
76TEMPLATE
77		expected => <<EXPECTED,
78FOO is 3
79bar is baz
80EXPECTED
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%>
97TEMPLATE
98		expected => <<EXPECTED,
99
1003
101
1024
103EXPECTED
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%>
127TEMPLATE
128		expected => <<EXPECTED,
129
1303
131
1324
133
1346
135
136quux
137EXPECTED
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%]
150bar
151[%END FOO%]
152[%END FOO%]
153TEMPLATE
154		expected => <<EXPECTED,
155foo
156EXPECTED
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%]
169bar
170[%END FOO%]
171[%END FOO%]
172TEMPLATE
173		expected => <<EXPECTED,
174foo
175[%END FOO%]
176EXPECTED
177	},
178	{
179		name	=> 'token_re',
180		opts	=> {
181			token_re => 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%]
190TEMPLATE
191		expected => <<EXPECTED,
192FOO is 3
193bar is baz
194EXPECTED
195	},
196] ;
197
198template_tester( $tests ) ;
199
200exit ;
201