Finish excludes tests
[gitmo/MooseX-Role-Parameterized.git] / t / 007-excludes.t
CommitLineData
fa627596 1#!/usr/bin/env perl
2use strict;
3use warnings;
636c0aa5 4use Test::More tests => 3;
fa627596 5use Test::Exception;
6
7do {
8 package MyRole::Excluder;
9 use MooseX::Role::Parameterized;
10
11 parameter exclude => (
12 is => 'rw',
13 isa => 'Str',
14 );
15
16 role {
17 my $p = shift;
18 excludes $p->exclude;
19 };
20};
21
22Moose::Meta::Role->create("Role::A");
23Moose::Meta::Role->create("Role::B");
24
25sub excludes_roles {
26 map {
27 MyRole::Excluder->meta->generate_role(exclude => $_)->name
28 } @_
29}
30
636c0aa5 31lives_ok {
32 Moose::Meta::Class->create_anon_class(
33 roles => [ excludes_roles('Role::A') ],
34 );
35};
36
37throws_ok {
38 Moose::Meta::Class->create_anon_class(
39 roles => [ 'Role::A', excludes_roles('Role::A') ],
40 );
41} qr/^Conflict detected: Role Moose::Meta::Role::__ANON__::SERIAL::\d+ excludes role 'Role::A'/;
42
43lives_ok {
44 Moose::Meta::Class->create_anon_class(
45 roles => [ 'Role::B', excludes_roles('Role::A') ],
46 );
8a951e2c 47};
fa627596 48