4 use Test::More tests => 14;
7 use MooseX::Role::Parameterized::Parameters;
9 my $p = MooseX::Role::Parameterized::Parameters->new;
13 package MyRole::NoParameters;
14 use MooseX::Role::Parameterized;
17 my $parameters_metaclass = MyRole::NoParameters->meta->parameters_metaclass;
18 is($parameters_metaclass->get_all_attributes, 0, "no parameters");
21 package MyRole::LengthParameter;
22 use MooseX::Role::Parameterized;
31 $parameters_metaclass = MyRole::LengthParameter->meta->parameters_metaclass;
32 is($parameters_metaclass->get_all_attributes, 1, "exactly one parameter");
34 my $parameter = ($parameters_metaclass->get_all_attributes)[0];
35 isa_ok($parameter, 'MooseX::Role::Parameterized::Meta::Parameter');
36 is($parameter->name, 'length', "parameter name");
37 ok($parameter->is_required, "parameter is required");
40 MyRole::LengthParameter->meta->construct_parameters;
41 } qr/^Attribute \(length\) is required/;
43 $p = MyRole::LengthParameter->meta->construct_parameters(
47 is($p->length, 5, "correct length");
51 } qr/^Cannot assign a value to a read-only accessor/;
54 package MyRole::LengthParameter;
55 use MooseX::Role::Parameterized;
57 parameter ['first_name', 'last_name'] => (
63 $parameters_metaclass = MyRole::LengthParameter->meta->parameters_metaclass;
64 is($parameters_metaclass->get_all_attributes, 3, "three parameters");
66 for my $param_name ('first_name', 'last_name') {
67 my $param = $parameters_metaclass->get_attribute($param_name);
68 is($param->type_constraint, 'Str', "$param_name type constraint");
69 ok(!$param->is_required, "$param_name is optional");