Commit | Line | Data |
665e848b |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
31fb288b |
4 | use Test::More tests => 5; |
69d1f098 |
5 | use Test::Exception; |
6 | |
665e848b |
7 | use MooseX::Role::Parameterized::Parameters; |
8 | |
9 | my $p = MooseX::Role::Parameterized::Parameters->new; |
10 | can_ok($p => 'meta'); |
11 | |
69d1f098 |
12 | do { |
13 | package MyRole::NoParameters; |
14 | use MooseX::Role::Parameterized; |
15 | }; |
16 | |
31fb288b |
17 | my $parameter_metaclass = MyRole::NoParameters->meta->parameter_metaclass; |
18 | is($parameter_metaclass->get_all_attributes, 0, "no parameters"); |
19 | |
20 | do { |
21 | package MyRole::LengthParameter; |
22 | use MooseX::Role::Parameterized; |
23 | |
24 | parameter length => ( |
25 | is => 'ro', |
26 | isa => 'Int', |
27 | required => 1, |
28 | ); |
29 | }; |
30 | |
31 | $parameter_metaclass = MyRole::LengthParameter->meta->parameter_metaclass; |
32 | is($parameter_metaclass->get_all_attributes, 1, "exactly one parameter"); |
33 | |
34 | my $parameter = ($parameter_metaclass->get_all_attributes)[0]; |
35 | is($parameter->name, 'length', "parameter name"); |
36 | ok($parameter->is_required, "parameter is required"); |
69d1f098 |
37 | |