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