Commit | Line | Data |
753682d4 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
59a0f991 |
4 | use Test::More tests => 8; |
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 => ( |
c389f1df |
23 | default => $parameters->default_age, |
24 | ); |
dbb3fea2 |
25 | |
26 | method birthday => sub { |
27 | my $self = shift; |
28 | return 2000 - $self->age; |
29 | }; |
753682d4 |
30 | }; |
31 | }; |
32 | |
c389f1df |
33 | ok(MyPerson->meta->has_role_generator, "MyPerson has a role generator"); |
753682d4 |
34 | |
c389f1df |
35 | my $role = MyPerson->meta->generate_role( |
36 | default_age => 7, |
753682d4 |
37 | ); |
38 | |
39 | isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role'); |
40 | |
59a0f991 |
41 | is($role->parameters, $parameters, 'the generated role knows its parameters'); |
42 | |
c389f1df |
43 | is($parameters->default_age, 7); |
44 | is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on"); |
45 | |
46 | my $age_attr = $role->get_attribute('age'); |
47 | is($age_attr->{default}, 7, "role's age attribute has the right default"); |
753682d4 |
48 | |
dbb3fea2 |
49 | my $birthday_method = $role->get_method('birthday'); |
50 | is($birthday_method->name, 'birthday', "method name"); |
33b2d773 |
51 | is($birthday_method->package_name, $role->name, "package name"); |