#!perl use Test::More tests => 37; use strict; use PPI; use Module::Checkstyle::Config; BEGIN { use_ok('Module::Checkstyle::Check::Whitespace'); } # 2 # after-comma { my $checker = Module::Checkstyle::Check::Whitespace->new(Module::Checkstyle::Config->new(\<<'END_OF_CONFIG')); [Whitespace] after-comma = true END_OF_CONFIG my $doc = PPI::Document->new(\<<'END_OF_CODE'); my ($x, $y, $z); call($x, $y, $z); END_OF_CODE my $tokens = $doc->find('PPI::Token::Operator'); is(scalar @$tokens, 4); # 2 foreach my $token (@$tokens) { my @problems = $checker->handle_operator($token); is(scalar @problems, 0); # 3, 4, 5, 6 } $doc = PPI::Document->new(\<<'END_OF_CODE'); my ($x,$y,$z); call($x,$y,$z); END_OF_CODE $tokens = $doc->find('PPI::Token::Operator'); is(scalar @$tokens, 4); # 7 foreach my $token (@$tokens) { my @problems = $checker->handle_operator($token); is(scalar @problems, 1); # 8, 9, 10, 11 } } # after-comma { my $checker = Module::Checkstyle::Check::Whitespace->new(Module::Checkstyle::Config->new(\<<'END_OF_CONFIG')); [Whitespace] before-comma = true END_OF_CONFIG my $doc = PPI::Document->new(\<<'END_OF_CODE'); my ($x ,$y ,$z); call($x ,$y ,$z); END_OF_CODE my $tokens = $doc->find('PPI::Token::Operator'); is(scalar @$tokens, 4); # 12 foreach my $token (@$tokens) { my @problems = $checker->handle_operator($token); is(scalar @problems, 0); # 13, 14, 15, 16 } $doc = PPI::Document->new(\<<'END_OF_CODE'); my ($x,$y,$z); call($x,$y,$z); END_OF_CODE $tokens = $doc->find('PPI::Token::Operator'); is(scalar @$tokens, 4); # 17 foreach my $token (@$tokens) { my @problems = $checker->handle_operator($token); is(scalar @problems, 1); # 18, 19, 20, 21 } } # after-fat-comma { my $checker = Module::Checkstyle::Check::Whitespace->new(Module::Checkstyle::Config->new(\<<'END_OF_CONFIG')); [Whitespace] after-fat-comma = true END_OF_CONFIG my $doc = PPI::Document->new(\<<'END_OF_CODE'); my %args = (foo=> 1, bar=> 2); call(foo=> $bar, bar=> $baz); END_OF_CODE my $tokens = $doc->find('PPI::Token::Operator'); @$tokens = grep { $_->content eq '=>' } @$tokens; # Ignore other than => is(scalar @$tokens, 4); # 22 foreach my $token (@$tokens) { my @problems = $checker->handle_operator($token); is(scalar @problems, 0); # 23, 24, 25, 26 } $doc = PPI::Document->new(\<<'END_OF_CODE'); my %args = (foo=>1, bar=>2); call(foo=>$bar, bar=>$baz); END_OF_CODE $tokens = $doc->find('PPI::Token::Operator'); @$tokens = grep { $_->content eq '=>' } @$tokens; # Ignore other than => is(scalar @$tokens, 4); # 27 foreach my $token (@$tokens) { my @problems = $checker->handle_operator($token); is(scalar @problems, 1); # 28, 29, 30, 31 } } # after-control-word { my $checker = Module::Checkstyle::Check::Whitespace->new(Module::Checkstyle::Config->new(\<<'END_OF_CONFIG')); [Whitespace] after-compound = true END_OF_CONFIG my $doc = PPI::Document->new(\<<'END_OF_CODE'); if ($x) { } while($x) { } if ($x) { } elsif($y) { } else{ } END_OF_CODE $doc->index_locations(); my $tokens = $doc->find('PPI::Statement::Compound'); is(scalar @$tokens, 3); # 32 my $token = shift @$tokens; my @problems = $checker->handle_compound($token); is(scalar @problems, 0); # 33 $token = shift @$tokens; @problems = $checker->handle_compound($token); is(scalar @problems, 1); # 34 $token = shift @$tokens; @problems = $checker->handle_compound($token); is(scalar @problems, 2); # 35 like((shift @problems)->get_message(), qr/^'elsif' /); # 36 like((shift @problems)->get_message(), qr/^'else' /); # 37 } 1; __DATA__ global-error-level = WARN [Whitespace] after-comma = true before-comma = true after-fat-comma = true before-fat-comma = true after-keyword = true