Add tests for un-parameterized Maybe
[gitmo/Moose.git] / t / moose_util / ensure_all_roles.t
CommitLineData
b099a649 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
b099a649 7
8BEGIN {
9 use_ok('Moose::Util', ':all');
10}
11
12{
13 package Foo;
14 use Moose::Role;
15}
16
17{
18 package Bar;
19 use Moose::Role;
20}
21
22{
23 package Quux;
24 use Moose;
25}
26
27is_deeply(
28 Quux->meta->roles,
29 [],
30 "no roles yet",
31);
32
33Foo->meta->apply(Quux->meta);
34
35is_deeply(
36 Quux->meta->roles,
37 [ Foo->meta ],
38 "applied Foo",
39);
40
41Foo->meta->apply(Quux->meta);
42Bar->meta->apply(Quux->meta);
43is_deeply(
44 Quux->meta->roles,
45 [ Foo->meta, Foo->meta, Bar->meta ],
46 "duplicated Foo",
47);
48
49is(does_role('Quux', 'Foo'), 1, "Quux does Foo");
50is(does_role('Quux', 'Bar'), 1, "Quux does Bar");
51ensure_all_roles('Quux', qw(Foo Bar));
52is_deeply(
53 Quux->meta->roles,
54 [ Foo->meta, Foo->meta, Bar->meta ],
55 "unchanged, since all roles are already applied",
56);
57
58my $obj = Quux->new;
59ensure_all_roles($obj, qw(Foo Bar));
60is_deeply(
61 $obj->meta->roles,
62 [ Foo->meta, Foo->meta, Bar->meta ],
63 "unchanged, since all roles are already applied",
64);
a28e50e4 65
66done_testing;