drop package_ from method names
[gitmo/Package-Stash-XS.git] / t / 07-edge-cases.t
CommitLineData
25c87f5c 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use Test::More;
5
6use Package::Stash;
7
8{
9 package Foo;
10 use constant FOO => 1;
11 use constant BAR => \1;
12 use constant BAZ => [];
13 use constant QUUX => {};
14 use constant QUUUX => sub { };
15 sub normal { }
16 sub stub;
17 sub normal_with_proto () { }
18 sub stub_with_proto ();
19
20 our $SCALAR;
f7543739 21 our $SCALAR_WITH_VALUE = 1;
25c87f5c 22 our @ARRAY;
23 our %HASH;
24}
25
26my $stash = Package::Stash->new('Foo');
15c104e2 27ok($stash->has_symbol('$SCALAR'), '$SCALAR');
28ok($stash->has_symbol('$SCALAR_WITH_VALUE'), '$SCALAR_WITH_VALUE');
29ok($stash->has_symbol('@ARRAY'), '@ARRAY');
30ok($stash->has_symbol('%HASH'), '%HASH');
25c87f5c 31is_deeply(
15c104e2 32 [sort $stash->list_all_symbols('CODE')],
25c87f5c 33 [qw(BAR BAZ FOO QUUUX QUUX normal normal_with_proto stub stub_with_proto)],
34 "can see all code symbols"
35);
36
15c104e2 37$stash->add_symbol('%added', {});
38ok(!$stash->has_symbol('$added'), '$added');
39ok(!$stash->has_symbol('@added'), '@added');
40ok($stash->has_symbol('%added'), '%added');
f7543739 41
15c104e2 42my $constant = $stash->get_symbol('&FOO');
cb4df463 43is(ref($constant), 'CODE', "expanded a constant into a coderef");
44
25c87f5c 45done_testing;