Commit | Line | Data |
8642531f |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
4 | use Test::More; |
5 | use Test::Fatal; |
6 | use lib 't/lib'; |
7 | |
8 | use Test::Requires 'Package::Anon'; |
9 | |
10 | use Package::Stash; |
11 | use Symbol; |
12 | |
13 | my $anon = Package::Anon->new; |
14 | my $stash = Package::Stash->new($anon); |
15 | my $obj = $anon->bless({}); |
16 | |
17 | { |
18 | my $code = sub { 'FOO' }; |
19 | $stash->add_symbol('&foo' => $code); |
20 | is($stash->get_symbol('&foo'), $code); |
21 | is($obj->foo, 'FOO'); |
22 | } |
23 | |
24 | { |
25 | $anon->{bar} = \123; |
26 | |
27 | my $code = $stash->get_symbol('&bar'); |
28 | is(ref($code), 'CODE'); |
29 | is($code->(), 123); |
30 | |
31 | is($obj->bar, 123); |
32 | } |
33 | |
34 | { |
35 | $anon->{baz} = -1; |
36 | |
37 | my $code = $stash->get_symbol('&baz'); |
38 | is(ref($code), 'CODE'); |
39 | like( |
40 | exception { $code->() }, |
41 | qr/Undefined subroutine \&__ANON__::baz called/ |
42 | ); |
43 | } |
44 | |
45 | done_testing; |