1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#!/usr/bin/perl
# Unit testing for PPI::Statement::Compound
use lib 't/lib';
use PPI::Test::pragmas;
use Test::More tests => 53 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
use PPI ();
use Helper 'safe_new';
TYPE: {
my $Document = safe_new \<<'END_PERL';
while (1) { }
until (1) { }
LABEL: while (1) { }
LABEL: until (1) { }
if (1) { }
unless (1) { }
for (@foo) { }
foreach (@foo) { }
for $x (@foo) { }
foreach $x (@foo) { }
for my $x (@foo) { }
foreach my $x (@foo) { }
for state $x (@foo) { }
foreach state $x (@foo) { }
LABEL: for (@foo) { }
LABEL: foreach (@foo) { }
LABEL: for $x (@foo) { }
LABEL: foreach $x (@foo) { }
LABEL: for my $x (@foo) { }
LABEL: foreach my $x (@foo) { }
LABEL: for state $x (@foo) { }
LABEL: foreach state $x (@foo) { }
for qw{foo} { }
foreach qw{foo} { }
for $x qw{foo} { }
foreach $x qw{foo} { }
for my $x qw{foo} { }
foreach my $x qw{foo} { }
for state $x qw{foo} { }
foreach state $x qw{foo} { }
LABEL: for qw{foo} { }
LABEL: foreach qw{foo} { }
LABEL: for $x qw{foo} { }
LABEL: foreach $x qw{foo} { }
LABEL: for my $x qw{foo} { }
LABEL: foreach my $x qw{foo} { }
LABEL: for state $x qw{foo} { }
LABEL: foreach state $x qw{foo} { }
for ( ; ; ) { }
foreach ( ; ; ) { }
for ($x = 0 ; $x < 1; $x++) { }
foreach ($x = 0 ; $x < 1; $x++) { }
for (my $x = 0 ; $x < 1; $x++) { }
foreach (my $x = 0 ; $x < 1; $x++) { }
LABEL: for ( ; ; ) { }
LABEL: foreach ( ; ; ) { }
LABEL: for ($x = 0 ; $x < 1; $x++) { }
LABEL: foreach ($x = 0 ; $x < 1; $x++) { }
LABEL: for (my $x = 0 ; $x < 1; $x++) { }
LABEL: foreach (my $x = 0 ; $x < 1; $x++) { }
END_PERL
my $statements = $Document->find('Statement::Compound');
is( scalar @{$statements}, 50, 'Found the 50 test statements' );
is( $statements->[0]->type, 'while', q<Type of while is "while"> );
is( $statements->[1]->type, 'while', q<Type of until is "while"> );
is( $statements->[2]->type, 'while', q<Type of while with label is "while"> );
is( $statements->[3]->type, 'while', q<Type of until with label is "while"> );
is( $statements->[4]->type, 'if', q<Type of if is "if"> );
is( $statements->[5]->type, 'if', q<Type of unless is "if"> );
foreach my $index (6..37) {
my $statement = $statements->[$index];
is( $statement->type, 'foreach', qq<Type is "foreach": $statement> );
}
foreach my $index (38..49) {
my $statement = $statements->[$index];
is( $statement->type, 'for', qq<Type is "for": $statement> );
}
}
|