Mouse::Role improved
[gitmo/Mouse.git] / t / 030_roles / failing / 039_application_toclass.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 24;
5
6 do {
7     package Role::Foo;
8     use Mouse::Role;
9
10     sub foo { }
11
12
13     package Consumer::Basic;
14     use Mouse;
15
16     with 'Role::Foo';
17
18     package Consumer::Excludes;
19     use Mouse;
20
21     with 'Role::Foo' => { -excludes => 'foo' };
22
23     package Consumer::Aliases;
24     use Mouse;
25
26     with 'Role::Foo' => { -alias => { 'foo' => 'role_foo' } };
27
28     package Consumer::Overrides;
29     use Mouse;
30
31     with 'Role::Foo';
32
33     sub foo { }
34 };
35
36 my @basic     = Consumer::Basic->meta->role_applications;
37 my @excludes  = Consumer::Excludes->meta->role_applications;
38 my @aliases   = Consumer::Aliases->meta->role_applications;
39 my @overrides = Consumer::Overrides->meta->role_applications;
40
41 is(@basic,     1);
42 is(@excludes,  1);
43 is(@aliases,   1);
44 is(@overrides, 1);
45
46 my $basic     = $basic[0];
47 my $excludes  = $excludes[0];
48 my $aliases   = $aliases[0];
49 my $overrides = $overrides[0];
50
51 isa_ok($basic,     'Mouse::Meta::Role::Application::ToClass');
52 isa_ok($excludes,  'Mouse::Meta::Role::Application::ToClass');
53 isa_ok($aliases,   'Mouse::Meta::Role::Application::ToClass');
54 isa_ok($overrides, 'Mouse::Meta::Role::Application::ToClass');
55
56 is($basic->role,     Role::Foo->meta);
57 is($excludes->role,  Role::Foo->meta);
58 is($aliases->role,   Role::Foo->meta);
59 is($overrides->role, Role::Foo->meta);
60
61 is($basic->class,     Consumer::Basic->meta);
62 is($excludes->class,  Consumer::Excludes->meta);
63 is($aliases->class,   Consumer::Aliases->meta);
64 is($overrides->class, Consumer::Overrides->meta);
65
66 is_deeply($basic->get_method_aliases,     {});
67 is_deeply($excludes->get_method_aliases,  {});
68 is_deeply($aliases->get_method_aliases,   { foo => 'role_foo' });
69 is_deeply($overrides->get_method_aliases, {});
70
71 is_deeply($basic->get_method_exclusions,     []);
72 is_deeply($excludes->get_method_exclusions,  ['foo']);
73 is_deeply($aliases->get_method_exclusions,   []);
74 is_deeply($overrides->get_method_exclusions, []);
75