This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Attribute::Handlers 0.81
[perl5.git] / lib / Attribute / Handlers / t / linerep.t
1 #!perl
2
3 BEGIN {
4     if ($ENV{PERL_CORE}) {
5         chdir 't' if -d 't';
6         @INC = '../lib';
7     }
8 }
9
10 use Test::More tests => 18;
11 use Attribute::Handlers;
12
13 sub Args : ATTR(CODE) {
14     my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
15     is( $package,       'main',         'package' );
16     is( $symbol,        \*foo,          'symbol' );
17     is( $referent,      \&foo,          'referent' );
18     is( $attr,          'Args',         'attr' );
19     is( ref $data,      'ARRAY',        'data' );
20     is( $data->[0],     'bar',          'data' );
21     is( $phase,         'CHECK',        'phase' );
22     is( $filename,      __FILE__,       'filename' );
23     is( $linenum,       26,             'linenum' );
24 }
25
26 sub foo :Args(bar) {}
27
28 my $ref;
29 sub myref { $ref = shift; }
30 my $b;
31 eval "my \$bar :SArgs(grumpf); \$b = \\\$bar";
32 is( $b, $ref, 'referent' );
33
34 sub SArgs : ATTR(SCALAR) {
35     my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
36     is( $package,       'main',         'package' );
37     is( $symbol,        'LEXICAL',      'symbol' );
38     myref($referent);
39     is( $attr,          'SArgs',        'attr' );
40     is( ref $data,      'ARRAY',        'data' );
41     is( $data->[0],     'grumpf',       'data' );
42     is( $phase,         'CHECK',        'phase' );
43     TODO: {
44         local $TODO = "Doesn't work correctly";
45     is( $filename,      __FILE__,       'filename' );
46     is( $linenum,       28,             'linenum' );
47     }
48 }