6 use Test::More tests => 27;
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' );
46 MyClass->meta->make_immutable;
47 } '... make MyClass immutable okay';
49 is(MyClass->meta, $mc, '... these metas are still the same thing');
50 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
52 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
53 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
56 MyClass->meta->make_mutable;
57 } '... make MyClass immutable okay';
59 is(MyClass->meta, $mc, '... these metas are still the same thing');
60 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
62 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
63 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
66 MyMetaclass->meta->make_immutable;
67 } '... make MyClass immutable okay';
69 is(MyClass->meta, $mc, '... these metas are still the same thing');
70 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
72 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
73 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
76 MyClass->meta->make_immutable;
77 } '... make MyClass immutable okay';
79 is(MyClass->meta, $mc, '... these metas are still the same thing');
80 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
82 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
83 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );