Get rid of all the bogus uses of use_ok still lurking in the code
[gitmo/Moose.git] / t / moose_util / moose_util_does_role.t
CommitLineData
7125b244 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
7125b244 7
28fdde7f 8use Moose::Util ':all';
7125b244 9
10{
11 package Foo;
12
13 use Moose::Role;
14}
15
16{
17 package Bar;
18
19 use Moose;
20
21 with qw/Foo/;
22}
23
24{
25 package Baz;
26
27 use Moose;
28}
29
10a745f5 30{
31 package Quux;
32
33 use metaclass;
34}
35
36{
37 package Foo::Foo;
38
39 use Moose::Role;
40
41 with 'Foo';
42}
43
094b6ec9 44{
45 package DoesMethod;
46 use Moose;
47
48 sub does {
49 my $self = shift;
50 my ($role) = @_;
51 return 1 if $role eq 'Something::Else';
52 return $self->SUPER::does(@_);
53 }
54}
55
7125b244 56# Classes
57
58ok(does_role('Bar', 'Foo'), '... Bar does Foo');
59
60ok(!does_role('Baz', 'Foo'), '... Baz doesnt do Foo');
61
62# Objects
63
64my $bar = Bar->new;
65
66ok(does_role($bar, 'Foo'), '... $bar does Foo');
67
68my $baz = Baz->new;
69
70ok(!does_role($baz, 'Foo'), '... $baz doesnt do Foo');
71
72# Invalid values
73
74ok(!does_role(undef,'Foo'), '... undef doesnt do Foo');
75
76ok(!does_role(1,'Foo'), '... 1 doesnt do Foo');
10a745f5 77
78# non Moose metaclass
79
80ok(!does_role('Quux', 'Foo'), '... Quux doesnt do Foo (does not die tho)');
81
094b6ec9 82# overriding the does method works properly
83
84ok(does_role('DoesMethod', 'Something::Else'), '... can override the does method');
85
10a745f5 86# TODO: make the below work, maybe?
87
88# Self
89
90#ok(does_role('Foo', 'Foo'), '... Foo does do Foo');
91
92# sub-Roles
93
94#ok(does_role('Foo::Foo', 'Foo'), '... Foo::Foo does do Foo');
95
a28e50e4 96done_testing;