Commit | Line | Data |
0e93d7b0 |
1 | |
2 | { |
3 | package MyRole; |
4 | use Moose::Role; |
5 | BEGIN { |
6 | requires 'foo'; |
7 | } |
8 | no Moose::Role; |
9 | } |
10 | { |
11 | package MyMetaclass; |
12 | use Moose; |
13 | BEGIN { |
14 | sub foo { 'i am foo' } |
15 | extends 'Moose::Meta::Class'; |
16 | with 'MyRole'; |
17 | } |
18 | no Moose; |
19 | } |
20 | |
21 | { |
22 | package MyClass; |
23 | use metaclass 'MyMetaclass'; |
24 | use Moose; |
25 | no Moose; |
26 | } |
27 | |
28 | use Test::More tests => 5; |
29 | |
30 | my $a = MyClass->new; |
31 | ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' ); |
32 | |
33 | # now try combinations of having the class/metaclass made immutable |
34 | # and run the same test |
35 | |
36 | MyClass->meta->make_immutable; |
37 | ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' ); |
38 | |
39 | MyClass->meta->make_mutable; |
40 | ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' ); |
41 | |
42 | MyMetaclass->meta->make_immutable; |
43 | ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' ); |
44 | |
45 | MyClass->meta->make_immutable; |
46 | ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' ); |
47 | |