Commit | Line | Data |
4c98ebb0 |
1 | #!/usr/bin/perl |
c47cf415 |
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; |
4c98ebb0 |
5 | |
6 | use strict; |
7 | use warnings; |
8 | |
c47cf415 |
9 | use Test::More; |
10 | $TODO = q{Mouse is not yet completed}; |
4c98ebb0 |
11 | use Test::Exception; |
12 | |
13 | |
4c98ebb0 |
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; |
c47cf415 |
74 | } '... make MyMetaclass immutable okay'; |
4c98ebb0 |
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; |
c47cf415 |
86 | } '... make MyClass immutable (again) okay'; |
4c98ebb0 |
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 | |
c47cf415 |
96 | done_testing; |