1#============================================================= -*-perl-*-
2#
3# t/switch.t
4#
5# Template script testing SWITCH / CASE blocks
6#
7# Written by Andy Wardley <abw@kfs.org>
8#
9# Copyright (C) 1996-2000 Andy Wardley.  All Rights Reserved.
10# Copyright (C) 1998-2000 Canon Research Centre Europe Ltd.
11#
12# This is free software; you can redistribute it and/or modify it
13# under the same terms as Perl itself.
14#
15# $Id$
16#
17#========================================================================
18
19use strict;
20use lib qw( ./lib ../lib );
21use Template::Test;
22$^W = 1;
23
24$Template::Test::DEBUG = 0;
25#$Template::Parser::DEBUG = 0;
26
27my $ttcfg = {
28#    INCLUDE_PATH => [ qw( t/test/lib test/lib ) ],	
29    POST_CHOMP   => 1,
30};
31
32test_expect(\*DATA, $ttcfg, &callsign());
33
34__DATA__
35#------------------------------------------------------------------------
36# test simple case
37#------------------------------------------------------------------------
38-- test --
39before
40[% SWITCH a %]
41this is ignored
42[% END %]
43after
44
45-- expect --
46before
47after
48
49-- test --
50before
51[% SWITCH a %]
52this is ignored
53[% CASE x %]
54not matched
55[% END %]
56after
57
58-- expect --
59before
60after
61
62-- test --
63before
64[% SWITCH a %]
65this is ignored
66[% CASE not_defined %]
67not matched
68[% END %]
69after
70
71-- expect --
72before
73after
74
75-- test --
76before
77[% SWITCH a %]
78this is ignored
79[% CASE 'alpha' %]
80matched
81[% END %]
82after
83
84-- expect --
85before
86matched
87after
88
89-- test --
90before
91[% SWITCH a %]
92this is ignored
93[% CASE a %]
94matched
95[% END %]
96after
97
98-- expect --
99before
100matched
101after
102
103-- test --
104before
105[% SWITCH 'alpha' %]
106this is ignored
107[% CASE a %]
108matched
109[% END %]
110after
111
112-- expect --
113before
114matched
115after
116
117-- test --
118before
119[% SWITCH a %]
120this is ignored
121[% CASE b %]
122matched
123[% END %]
124after
125
126-- expect --
127before
128after
129
130-- test --
131before
132[% SWITCH a %]
133this is ignored
134[% CASE a %]
135matched
136[% CASE b %]
137not matched
138[% END %]
139after
140
141-- expect --
142before
143matched
144after
145
146-- test --
147before
148[% SWITCH a %]
149this is ignored
150[% CASE b %]
151not matched
152[% CASE a %]
153matched
154[% END %]
155after
156
157-- expect --
158before
159matched
160after
161
162#------------------------------------------------------------------------
163# test default case
164#------------------------------------------------------------------------
165-- test --
166before
167[% SWITCH a %]
168this is ignored
169[% CASE a %]
170matched
171[% CASE b %]
172not matched
173[% CASE %]
174default not matched
175[% END %]
176after
177
178-- expect --
179before
180matched
181after
182
183-- test --
184before
185[% SWITCH a %]
186this is ignored
187[% CASE a %]
188matched
189[% CASE b %]
190not matched
191[% CASE DEFAULT %]
192default not matched
193[% END %]
194after
195
196-- expect --
197before
198matched
199after
200
201-- test --
202before
203[% SWITCH a %]
204this is ignored
205[% CASE z %]
206not matched
207[% CASE x %]
208not matched
209[% CASE %]
210default matched
211[% END %]
212after
213
214-- expect --
215before
216default matched
217after
218
219
220-- test --
221before
222[% SWITCH a %]
223this is ignored
224[% CASE z %]
225not matched
226[% CASE x %]
227not matched
228[% CASE DEFAULT %]
229default matched
230[% END %]
231after
232
233-- expect --
234before
235default matched
236after
237
238#------------------------------------------------------------------------
239# test multiple matches
240#------------------------------------------------------------------------
241
242-- test --
243before
244[% SWITCH a %]
245this is ignored
246[% CASE [ a b c ] %]
247matched
248[% CASE d %]
249not matched
250[% CASE %]
251default not matched
252[% END %]
253after
254
255-- expect --
256before
257matched
258after
259
260-- test --
261before
262[% SWITCH a %]
263this is ignored
264[% CASE [ a b c ] %]
265matched
266[% CASE a %]
267not matched, no drop-through
268[% CASE DEFAULT %]
269default not matched
270[% END %]
271after
272
273-- expect --
274before
275matched
276after
277
278
279#-----------------------------------------------------------------------
280# regex metacharacter quoting
281# http://rt.cpan.org/Ticket/Display.html?id=24183
282#-----------------------------------------------------------------------
283
284-- test --
285[% foo = 'a(b)'
286   bar = 'a(b)';
287
288   SWITCH foo;
289     CASE bar;
290       'ok';
291     CASE;
292       'not ok';
293   END 
294%]
295-- expect --
296ok
297