0766b6a7b80b90e2c5bbdd5f9eca4f8bd2f5686c
[gitmo/Mouse.git] / t-failing / 100_bugs / 018_immutable_metaclass_does_role.t
1 #!/usr/bin/perl
2 # This is automatically generated by author/import-moose-test.pl.
3 # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4 use t::lib::MooseCompat;
5
6 use strict;
7 use warnings;
8
9 use Test::More;
10 $TODO = q{Mouse is not yet completed};
11 use Test::Exception;
12
13
14 BEGIN {
15     package MyRole;
16     use Mouse::Role;
17
18     requires 'foo';
19
20     package MyMetaclass;
21     use Mouse qw(extends with);
22     extends 'Mouse::Meta::Class';
23        with 'MyRole';
24
25     sub foo { 'i am foo' }
26 }
27
28 {
29     package MyClass;
30     use metaclass ('MyMetaclass');
31     use Mouse;
32 }
33
34 my $mc = MyMetaclass->initialize('MyClass');
35 isa_ok($mc, 'MyMetaclass');
36
37 ok($mc->meta->does_role('MyRole'), '... the metaclass does the role');
38
39 is(MyClass->meta, $mc, '... these metas are the same thing');
40 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
41
42 my $a = MyClass->new;
43 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
44 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
45 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
46 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
47
48 lives_ok {
49     MyClass->meta->make_immutable;
50 } '... make MyClass immutable okay';
51
52 is(MyClass->meta, $mc, '... these metas are still the same thing');
53 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
54
55 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
56 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
57 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
58 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
59
60 lives_ok {
61     MyClass->meta->make_mutable;
62 } '... make MyClass mutable okay';
63
64 is(MyClass->meta, $mc, '... these metas are still the same thing');
65 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
66
67 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
68 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
69 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
70 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
71
72 lives_ok {
73     MyMetaclass->meta->make_immutable;
74 } '... make MyMetaclass immutable okay';
75
76 is(MyClass->meta, $mc, '... these metas are still the same thing');
77 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
78
79 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
80 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
81 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
82 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
83
84 lives_ok {
85     MyClass->meta->make_immutable;
86 } '... make MyClass immutable (again) okay';
87
88 is(MyClass->meta, $mc, '... these metas are still the same thing');
89 is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
90
91 ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
92 is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
93 ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
94 is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
95
96 done_testing;