Commit | Line | Data |
8632b6fe |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
7d987c56 |
4 | plan skip_all => "This test requires Moose 0.81" unless eval { require Moose; Moose->VERSION(0.81); }; |
8632b6fe |
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; |
3a63a2e7 |
15 | use Carp; # import external functions (not our methods) |
8632b6fe |
16 | use ${class}; |
17 | sub foo { } |
18 | no ${class}; |
19 | } |
20 | { |
21 | package ${class}ClassImm; |
3a63a2e7 |
22 | use Carp; # import external functions (not our methods) |
8632b6fe |
23 | use ${class}; |
24 | sub foo { } |
25 | no ${class}; |
26 | __PACKAGE__->meta->make_immutable(); |
27 | } |
28 | { |
29 | package ${class}Role; |
3a63a2e7 |
30 | use Carp; # import external functions (not our methods) |
8632b6fe |
31 | use ${class}::Role; |
32 | sub bar { } |
3a63a2e7 |
33 | no ${class}::Role; |
8632b6fe |
34 | } |
35 | ... |
36 | die $@ if $@; |
e578d610 |
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"; |
faa45e54 |
39 | is join(',', sort "${class}Role"->meta->get_method_list()), 'bar,meta', "role $class"; |
8632b6fe |
40 | } |
41 | |