1#!/usr/bin/perl 2 3# Unit testing for PPI::Statement 4 5use lib 't/lib'; 6use PPI::Test::pragmas; 7use Test::More tests => 22 + ($ENV{AUTHOR_TESTING} ? 1 : 0); 8 9use PPI; 10 11 12SPECIALIZED: { 13 my $Document = PPI::Document->new(\<<'END_PERL'); 14package Foo; 15use strict; 16; 17while (1) { last; } 18BEGIN { } 19sub foo { } 20state $x; 21$x = 5; 22END_PERL 23 24 isa_ok( $Document, 'PPI::Document' ); 25 26 my $statements = $Document->find('Statement'); 27 is( scalar @{$statements}, 10, 'Found the 10 test statements' ); 28 29 isa_ok( $statements->[0], 'PPI::Statement::Package', 'Statement 1: isa Package' ); 30 ok( $statements->[0]->specialized, 'Statement 1: is specialized' ); 31 isa_ok( $statements->[1], 'PPI::Statement::Include', 'Statement 2: isa Include' ); 32 ok( $statements->[1]->specialized, 'Statement 2: is specialized' ); 33 isa_ok( $statements->[2], 'PPI::Statement::Null', 'Statement 3: isa Null' ); 34 ok( $statements->[2]->specialized, 'Statement 3: is specialized' ); 35 isa_ok( $statements->[3], 'PPI::Statement::Compound', 'Statement 4: isa Compound' ); 36 ok( $statements->[3]->specialized, 'Statement 4: is specialized' ); 37 isa_ok( $statements->[4], 'PPI::Statement::Expression', 'Statement 5: isa Expression' ); 38 ok( $statements->[4]->specialized, 'Statement 5: is specialized' ); 39 isa_ok( $statements->[5], 'PPI::Statement::Break', 'Statement 6: isa Break' ); 40 ok( $statements->[5]->specialized, 'Statement 6: is specialized' ); 41 isa_ok( $statements->[6], 'PPI::Statement::Scheduled', 'Statement 7: isa Scheduled' ); 42 ok( $statements->[6]->specialized, 'Statement 7: is specialized' ); 43 isa_ok( $statements->[7], 'PPI::Statement::Sub', 'Statement 8: isa Sub' ); 44 ok( $statements->[7]->specialized, 'Statement 8: is specialized' ); 45 isa_ok( $statements->[8], 'PPI::Statement::Variable', 'Statement 9: isa Variable' ); 46 ok( $statements->[8]->specialized, 'Statement 9: is specialized' ); 47 is( ref $statements->[9], 'PPI::Statement', 'Statement 10: is a simple Statement' ); 48 ok( ! $statements->[9]->specialized, 'Statement 10: is not specialized' ); 49} 50