From: Graham Knop Date: Tue, 18 Jun 2013 09:45:05 +0000 (-0400) Subject: updated test X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=d5503d9d93018d54b1369d0f7a2da717fee32e2d;p=p5sagit%2FFilter-Keyword.git updated test --- diff --git a/t/simple.t b/t/simple.t index 4e179fb..deec7d9 100644 --- a/t/simple.t +++ b/t/simple.t @@ -2,13 +2,12 @@ use strictures 1; use Test::More; use Filter::Keyword; -sub ::dd { - use Data::Dumper (); - local $Data::Dumper::Useqq = 1; - local $Data::Dumper::Terse = 1; - my $out = Data::Dumper::Dumper($_[0]); - chomp $out; - return $out; +my $shadowed_called = 0; +sub shadowed ($&) { + my ($name, $sub) = @_; + $shadowed_called++; + is($name, 'fun', 'shadowed sub called with correct name'); + is($sub->(), 'OH WHAT FUN', 'shadowed sub called with correct sub'); } BEGIN { @@ -18,8 +17,8 @@ BEGIN { parser => sub { my $kw = shift; if (my ($stripped, $matches) = $kw->match_source('', '{')) { - my $name = $kw->current_match->[0]; - $stripped =~ s/{/; sub ${name} { my \$self = shift;/; + my $name = $kw->current_match; + $stripped =~ s/{/sub ${name} { my \$self = shift;/; return ($stripped, 1); } else { @@ -29,12 +28,12 @@ BEGIN { ))->install; (our $Kw2 = Filter::Keyword->new( target_package => __PACKAGE__, - keyword_name => 'function', + keyword_name => 'shadowed', parser => sub { my $kw = shift; if (my ($stripped, $matches) = $kw->match_source('', '{')) { - my $name = $kw->current_match->[0]; - $stripped =~ s/{/; sub ${name} {/; + my $name = $kw->current_match; + $stripped =~ s/{/shadowed "${name}", sub { BEGIN { Filter::Keyword::inject_after_scope(';') } /; return ($stripped, 1); } else { @@ -44,25 +43,30 @@ BEGIN { ))->install; } -method yay { is(__LINE__, 38, 'line number correct inside method' ); "YAY $self" } is(__LINE__, 38, 'line number correct on same line after method'); +#line 1 +method yay { is(__LINE__, 1, 'line number correct inside keyword' ); "YAY $self" } is(__LINE__, 1, 'line number correct on same line after keyword'); +is(__LINE__, 2, 'line number correct after first keyword'); -is(__LINE__, 40, 'line number correct after first method'); +#line 1 +my $x = __LINE__ . " @{[ __LINE__ ]} method foo @{[ __LINE__ ]} bar baz " . __LINE__; +is(__LINE__, 2, 'line number correct after string with keyword'); +is($x, '1 1 method foo 1 bar baz 1', 'line numbers in constructed string are correct'); -my $x = "method foo bar baz"; - -is(__PACKAGE__->yay, 'YAY ' . __PACKAGE__, 'result of method correct'); +is(__PACKAGE__->yay, 'YAY ' . __PACKAGE__, 'result of keyword correct'); +#line 1 method spoon { - is(__LINE__, 47, 'line number correct in multiline method'); + is(__LINE__, 2, 'line number correct in multiline keyword'); 'I HAZ A SPOON' } is(__PACKAGE__->spoon, 'I HAZ A SPOON', 'result of second method correct'); -function fun { is(__LINE__, 53, 'line number in function correct'); 'OH WHAT FUN' } +#line 1 +shadowed fun { is(__LINE__, 1, 'line number correct inside second keyword'); 'OH WHAT FUN' } -is(__PACKAGE__->fun, 'OH WHAT FUN', 'result of function correct'); +is($shadowed_called, 1, 'shadowed sub called only by filter output'); -is(__LINE__, 57, 'line number after function correct'); +is(__LINE__, 5, 'line number after shadowed correct'); done_testing;