17 use Moose qw(extends with);
18 extends 'Moose::Meta::Class';
21 sub foo { 'i am foo' }
26 use metaclass ('MyMetaclass');
30 my $mc = MyMetaclass->initialize('MyClass');
31 isa_ok($mc, 'MyMetaclass');
33 ok($mc->meta->does_role('MyRole'), '... the metaclass does the role');
35 is(MyClass->meta, $mc, '... these metas are the same thing');
36 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
39 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
40 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
41 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
42 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
45 MyClass->meta->make_immutable;
46 }, undef, '... make MyClass immutable okay' );
48 is(MyClass->meta, $mc, '... these metas are still the same thing');
49 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
51 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
52 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
53 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
54 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
57 MyClass->meta->make_mutable;
58 }, undef, '... make MyClass mutable okay' );
60 is(MyClass->meta, $mc, '... these metas are still the same thing');
61 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
63 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
64 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
65 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
66 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
69 MyMetaclass->meta->make_immutable;
70 }, undef, '... make MyMetaclass immutable okay' );
72 is(MyClass->meta, $mc, '... these metas are still the same thing');
73 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
75 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
76 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
77 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
78 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
81 MyClass->meta->make_immutable;
82 }, undef, '... make MyClass immutable (again) okay' );
84 is(MyClass->meta, $mc, '... these metas are still the same thing');
85 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
87 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
88 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
89 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
90 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );