summaryrefslogtreecommitdiffstats
path: root/t/07-edge-cases.t
blob: e544c7ac3a75df606afd53570ad7564cd7a57dd4 (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
#!/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');
{ local $TODO = "i think this is a perl bug (see comment in has_package_symbol)";
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');

done_testing;