Moose now warns when you try to load it from the main package. Added a
[gitmo/Moose.git] / t / 030_roles / 020_role_composite.t
CommitLineData
fb1e11d5 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
7ff56534 6use Test::More tests => 14;
fb1e11d5 7use Test::Exception;
8
7ff56534 9use Moose::Meta::Role::Application::RoleSummation;
10use Moose::Meta::Role::Composite;
fb1e11d5 11
12{
13 package Role::Foo;
14 use Moose::Role;
15
16 package Role::Bar;
17 use Moose::Role;
18
19 package Role::Baz;
3e19778d 20 use Moose::Role;
21
22 package Role::Gorch;
23 use Moose::Role;
fb1e11d5 24}
25
26{
27 my $c = Moose::Meta::Role::Composite->new(
28 roles => [
29 Role::Foo->meta,
30 Role::Bar->meta,
31 Role::Baz->meta,
32 ]
33 );
34 isa_ok($c, 'Moose::Meta::Role::Composite');
35
36 is($c->name, 'Role::Foo|Role::Bar|Role::Baz', '... got the composite role name');
37
38 is_deeply($c->get_roles, [
39 Role::Foo->meta,
40 Role::Bar->meta,
41 Role::Baz->meta,
42 ], '... got the right roles');
43
c4538447 44 ok($c->does_role($_), '... our composite does the role ' . $_)
45 for qw(
46 Role::Foo
47 Role::Bar
48 Role::Baz
49 );
50
fb1e11d5 51 lives_ok {
52 Moose::Meta::Role::Application::RoleSummation->new->apply($c);
3e19778d 53 } '... this composed okay';
54
55 ##... now nest 'em
56 {
57 my $c2 = Moose::Meta::Role::Composite->new(
58 roles => [
59 $c,
60 Role::Gorch->meta,
61 ]
62 );
63 isa_ok($c2, 'Moose::Meta::Role::Composite');
64
65 is($c2->name, 'Role::Foo|Role::Bar|Role::Baz|Role::Gorch', '... got the composite role name');
66
67 is_deeply($c2->get_roles, [
68 $c,
69 Role::Gorch->meta,
70 ], '... got the right roles');
71
72 ok($c2->does_role($_), '... our composite does the role ' . $_)
73 for qw(
74 Role::Foo
75 Role::Bar
76 Role::Baz
77 Role::Gorch
78 );
79 }
fb1e11d5 80}