#!./perl
#
# grep() and map() tests
#
print "1..27\n";
$test = 1;
sub ok {
my ($got,$expect) = @_;
print "# expected [$expect], got [$got]\nnot " if $got ne $expect;
print "ok $test\n";
}
{
my @lol = ([qw(a b c)], [], [qw(1 2 3)]);
my @mapped = map {scalar @$_} @lol;
ok "@mapped", "3 0 3";
$test++;
my @grepped = grep {scalar @$_} @lol;
ok "@grepped", "$lol[0] $lol[2]";
$test++;
@grepped = grep { $_ } @mapped;
ok "@grepped", "3 3";
$test++;
}
{
print map({$_} ("ok $test\n"));
$test++;
print map
({$_} ("ok $test\n"));
$test++;
print((map({a => $_}, ("ok $test\n")))[0]->{a});
$test++;
print((map
({a=>$_},
("ok $test\n")))[0]->{a});
$test++;
print map { $_ } ("ok $test\n");
$test++;
print map
{ $_ } ("ok $test\n");
$test++;
print((map {a => $_}, ("ok $test\n"))[0]->{a});
$test++;
print((map
{a=>$_},
("ok $test\n"))[0]->{a});
$test++;
my $x = "ok \xFF\xFF\n";
print map($_&$x,("ok $test\n"));
$test++;
print map
($_ & $x, ("ok $test\n"));
$test++;
print map { $_ & $x } ("ok $test\n");
$test++;
print map
{ $_&$x } ("ok $test\n");
$test++;
print grep({$_} ("ok $test\n"));
$test++;
print grep
({$_} ("ok $test\n"));
$test++;
print grep({a => $_}->{a}, ("ok $test\n"));
$test++;
print grep
({a => $_}->{a},
("ok $test\n"));
$test++;
print grep { $_ } ("ok $test\n");
$test++;
print grep
{ $_ } ("ok $test\n");
$test++;
print grep {a => $_}->{a}, ("ok $test\n");
$test++;
print grep
{a => $_}->{a},
("ok $test\n");
$test++;
print grep($_&"X",("ok $test\n"));
$test++;
print grep
($_&"X", ("ok $test\n"));
$test++;
print grep { $_ & "X" } ("ok $test\n");
$test++;
print grep
{ $_ & "X" } ("ok $test\n");
$test++;
}
|