Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 030_roles / 020_role_composite.t
CommitLineData
67199842 1#!/usr/bin/perl
c47cf415 2# This is automatically generated by author/import-moose-test.pl.
3# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4use t::lib::MooseCompat;
67199842 5
6use strict;
7use warnings;
8
c47cf415 9use Test::More;
67199842 10use Test::Exception;
11
c47cf415 12use Mouse::Meta::Role::Application;
67199842 13use Mouse::Meta::Role::Composite;
14
15{
16 package Role::Foo;
17 use Mouse::Role;
6cfa1e5e 18
67199842 19 package Role::Bar;
20 use Mouse::Role;
21
22 package Role::Baz;
6cfa1e5e 23 use Mouse::Role;
24
67199842 25 package Role::Gorch;
6cfa1e5e 26 use Mouse::Role;
67199842 27}
28
29{
30 my $c = Mouse::Meta::Role::Composite->new(
31 roles => [
32 Role::Foo->meta,
33 Role::Bar->meta,
6cfa1e5e 34 Role::Baz->meta,
67199842 35 ]
36 );
37 isa_ok($c, 'Mouse::Meta::Role::Composite');
92d87891 38 { local $TODO = 'M::M::R::Compisite name';
67199842 39 is($c->name, 'Role::Foo|Role::Bar|Role::Baz', '... got the composite role name');
92d87891 40 }
67199842 41 is_deeply($c->get_roles, [
42 Role::Foo->meta,
43 Role::Bar->meta,
6cfa1e5e 44 Role::Baz->meta,
67199842 45 ], '... got the right roles');
6cfa1e5e 46
67199842 47 ok($c->does_role($_), '... our composite does the role ' . $_)
48 for qw(
49 Role::Foo
50 Role::Bar
6cfa1e5e 51 Role::Baz
67199842 52 );
92d87891 53 { local $TODO = 'cannot apply a composite role directly';
67199842 54 lives_ok {
23320fd8 55 Mouse::Meta::Role::Application::RoleSummation->new->apply($c);
6cfa1e5e 56 } '... this composed okay';
92d87891 57 }
6cfa1e5e 58
67199842 59 ##... now nest 'em
6cfa1e5e 60 {
67199842 61 my $c2 = Mouse::Meta::Role::Composite->new(
62 roles => [
63 $c,
64 Role::Gorch->meta,
65 ]
66 );
67 isa_ok($c2, 'Mouse::Meta::Role::Composite');
92d87891 68 { local $TODO = 'name';
67199842 69 is($c2->name, 'Role::Foo|Role::Bar|Role::Baz|Role::Gorch', '... got the composite role name');
92d87891 70 }
67199842 71 is_deeply($c2->get_roles, [
72 $c,
6cfa1e5e 73 Role::Gorch->meta,
67199842 74 ], '... got the right roles');
75
76 ok($c2->does_role($_), '... our composite does the role ' . $_)
77 for qw(
78 Role::Foo
79 Role::Bar
6cfa1e5e 80 Role::Baz
81 Role::Gorch
82 );
67199842 83 }
84}
c47cf415 85
86done_testing;