7 use Switch qw(__ fallthrough);
9 my($C,$M);sub ok{$C++;$M.=$_[0]?"ok $C\n":"not ok $C (line ".(caller)[2].")\n"}
14 $case->{case} = { case => "case" };
20 eval { case 1 { ok(0) }; ok(0) } || ok(1);
26 case 1 { ok(0) } else { ok(1) }
27 case 2 { ok(0) } else { ok(1) }
28 case 3 { ok(1) } else { ok(0) }
33 eval { case __ <= 1 || __ > 2 { ok(0) } } || ok(1);
34 case __ <= 2 { ok(0) };
35 case __ <= 3 { ok(1) };
38 # POSSIBLE ARGS: NUMERIC, STRING, ARRAY, HASH, REGEX, CODE
46 case ($_) { ok(1) } else { ok(0) }
49 case (1) { ok ($_==1) } else { ok($_!=1) }
50 case 1 { ok ($_==1) } else { ok($_!=1) }
51 case (3) { ok ($_==3) } else { ok($_!=3) }
52 case (4) { ok (0) } else { ok(1) }
53 case (2) { ok ($_==2) } else { ok($_!=2) }
56 case ('a') { ok (0) } else { ok(1) }
57 case 'a' { ok (0) } else { ok(1) }
58 case ('3') { ok ($_ == 3) } else { ok($_ != 3) }
59 case ('3.0') { ok (0) } else { ok(1) }
62 case ([10,5,1]) { ok ($_==1) } else { ok($_!=1) }
63 case [10,5,1] { ok ($_==1) } else { ok($_!=1) }
64 case (['a','b']) { ok (0) } else { ok(1) }
65 case (['a','b',3]) { ok ($_==3) } else { ok ($_!=3) }
66 case (['a','b',2.0]) { ok ($_==2) } else { ok ($_!=2) }
67 case ([]) { ok (0) } else { ok(1) }
70 case ({}) { ok (0) } else { ok (1) }
71 case {} { ok (0) } else { ok (1) }
72 case {1,1} { ok ($_==1) } else { ok($_!=1) }
73 case ({1=>1, 2=>0}) { ok ($_==1) } else { ok($_!=1) }
76 case (sub {$_[0]==2}) { ok ($_==2) } else { ok($_!=2) }
77 case {$_[0]==2} { ok ($_==2) } else { ok($_!=2) }
78 case {0} { ok (0) } else { ok (1) } # ; -> SUB, NOT HASH
79 case {1} { ok (1) } else { ok (0) } # ; -> SUB, NOT HASH
90 case ($_) { ok(1) } else { ok(0) }
93 case (1) { ok ($_ !~ /[a-c]/) } else { ok ($_ =~ /[a-c]/) }
94 case (1.0) { ok ($_ !~ /[a-c]/) } else { ok ($_ =~ /[a-c]/) }
97 case ('a') { ok ($_ eq 'a') } else { ok($_ ne 'a') }
98 case ('b') { ok ($_ eq 'b') } else { ok($_ ne 'b') }
99 case ('c') { ok ($_ eq 'c') } else { ok($_ ne 'c') }
100 case ('1') { ok ($_ eq '1') } else { ok($_ ne '1') }
101 case ('d') { ok (0) } else { ok (1) }
104 case (['a','1']) { ok ($_ eq 'a' || $_ eq '1') }
105 else { ok ($_ ne 'a' && $_ ne '1') }
106 case (['z','2']) { ok (0) } else { ok(1) }
107 case ([]) { ok (0) } else { ok(1) }
110 case ({}) { ok (0) } else { ok (1) }
111 case ({a=>'a', 1=>1, 2=>0}) { ok ($_ eq 'a' || $_ eq '1') }
112 else { ok ($_ ne 'a' && $_ ne '1') }
115 case (sub{$_[0] eq 'a' }) { ok ($_ eq 'a') }
116 else { ok($_ ne 'a') }
117 case {$_[0] eq 'a'} { ok ($_ eq 'a') } else { ok($_ ne 'a') }
118 case {0} { ok (0) } else { ok (1) } # ; -> SUB, NOT HASH
119 case {1} { ok (1) } else { ok (0) } # ; -> SUB, NOT HASH
127 for ([],[1,'a'],[2,'b'])
135 case (1) { ok ($iteration==2) } else { ok ($iteration!=2) }
136 case (1.0) { ok ($iteration==2) } else { ok ($iteration!=2) }
139 case ('a') { ok ($iteration==2) } else { ok ($iteration!=2) }
140 case ('b') { ok ($iteration==3) } else { ok ($iteration!=3) }
141 case ('1') { ok ($iteration==2) } else { ok ($iteration!=2) }
144 case (['a',2]) { ok ($iteration>=2) } else { ok ($iteration<2) }
145 case ([1,'a']) { ok ($iteration==2) } else { ok($iteration!=2) }
146 case ([]) { ok (0) } else { ok(1) }
147 case ([7..100]) { ok (0) } else { ok(1) }
150 case ({}) { ok (0) } else { ok (1) }
151 case ({a=>'a', 1=>1, 2=>0}) { ok ($iteration==2) }
152 else { ok ($iteration!=2) }
155 case {scalar grep /a/, @_} { ok ($iteration==2) }
156 else { ok ($iteration!=2) }
157 case (sub {scalar grep /a/, @_ }) { ok ($iteration==2) }
158 else { ok ($iteration!=2) }
159 case {0} { ok (0) } else { ok (1) } # ; -> SUB, NOT HASH
160 case {1} { ok (1) } else { ok (0) } # ; -> SUB, NOT HASH
174 case ($_) { ok(1) } else { ok(0) }
177 case (1) { ok (0) } else { ok (1) }
178 case (1.0) { ok (0) } else { ok (1) }
181 case ('a') { ok ($iteration==2) } else { ok ($iteration!=2) }
182 case ('b') { ok (0) } else { ok (1) }
183 case ('c') { ok (0) } else { ok (1) }
186 case (['a',2]) { ok ($iteration==2) }
187 else { ok ($iteration!=2) }
188 case (['b','a']) { ok ($iteration==2) }
189 else { ok ($iteration!=2) }
190 case (['b','c']) { ok (0) } else { ok (1) }
191 case ([]) { ok (0) } else { ok(1) }
192 case ([7..100]) { ok (0) } else { ok(1) }
195 case ({}) { ok (0) } else { ok (1) }
196 case ({a=>'a', 1=>1, 2=>0}) { ok (0) } else { ok (1) }
199 case {$_[0]{a}} { ok ($iteration==2) }
200 else { ok ($iteration!=2) }
201 case (sub {$_[0]{a}}) { ok ($iteration==2) }
202 else { ok ($iteration!=2) }
203 case {0} { ok (0) } else { ok (1) } # ; -> SUB, NOT HASH
204 case {1} { ok (1) } else { ok (0) } # ; -> SUB, NOT HASH
213 sub { return 0 unless @_;
215 my $type = ref $data;
216 return $type eq 'HASH' && $data->{a}
217 || $type eq 'Regexp' && 'a' =~ /$data/
218 || $type eq "" && $data eq '1';
225 case ($_) { ok(1) } else { ok(0) }
228 case (1) { ok ($iteration<=2) } else { ok ($iteration>2) }
229 case (1.0) { ok ($iteration<=2) } else { ok ($iteration>2) }
230 case (1.1) { ok ($iteration==1) } else { ok ($iteration!=1) }
233 case ('a') { ok ($iteration==1) } else { ok ($iteration!=1) }
234 case ('b') { ok ($iteration==1) } else { ok ($iteration!=1) }
235 case ('c') { ok ($iteration==1) } else { ok ($iteration!=1) }
236 case ('1') { ok ($iteration<=2) } else { ok ($iteration>2) }
239 case ([1, 'a']) { ok ($iteration<=2) }
240 else { ok ($iteration>2) }
241 case (['b','a']) { ok ($iteration==1) }
242 else { ok ($iteration!=1) }
243 case (['b','c']) { ok ($iteration==1) }
244 else { ok ($iteration!=1) }
245 case ([]) { ok ($iteration==1) } else { ok($iteration!=1) }
246 case ([7..100]) { ok ($iteration==1) }
247 else { ok($iteration!=1) }
250 case ({}) { ok ($iteration==1) } else { ok ($iteration!=1) }
251 case ({a=>'a', 1=>1, 2=>0}) { ok ($iteration<=2) }
252 else { ok ($iteration>2) }
255 case {$_[0]->{a}} { ok (0) } else { ok (1) }
256 case (sub {$_[0]{a}}) { ok (0) } else { ok (1) }
257 case {0} { ok (0) } else { ok (1) } # ; -> SUB, NOT HASH
258 case {1} { ok (0) } else { ok (1) } # ; -> SUB, NOT HASH
267 switch ([9,"a",11]) {
270 case (1) { ok($count==1) }
271 else { ok($count!=1) }
272 case ([5,6]) { ok(0) } else { ok(1) }