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; |
6cfa1e5e |
18 | use Mouse::Role; |
67199842 |
19 | has 'foo' => (is => 'rw'); |
6cfa1e5e |
20 | |
67199842 |
21 | package Role::Bar; |
22 | use Mouse::Role; |
23 | has 'bar' => (is => 'rw'); |
6cfa1e5e |
24 | |
67199842 |
25 | package Role::FooConflict; |
6cfa1e5e |
26 | use Mouse::Role; |
67199842 |
27 | has 'foo' => (is => 'rw'); |
6cfa1e5e |
28 | |
67199842 |
29 | package Role::BarConflict; |
30 | use Mouse::Role; |
31 | has 'bar' => (is => 'rw'); |
6cfa1e5e |
32 | |
67199842 |
33 | package Role::AnotherFooConflict; |
6cfa1e5e |
34 | use Mouse::Role; |
67199842 |
35 | with 'Role::FooConflict'; |
36 | } |
37 | |
38 | # test simple attributes |
39 | { |
40 | my $c = Mouse::Meta::Role::Composite->new( |
41 | roles => [ |
42 | Role::Foo->meta, |
43 | Role::Bar->meta, |
44 | ] |
45 | ); |
46 | isa_ok($c, 'Mouse::Meta::Role::Composite'); |
47 | |
6cfa1e5e |
48 | is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name'); |
49 | |
67199842 |
50 | lives_ok { |
c47cf415 |
51 | Mouse::Meta::Role::Application->new->apply($c); |
6cfa1e5e |
52 | } '... this succeeds as expected'; |
53 | |
67199842 |
54 | is_deeply( |
55 | [ sort $c->get_attribute_list ], |
56 | [ 'bar', 'foo' ], |
57 | '... got the right list of attributes' |
58 | ); |
59 | } |
60 | |
61 | # test simple conflict |
62 | dies_ok { |
c47cf415 |
63 | Mouse::Meta::Role::Application->new->apply( |
67199842 |
64 | Mouse::Meta::Role::Composite->new( |
65 | roles => [ |
66 | Role::Foo->meta, |
67 | Role::FooConflict->meta, |
68 | ] |
69 | ) |
70 | ); |
71 | } '... this fails as expected'; |
72 | |
73 | # test complex conflict |
74 | dies_ok { |
c47cf415 |
75 | Mouse::Meta::Role::Application->new->apply( |
67199842 |
76 | Mouse::Meta::Role::Composite->new( |
77 | roles => [ |
78 | Role::Foo->meta, |
6cfa1e5e |
79 | Role::Bar->meta, |
67199842 |
80 | Role::FooConflict->meta, |
6cfa1e5e |
81 | Role::BarConflict->meta, |
67199842 |
82 | ] |
83 | ) |
84 | ); |
85 | } '... this fails as expected'; |
86 | |
87 | # test simple conflict |
88 | dies_ok { |
c47cf415 |
89 | Mouse::Meta::Role::Application->new->apply( |
67199842 |
90 | Mouse::Meta::Role::Composite->new( |
91 | roles => [ |
92 | Role::Foo->meta, |
93 | Role::AnotherFooConflict->meta, |
94 | ] |
95 | ) |
96 | ); |
97 | } '... this fails as expected'; |
98 | |
c47cf415 |
99 | done_testing; |