Mouse::Role improved
[gitmo/Mouse.git] / t / 030_roles / failing / 040_role_for_combination.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 3;
5
6 my $OPTS;
7 do {
8     package My::Singleton::Role;
9     use Mouse::Role;
10
11     sub foo { 'My::Singleton::Role' }
12
13     package My::Role::Metaclass;
14     use Mouse;
15     BEGIN { extends 'Mouse::Meta::Role' };
16
17     sub _role_for_combination {
18         my ($self, $opts) = @_;
19         $OPTS = $opts;
20         return My::Singleton::Role->meta;
21     }
22
23     package My::Special::Role;
24     use Mouse::Role -metaclass => 'My::Role::Metaclass';
25
26     sub foo { 'My::Special::Role' }
27
28     package My::Usual::Role;
29     use Mouse::Role;
30
31     sub bar { 'My::Usual::Role' }
32
33     package My::Class;
34     use Mouse;
35
36     with (
37         'My::Special::Role' => { number => 1 },
38         'My::Usual::Role' => { number => 2 },
39     );
40 };
41
42 is(My::Class->foo, 'My::Singleton::Role', 'role_for_combination applied');
43 is(My::Class->bar, 'My::Usual::Role', 'collateral role');
44 is_deeply($OPTS, { number => 1 });
45