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