Fix RT #54203 (reported by chocolateboy) that setters might return undef.
[gitmo/Mouse.git] / t / 400_mouse_util / 002_mouse_util_does_role.t
CommitLineData
b8848347 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 8;
7
8BEGIN {
9 use_ok('Mouse::Util', ':all');
10}
11
12{
13 package Foo;
14
15 use Mouse::Role;
16}
17
18{
19 package Bar;
20
21 use Mouse;
22
23 with qw/Foo/;
24}
25
26{
27 package Baz;
28
29 use Mouse;
30}
31
32{
33 package Quux;
34
1d86420d 35 #use metaclass;
b8848347 36}
37
38{
39 package Foo::Foo;
40
41 use Mouse::Role;
42
43 with 'Foo';
44}
45
46# Classes
47
48ok(does_role('Bar', 'Foo'), '... Bar does Foo');
49
50ok(!does_role('Baz', 'Foo'), '... Baz doesnt do Foo');
51
52# Objects
53
54my $bar = Bar->new;
55
56ok(does_role($bar, 'Foo'), '... $bar does Foo');
57
58my $baz = Baz->new;
59
60ok(!does_role($baz, 'Foo'), '... $baz doesnt do Foo');
61
62# Invalid values
63
64ok(!does_role(undef,'Foo'), '... undef doesnt do Foo');
65
66ok(!does_role(1,'Foo'), '... 1 doesnt do Foo');
67
68# non Mouse metaclass
69
70ok(!does_role('Quux', 'Foo'), '... Quux doesnt do Foo (does not die tho)');
71
72# TODO: make the below work, maybe?
73
74# Self
75
76#ok(does_role('Foo', 'Foo'), '... Foo does do Foo');
77
78# sub-Roles
79
80#ok(does_role('Foo::Foo', 'Foo'), '... Foo::Foo does do Foo');
81