6 use Test::More tests => 5;
20 use Moose qw(extends with);
21 extends 'Moose::Meta::Class';
24 sub foo { 'i am foo' }
29 use metaclass ('MyMetaclass');
33 my $mc = MyMetaclass->initialize('MyClass');
34 isa_ok($mc, 'MyMetaclass');
36 ok($mc->meta->does_role('MyRole'), '... the metaclass does the role');
38 is(MyClass->meta, $mc, '... these metas are the same thing');
39 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
42 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
43 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
45 diag join ", " => map { $_->name } @{$mc->meta->roles};
46 diag join ", " => map { $_->name } $mc->meta->calculate_all_roles;
49 MyClass->meta->make_immutable;
50 } '... make MyClass immutable okay';
52 diag join ", " => map { $_->name } @{$mc->meta->roles};
53 diag join ", " => map { $_->name } $mc->meta->calculate_all_roles;
55 is(MyClass->meta, $mc, '... these metas are still the same thing');
56 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
58 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
59 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
63 MyClass->meta->make_mutable;
64 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
66 MyMetaclass->meta->make_immutable;
67 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
69 MyClass->meta->make_immutable;
70 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );