Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / Moose-t-failing / 100_bugs / 018_immutable_metaclass_does_role.t
CommitLineData
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!!!
4use t::lib::MooseCompat;
4c98ebb0 5
6use strict;
7use warnings;
8
c47cf415 9use Test::More;
10$TODO = q{Mouse is not yet completed};
4c98ebb0 11use Test::Exception;
12
13
4c98ebb0 14BEGIN {
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
34my $mc = MyMetaclass->initialize('MyClass');
35isa_ok($mc, 'MyMetaclass');
36
37ok($mc->meta->does_role('MyRole'), '... the metaclass does the role');
38
39is(MyClass->meta, $mc, '... these metas are the same thing');
40is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
41
42my $a = MyClass->new;
43ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
44is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
45ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
46is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
47
48lives_ok {
49 MyClass->meta->make_immutable;
50} '... make MyClass immutable okay';
51
52is(MyClass->meta, $mc, '... these metas are still the same thing');
53is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
54
55ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
56is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
57ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
58is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
59
60lives_ok {
61 MyClass->meta->make_mutable;
62} '... make MyClass mutable okay';
63
64is(MyClass->meta, $mc, '... these metas are still the same thing');
65is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
66
67ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
68is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
69ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
70is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
71
72lives_ok {
73 MyMetaclass->meta->make_immutable;
c47cf415 74} '... make MyMetaclass immutable okay';
4c98ebb0 75
76is(MyClass->meta, $mc, '... these metas are still the same thing');
77is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
78
79ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
80is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
81ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
82is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
83
84lives_ok {
85 MyClass->meta->make_immutable;
c47cf415 86} '... make MyClass immutable (again) okay';
4c98ebb0 87
88is(MyClass->meta, $mc, '... these metas are still the same thing');
89is(MyClass->meta->meta, $mc->meta, '... these meta-metas are the same thing');
90
91ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
92is( $a->meta->foo, 'i am foo', '... foo method returns expected value' );
93ok( MyClass->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
94is( MyClass->meta->foo, 'i am foo', '... foo method returns expected value' );
95
c47cf415 96done_testing;