Commit | Line | Data |
753682d4 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
c389f1df |
4 | use Test::More tests => 5; |
753682d4 |
5 | use Test::Exception; |
6 | |
7 | my ($parameters, %args); |
8 | |
9 | do { |
c389f1df |
10 | package MyPerson; |
753682d4 |
11 | use MooseX::Role::Parameterized; |
12 | |
c389f1df |
13 | parameter default_age => ( |
753682d4 |
14 | is => 'rw', |
15 | isa => 'Int', |
16 | required => 1, |
17 | ); |
18 | |
19 | role { |
20 | ($parameters, %args) = @_; |
c389f1df |
21 | |
22 | has age => ( |
23 | is => 'ro', |
24 | default => $parameters->default_age, |
25 | ); |
753682d4 |
26 | }; |
27 | }; |
28 | |
c389f1df |
29 | ok(MyPerson->meta->has_role_generator, "MyPerson has a role generator"); |
753682d4 |
30 | |
c389f1df |
31 | my $role = MyPerson->meta->generate_role( |
32 | default_age => 7, |
753682d4 |
33 | ); |
34 | |
35 | isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role'); |
36 | |
c389f1df |
37 | is($parameters->default_age, 7); |
38 | is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on"); |
39 | |
40 | my $age_attr = $role->get_attribute('age'); |
41 | is($age_attr->{default}, 7, "role's age attribute has the right default"); |
753682d4 |
42 | |