6 use Test::More tests => 36;
18 use Moose qw(extends with);
19 extends 'Moose::Meta::Class';
22 sub foo { 'i am foo' }
27 use metaclass ('MyMetaclass');
31 my $mc = MyMetaclass->initialize('MyClass');
32 isa_ok($mc, 'MyMetaclass');
34 ok($mc->meta->does_role('MyRole'), '... the metaclass does the role');
36 is(MyClass->meta, $mc, '... these metas are the same thing');
37 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
40 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
41 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
42 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
43 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
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 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
54 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
55 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
58 MyClass->meta->make_mutable;
59 } '... make MyClass mutable okay';
61 is(MyClass->meta, $mc, '... these metas are still the same thing');
62 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
64 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
65 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
66 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
67 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
70 MyMetaclass->meta->make_immutable;
71 } '... make MyClass immutable okay';
73 is(MyClass->meta, $mc, '... these metas are still the same thing');
74 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
76 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
77 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
78 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
79 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
82 MyClass->meta->make_immutable;
83 } '... make MyClass immutable okay';
85 is(MyClass->meta, $mc, '... these metas are still the same thing');
86 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
88 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
89 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
90 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
91 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );