Commit | Line | Data |
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!!! |
4 | use t::lib::MooseCompat; |
67199842 |
5 | |
6 | use strict; |
7 | use warnings; |
8 | |
c47cf415 |
9 | use Test::More; |
10 | $TODO = q{Mouse is not yet completed}; |
67199842 |
11 | use Test::Exception; |
12 | |
c47cf415 |
13 | use Mouse::Meta::Role::Application; |
67199842 |
14 | use Mouse::Meta::Role::Composite; |
15 | |
16 | { |
17 | package Role::Foo; |
18 | use Mouse::Role; |
6cfa1e5e |
19 | |
67199842 |
20 | package Role::Bar; |
21 | use Mouse::Role; |
6cfa1e5e |
22 | |
67199842 |
23 | package Role::ExcludesFoo; |
24 | use Mouse::Role; |
25 | excludes 'Role::Foo'; |
6cfa1e5e |
26 | |
67199842 |
27 | package Role::DoesExcludesFoo; |
28 | use Mouse::Role; |
6cfa1e5e |
29 | with 'Role::ExcludesFoo'; |
30 | |
67199842 |
31 | package Role::DoesFoo; |
32 | use Mouse::Role; |
6cfa1e5e |
33 | with 'Role::Foo'; |
67199842 |
34 | } |
35 | |
36 | ok(Role::ExcludesFoo->meta->excludes_role('Role::Foo'), '... got the right exclusions'); |
37 | ok(Role::DoesExcludesFoo->meta->excludes_role('Role::Foo'), '... got the right exclusions'); |
38 | |
39 | # test simple exclusion |
40 | dies_ok { |
c47cf415 |
41 | Mouse::Meta::Role::Application->new->apply( |
67199842 |
42 | Mouse::Meta::Role::Composite->new( |
43 | roles => [ |
44 | Role::Foo->meta, |
45 | Role::ExcludesFoo->meta, |
46 | ] |
47 | ) |
48 | ); |
49 | } '... this fails as expected'; |
50 | |
51 | # test no conflicts |
52 | { |
53 | my $c = Mouse::Meta::Role::Composite->new( |
54 | roles => [ |
55 | Role::Foo->meta, |
56 | Role::Bar->meta, |
57 | ] |
58 | ); |
59 | isa_ok($c, 'Mouse::Meta::Role::Composite'); |
60 | |
61 | is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name'); |
6cfa1e5e |
62 | |
67199842 |
63 | lives_ok { |
c47cf415 |
64 | Mouse::Meta::Role::Application->new->apply($c); |
6cfa1e5e |
65 | } '... this lives as expected'; |
67199842 |
66 | } |
67 | |
68 | # test no conflicts w/exclusion |
69 | { |
70 | my $c = Mouse::Meta::Role::Composite->new( |
71 | roles => [ |
72 | Role::Bar->meta, |
6cfa1e5e |
73 | Role::ExcludesFoo->meta, |
67199842 |
74 | ] |
75 | ); |
76 | isa_ok($c, 'Mouse::Meta::Role::Composite'); |
77 | |
78 | is($c->name, 'Role::Bar|Role::ExcludesFoo', '... got the composite role name'); |
6cfa1e5e |
79 | |
67199842 |
80 | lives_ok { |
c47cf415 |
81 | Mouse::Meta::Role::Application->new->apply($c); |
6cfa1e5e |
82 | } '... this lives as expected'; |
83 | |
84 | is_deeply([$c->get_excluded_roles_list], ['Role::Foo'], '... has excluded roles'); |
67199842 |
85 | } |
86 | |
87 | |
88 | # test conflict with an "inherited" exclusion |
89 | dies_ok { |
c47cf415 |
90 | Mouse::Meta::Role::Application->new->apply( |
67199842 |
91 | Mouse::Meta::Role::Composite->new( |
92 | roles => [ |
93 | Role::Foo->meta, |
94 | Role::DoesExcludesFoo->meta, |
95 | ] |
96 | ) |
97 | ); |
6cfa1e5e |
98 | |
67199842 |
99 | } '... this fails as expected'; |
100 | |
101 | # test conflict with an "inherited" exclusion of an "inherited" role |
102 | dies_ok { |
c47cf415 |
103 | Mouse::Meta::Role::Application->new->apply( |
6cfa1e5e |
104 | Mouse::Meta::Role::Composite->new( |
67199842 |
105 | roles => [ |
6cfa1e5e |
106 | Role::DoesFoo->meta, |
67199842 |
107 | Role::DoesExcludesFoo->meta, |
108 | ] |
109 | ) |
110 | ); |
111 | } '... this fails as expected'; |
112 | |
c47cf415 |
113 | done_testing; |