blob: e5928a50a740c748f003af44839a3ac39c2a3167 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Package::Stash;
{
package Foo;
use constant FOO => 1;
use constant BAR => \1;
use constant BAZ => [];
use constant QUUX => {};
use constant QUUUX => sub { };
sub normal { }
sub stub;
sub normal_with_proto () { }
sub stub_with_proto ();
our $SCALAR;
our $SCALAR_WITH_VALUE = 1;
our @ARRAY;
our %HASH;
}
my $stash = Package::Stash->new('Foo');
ok($stash->has_package_symbol('$SCALAR'), '$SCALAR');
ok($stash->has_package_symbol('$SCALAR_WITH_VALUE'), '$SCALAR_WITH_VALUE');
ok($stash->has_package_symbol('@ARRAY'), '@ARRAY');
ok($stash->has_package_symbol('%HASH'), '%HASH');
is_deeply(
[sort $stash->list_all_package_symbols('CODE')],
[qw(BAR BAZ FOO QUUUX QUUX normal normal_with_proto stub stub_with_proto)],
"can see all code symbols"
);
$stash->add_package_symbol('%added', {});
ok(!$stash->has_package_symbol('$added'), '$added');
ok(!$stash->has_package_symbol('@added'), '@added');
ok($stash->has_package_symbol('%added'), '%added');
my $constant = $stash->get_package_symbol('&FOO');
is(ref($constant), 'CODE', "expanded a constant into a coderef");
done_testing;
|