Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 001_mouse / 061-metaclass-compatibility.t
1 #!perl
2 use strict;
3 use warnings;
4
5 use Test::More;
6
7 use 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);
23
24     package SubSubClass;
25     use Mouse;
26
27     extends qw(SubClass);
28 }
29
30 ok does_role(BaseClass->meta, 'FooTrait'), ' BaseClass->meta->does("FooTrait")';
31 ok!does_role(BaseClass->meta, 'BarTrait'), '!BaseClass->meta->does("BarTrait")';
32
33 ok does_role(SubClass->meta,  'FooTrait'), 'SubClass->meta->does("FooTrait")';
34 ok does_role(SubClass->meta,  'BarTrait'), 'SubClass->meta->does("BarTrait")';
35
36 ok does_role(SubSubClass->meta,  'FooTrait'), 'SubSubClass->meta->does("FooTrait")';
37 ok does_role(SubSubClass->meta,  'BarTrait'), 'SubSubClass->meta->does("BarTrait")';
38
39 done_testing;