700d36dcd871da8893cf7dcd7e217b9f90d08716
[gitmo/Class-MOP.git] / t / 082_get_code_info.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8 BEGIN {
9     $^P &= ~0x200; # Don't munger anonymous sub names
10     if ( eval 'use Sub::Name qw(subname); 1;' ) {
11         plan tests => 5;
12     }
13     else {
14         plan skip_all => 'These tests require Sub::Name';
15     }
16 }
17
18 BEGIN { use_ok("Class::MOP") }
19
20
21 sub code_name_is ($$$;$) {
22     my ( $code, $stash, $name, $desc ) = @_;
23     $desc ||= "sub name is ${stash}::$name";
24
25     is_deeply(
26         [ Class::MOP::get_code_info($code) ],
27         [ $stash, $name ],
28         $desc,
29     );
30 }
31
32 code_name_is( sub {}, main => "__ANON__" );
33
34 code_name_is( subname("Foo::bar", sub {}), Foo => "bar" );
35
36 code_name_is( subname("", sub {}), "main" => "" );
37
38 require Class::MOP::Method;
39 code_name_is( \&Class::MOP::Method::name, "Class::MOP::Method", "name" );
40