Skip to content

Commit e9cdf15

Browse files
author
Fitz Elliott
committed
add tests for RT #65164 (chained-xor reduce: [^^])
1 parent e813e69 commit e9cdf15

File tree

1 file changed

+75
-1
lines changed

1 file changed

+75
-1
lines changed

S03-metaops/reduce.t

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use v6;
22
use Test;
33

4-
plan 93;
4+
plan 148;
55

66
=begin pod
77
@@ -219,6 +219,80 @@ is( ([\R~] 'a'..*).[^8].join(', '), 'a, ba, cba, dcba, edcba, fedcba, gfedcba, h
219219
is [^^](5, 0, 0), (5 ^^ 0 ^^ 0), '[^^] mix 4';
220220
is [^^](0, 9, 0), (0 ^^ 9 ^^ 0), '[^^] mix 5';
221221
is [^^](0, 0, 17), (0 ^^ 0 ^^ 17), '[^^] mix 6';
222+
223+
# test False / undefined things
224+
my $msg1 = 'reduce [^^] false variable test';
225+
my $msg2 = 'infix ^^ false variable test';
226+
for (0, '0', '', Bool::False, Any, Mu, Nil) -> $undef {
227+
ok [^^] ( $undef, $undef, $undef, 5 ), "|{$undef.perl}| $msg1 \#1";
228+
nok [^^] ( 1, 2, $undef, 3, $undef ), "|{$undef.perl}| $msg1 \#2";
229+
nok [^^] ( $undef, $undef, 1, 5 ), "|{$undef.perl}| $msg1 \#3";
230+
nok [^^] ( 1, $undef, $undef, 5 ), "|{$undef.perl}| $msg1 \#4";
231+
ok [^^] ( $undef, $undef, 2, $undef ), "|{$undef.perl}| $msg1 \#5";
232+
nok [^^] ( $undef, $undef, $undef ), "|{$undef.perl}| $msg1 \#6";
233+
nok [^^] ( $undef, $undef ), "|{$undef.perl}| $msg1 \#7";
234+
ok [^^] ( $undef, 1 ), "|{$undef.perl}| $msg1 \#8";
235+
ok [^^] ( 1, $undef ), "|{$undef.perl}| $msg1 \#9";
236+
nok [^^] ( $undef ), "|{$undef.perl}| $msg1 \#10";
237+
ok ( $undef ^^ $undef ^^ $undef ^^ 5 ), "|{$undef.perl}| $msg2 \#1";
238+
nok ( 1 ^^ 2 ^^ $undef ^^ 3 ^^ $undef ), "|{$undef.perl}| $msg2 \#2";
239+
nok ( $undef ^^ $undef ^^ 1 ^^ 5 ), "|{$undef.perl}| $msg2 \#3";
240+
nok ( 1 ^^ $undef ^^ $undef ^^ 5 ), "|{$undef.perl}| $msg2 \#4";
241+
ok ( $undef ^^ $undef ^^ 2 ^^ $undef ), "|{$undef.perl}| $msg2 \#5";
242+
nok ( $undef ^^ $undef ^^ $undef ), "|{$undef.perl}| $msg2 \#6";
243+
nok ( $undef ^^ $undef ), "|{$undef.perl}| $msg2 \#7";
244+
ok ( $undef ^^ 1 ), "|{$undef.perl}| $msg2 \#8";
245+
ok ( 1 ^^ $undef ), "|{$undef.perl}| $msg2 \#9";
246+
}
247+
248+
# test numericy true things
249+
$msg1 = 'reduce [^^] true numbery variable test';
250+
$msg2 = 'infix ^^ true numbery variable test';
251+
for (1, -147, pi, Bool::True) -> $def {
252+
nok [^^] ( 0, 0, $def, 3, $def ), "|{$def.perl}| $msg1 \#1";
253+
nok [^^] ( $def, $def, 0 ), "|{$def.perl}| $msg1 \#2";
254+
nok [^^] ( 1, $def, Any, 5 ), "|{$def.perl}| $msg1 \#3";
255+
ok [^^] ( $def, 0, 0, 0 ) == $def, "|{$def.perl}| $msg1 \#4";
256+
ok [^^] ( Any, Any, Any, $def ) == $def, "|{$def.perl}| $msg1 \#5";
257+
nok [^^] ( $def, $def ), "|{$def.perl}| $msg1 \#6";
258+
ok [^^] ( $def, 0 ) == $def, "|{$def.perl}| $msg1 \#7";
259+
ok [^^] ( 0, $def ) == $def, "|{$def.perl}| $msg1 \#8";
260+
ok [^^] ( $def ), "|{$def.perl}| $msg1 \#9";
261+
nok ( 0 ^^ 0 ^^ $def ^^ 3 ^^ $def ), "|{$def.perl}| $msg2 \#1";
262+
nok ( $def ^^ $def ^^ 0 ), "|{$def.perl}| $msg2 \#2";
263+
nok ( 1 ^^ $def ^^ Any ^^ 5 ), "|{$def.perl}| $msg2 \#3";
264+
ok ( $def ^^ 0 ^^ 0 ^^ 0 ) == $def, "|{$def.perl}| $msg2 \#4";
265+
ok ( Any ^^ Any ^^ Any ^^ $def ) == $def,"|{$def.perl}| $msg2 \#5";
266+
nok ( $def ^^ $def ), "|{$def.perl}| $msg2 \#6";
267+
ok ( $def ^^ 0 ) == $def, "|{$def.perl}| $msg2 \#7";
268+
ok ( 0 ^^ $def ) == $def, "|{$def.perl}| $msg2 \#8";
269+
}
270+
271+
# test stringy true things
272+
$msg1 = 'reduce [^^] true string variable test';
273+
$msg2 = 'infix ^^ true string variable test';
274+
for ('no', 'Bob', '10', 'False') -> $def {
275+
nok [^^] ( $def, $def, $def, 'string' ), "|{$def.perl}| $msg1 \#1";
276+
nok [^^] ( '', '', $def, 'str', $def ), "|{$def.perl}| $msg1 \#2";
277+
nok [^^] ( $def, $def,'' ), "|{$def.perl}| $msg1 \#3";
278+
nok [^^] ( 1, $def, Any, 5 ), "|{$def.perl}| $msg1 \#4";
279+
ok [^^] ( $def, '', '', '' ) eq $def, "|{$def.perl}| $msg1 \#5";
280+
ok [^^] ( Any, Any, Any, $def ) eq $def, "|{$def.perl}| $msg1 \#6";
281+
nok [^^] ( $def, $def ), "|{$def.perl}| $msg1 \#7";
282+
ok [^^] ( $def, '' ) eq $def, "|{$def.perl}| $msg1 \#8";
283+
ok [^^] ( '', $def ) eq $def, "|{$def.perl}| $msg1 \#9";
284+
ok [^^] ( $def ) eq $def, "|{$def.perl}| $msg1 \#10";
285+
nok ( $def ^^ $def ^^ $def ^^ 'string' ), "|{$def.perl}| $msg2 \#1";
286+
nok ( '' ^^ '' ^^ $def ^^ 'str' ^^ $def ),"|{$def.perl}| $msg2 \#2";
287+
nok ( $def ^^ $def ^^'' ), "|{$def.perl}| $msg2 \#3";
288+
nok ( 1 ^^ $def ^^ Any ^^ 5 ), "|{$def.perl}| $msg2 \#4";
289+
ok ( $def ^^ '' ^^ '' ^^ '' ) eq $def, "|{$def.perl}| $msg2 \#5";
290+
ok ( Any ^^ Any ^^ Any ^^ $def ) eq $def,"|{$def.perl}| $msg2 \#6";
291+
nok ( $def ^^ $def ), "|{$def.perl}| $msg2 \#7";
292+
ok ( $def ^^ '' ) eq $def, "|{$def.perl}| $msg2 \#8";
293+
ok ( '' ^^ $def ) eq $def, "|{$def.perl}| $msg2 \#9";
294+
}
295+
222296
}
223297

224298
# RT #75234

0 commit comments

Comments
 (0)