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