Commit | Line | Data |
eac6d242 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
4 | use Test::More tests => 5; |
5 | use Test::Exception; |
6 | |
7 | do { |
8 | package MyRole::Requires; |
9 | use MooseX::Role::Parameterized; |
10 | |
11 | parameter requires => ( |
12 | is => 'rw', |
13 | isa => 'Str', |
14 | ); |
15 | |
16 | role { |
17 | my $p = shift; |
18 | requires $p->requires; |
19 | }; |
20 | }; |
21 | |
22 | sub requires_names { |
23 | map { |
1a8744bd |
24 | MyRole::Requires->meta->generate_role( |
25 | parameters => { |
26 | requires => $_, |
27 | }, |
28 | )->name |
eac6d242 |
29 | } @_ |
30 | } |
31 | |
32 | throws_ok { |
33 | Moose::Meta::Class->create_anon_class( |
34 | roles => [ requires_names('alpha') ], |
35 | ); |
36 | } qr/'Moose::Meta::Role::__ANON__::SERIAL::\d+' requires the method 'alpha' to be implemented by 'Class::MOP::Class::__ANON__::SERIAL::\d+'/; |
37 | |
38 | lives_ok { |
39 | Moose::Meta::Class->create_anon_class( |
40 | methods => { |
41 | alpha => sub {}, |
42 | }, |
43 | roles => [ requires_names('alpha') ], |
44 | ); |
45 | }; |
46 | |
47 | throws_ok { |
48 | Moose::Meta::Class->create_anon_class( |
49 | methods => { |
50 | alpha => sub {}, |
51 | }, |
52 | roles => [ requires_names('alpha', 'beta') ], |
53 | ); |
54 | } qr/'Moose::Meta::Role::__ANON__::SERIAL::\d+\|Moose::Meta::Role::__ANON__::SERIAL::\d+' requires the method 'beta' to be implemented by 'Class::MOP::Class::__ANON__::SERIAL::\d+'/; |
55 | |
56 | throws_ok { |
57 | Moose::Meta::Class->create_anon_class( |
58 | methods => { |
59 | beta => sub {}, |
60 | }, |
61 | roles => [ requires_names('alpha', 'beta') ], |
62 | ); |
63 | } qr/'Moose::Meta::Role::__ANON__::SERIAL::\d+\|Moose::Meta::Role::__ANON__::SERIAL::\d+' requires the method 'alpha' to be implemented by 'Class::MOP::Class::__ANON__::SERIAL::\d+'/; |
64 | |
65 | lives_ok { |
66 | Moose::Meta::Class->create_anon_class( |
67 | methods => { |
68 | alpha => sub {}, |
69 | beta => sub {}, |
70 | }, |
71 | roles => [ requires_names('alpha', 'beta') ], |
72 | ); |
73 | }; |
74 | |