Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 001_mouse / 061-metaclass-compatibility.t
CommitLineData
aebf20a5 1#!perl
2use strict;
3use warnings;
aebf20a5 4
a062712d 5use Test::More;
aebf20a5 6
7use Mouse::Util qw(does_role);
8
9{
10 package FooTrait;
11 use Mouse::Role;
12
13 package BarTrait;
14 use Mouse::Role;
15
16 package BaseClass;
17 use Mouse -traits => qw(FooTrait);
18
19 package SubClass;
20 use Mouse -traits => qw(BarTrait);
21
22 extends qw(BaseClass);
a062712d 23
24 package SubSubClass;
25 use Mouse;
26
27 extends qw(SubClass);
aebf20a5 28}
29
30ok does_role(BaseClass->meta, 'FooTrait'), ' BaseClass->meta->does("FooTrait")';
31ok!does_role(BaseClass->meta, 'BarTrait'), '!BaseClass->meta->does("BarTrait")';
32
33ok does_role(SubClass->meta, 'FooTrait'), 'SubClass->meta->does("FooTrait")';
34ok does_role(SubClass->meta, 'BarTrait'), 'SubClass->meta->does("BarTrait")';
35
a062712d 36ok does_role(SubSubClass->meta, 'FooTrait'), 'SubSubClass->meta->does("FooTrait")';
37ok does_role(SubSubClass->meta, 'BarTrait'), 'SubSubClass->meta->does("BarTrait")';
38
39done_testing;