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