Refactoring
[gitmo/Mouse.git] / t / 800_shikabased / 013-compatibility-get_method_list.t
1 use strict;
2 use warnings;
3 use Test::More;
4 plan skip_all => "This test requires Moose 0.81" unless eval { require Moose; Moose->VERSION(0.81); };
5 plan tests => 6;
6
7 test($_) for qw/Moose Mouse/;
8 exit;
9
10 sub test {
11     my $class = shift;
12     eval <<"...";
13 {
14     package ${class}Class;
15     use Carp; # import external functions (not our methods)
16     use ${class};
17     sub foo { }
18     no ${class};
19 }
20 {
21     package ${class}ClassImm;
22     use Carp; # import external functions (not our methods)
23     use ${class};
24     sub foo { }
25     no ${class};
26     __PACKAGE__->meta->make_immutable();
27 }
28 {
29     package ${class}Role;
30     use Carp; # import external functions (not our methods)
31     use ${class}::Role;
32     sub bar { }
33     no ${class}::Role;
34 }
35 ...
36     die $@ if $@;
37     is join(',', sort "${class}Class"->meta->get_method_list()),    'foo,meta',             "mutable   $class";
38     is join(',', sort "${class}ClassImm"->meta->get_method_list()), 'DESTROY,foo,meta,new', "immutable $class";
39     is join(',', sort "${class}Role"->meta->get_method_list()),     'bar,meta',             "role      $class";
40 }
41