Changelogging
[gitmo/Mouse.git] / t-failing / 030_roles / 023_role_composition_attributes.t
1 #!/usr/bin/perl
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;
5
6 use strict;
7 use warnings;
8
9 use Test::More;
10 $TODO = q{Mouse is not yet completed};
11 use Test::Exception;
12
13 use Mouse::Meta::Role::Application;
14 use Mouse::Meta::Role::Composite;
15
16 {
17     package Role::Foo;
18     use Mouse::Role;
19     has 'foo' => (is => 'rw');
20
21     package Role::Bar;
22     use Mouse::Role;
23     has 'bar' => (is => 'rw');
24
25     package Role::FooConflict;
26     use Mouse::Role;
27     has 'foo' => (is => 'rw');
28
29     package Role::BarConflict;
30     use Mouse::Role;
31     has 'bar' => (is => 'rw');
32
33     package Role::AnotherFooConflict;
34     use Mouse::Role;
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
48     is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name');
49
50     lives_ok {
51         Mouse::Meta::Role::Application->new->apply($c);
52     } '... this succeeds as expected';
53
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 {
63     Mouse::Meta::Role::Application->new->apply(
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 {
75     Mouse::Meta::Role::Application->new->apply(
76         Mouse::Meta::Role::Composite->new(
77             roles => [
78                 Role::Foo->meta,
79                 Role::Bar->meta,
80                 Role::FooConflict->meta,
81                 Role::BarConflict->meta,
82             ]
83         )
84     );
85 } '... this fails as expected';
86
87 # test simple conflict
88 dies_ok {
89     Mouse::Meta::Role::Application->new->apply(
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
99 done_testing;