Regenerate test files
[gitmo/Mouse.git] / t-failing / 030_roles / 021_role_composite_exclusion.t
CommitLineData
67199842 1#!/usr/bin/perl
fde8e43f 2# This is automatically generated by author/import-moose-test.pl.
3# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4use t::lib::MooseCompat;
67199842 5
6use strict;
7use warnings;
8
fde8e43f 9use Test::More;
10$TODO = q{Mouse is not yet completed};
67199842 11use Test::Exception;
12
fde8e43f 13use Mouse::Meta::Role::Application;
67199842 14use 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
36ok(Role::ExcludesFoo->meta->excludes_role('Role::Foo'), '... got the right exclusions');
37ok(Role::DoesExcludesFoo->meta->excludes_role('Role::Foo'), '... got the right exclusions');
38
39# test simple exclusion
40dies_ok {
fde8e43f 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 {
fde8e43f 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 {
fde8e43f 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
89dies_ok {
fde8e43f 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
102dies_ok {
fde8e43f 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
fde8e43f 113done_testing;