Commit | Line | Data |
4ada57e0 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
13f4d7c3 |
5 | use Test::Fatal; |
4ada57e0 |
6 | |
7 | BEGIN { $^P |= 0x210 } # PERLDBf_SUBLINE |
8 | |
9 | use Package::Stash; |
10 | |
11 | my $foo_stash = Package::Stash->new('Foo'); |
12 | |
13 | # ---------------------------------------------------------------------- |
14 | ## test adding a CODE |
15 | |
16 | ok(!defined($Foo::{funk}), '... the &funk slot has not been created yet'); |
17 | |
13f4d7c3 |
18 | ok(!exception { |
4ada57e0 |
19 | $foo_stash->add_package_symbol('&funk' => sub { "Foo::funk", __LINE__ }); |
13f4d7c3 |
20 | }, '... created &Foo::funk successfully'); |
4ada57e0 |
21 | |
22 | ok(defined($Foo::{funk}), '... the &funk slot was created successfully'); |
23 | |
24 | { |
25 | no strict 'refs'; |
26 | ok(defined &{'Foo::funk'}, '... our &funk exists'); |
27 | } |
28 | |
29 | is((Foo->funk())[0], 'Foo::funk', '... got the right value from the function'); |
30 | |
31 | my $line = (Foo->funk())[1]; |
32 | is $DB::sub{'Foo::funk'}, sprintf "%s:%d-%d", __FILE__, $line, $line, |
33 | '... got the right %DB::sub value for funk default args'; |
34 | |
640de369 |
35 | $foo_stash->add_package_symbol( |
36 | '&dunk' => sub { "Foo::dunk" }, |
37 | filename => "FileName", |
38 | first_line_num => 100, |
39 | last_line_num => 199 |
40 | ); |
4ada57e0 |
41 | |
42 | is $DB::sub{'Foo::dunk'}, sprintf "%s:%d-%d", "FileName", 100, 199, |
43 | '... got the right %DB::sub value for dunk with specified args'; |
44 | |
45 | done_testing; |