#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 10;
+use Test::More tests => 14;
use Test::Exception;
use MooseX::Role::Parameterized::Parameters;
use MooseX::Role::Parameterized;
};
-my $parameter_metaclass = MyRole::NoParameters->meta->parameter_metaclass;
-is($parameter_metaclass->get_all_attributes, 0, "no parameters");
+my $parameters_metaclass = MyRole::NoParameters->meta->parameters_metaclass;
+is($parameters_metaclass->get_all_attributes, 0, "no parameters");
do {
package MyRole::LengthParameter;
use MooseX::Role::Parameterized;
parameter length => (
- is => 'ro',
isa => 'Int',
required => 1,
);
};
-$parameter_metaclass = MyRole::LengthParameter->meta->parameter_metaclass;
-is($parameter_metaclass->get_all_attributes, 1, "exactly one parameter");
+$parameters_metaclass = MyRole::LengthParameter->meta->parameters_metaclass;
+is($parameters_metaclass->get_all_attributes, 1, "exactly one parameter");
-my $parameter = ($parameter_metaclass->get_all_attributes)[0];
+my $parameter = ($parameters_metaclass->get_all_attributes)[0];
+isa_ok($parameter, 'MooseX::Role::Parameterized::Meta::Parameter');
is($parameter->name, 'length', "parameter name");
ok($parameter->is_required, "parameter is required");
is($p->length, 5, "correct length");
+throws_ok {
+ $p->length(10);
+} qr/^Cannot assign a value to a read-only accessor/;
+
do {
package MyRole::LengthParameter;
use MooseX::Role::Parameterized;
- parameter name => (
+ parameter ['first_name', 'last_name'] => (
is => 'rw',
isa => 'Str',
);
};
-$parameter_metaclass = MyRole::LengthParameter->meta->parameter_metaclass;
-is($parameter_metaclass->get_all_attributes, 2, "two parameters");
+$parameters_metaclass = MyRole::LengthParameter->meta->parameters_metaclass;
+is($parameters_metaclass->get_all_attributes, 3, "three parameters");
-my $name_param = $parameter_metaclass->get_attribute('name');
-is($name_param->type_constraint, 'Str', 'parameter type constraint');
-ok(!$name_param->is_required, 'name is optional');
+for my $param_name ('first_name', 'last_name') {
+ my $param = $parameters_metaclass->get_attribute($param_name);
+ is($param->type_constraint, 'Str', "$param_name type constraint");
+ ok(!$param->is_required, "$param_name is optional");
+}