X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F001-parameters.t;h=838cca0a2753dc8bd0272962e54596a8d290f6be;hb=e476d78d9c52d66d12f9c3ab2f8cfa8783ccbae2;hp=33ce86aac5dc0c9a67eef10fd4b073f9543020c8;hpb=31fb288b6470670ed9798ac456458df002f3d7e5;p=gitmo%2FMooseX-Role-Parameterized.git diff --git a/t/001-parameters.t b/t/001-parameters.t index 33ce86a..838cca0 100644 --- a/t/001-parameters.t +++ b/t/001-parameters.t @@ -1,7 +1,7 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 12; use Test::Exception; use MooseX::Role::Parameterized::Parameters; @@ -35,3 +35,32 @@ my $parameter = ($parameter_metaclass->get_all_attributes)[0]; is($parameter->name, 'length', "parameter name"); ok($parameter->is_required, "parameter is required"); +throws_ok { + MyRole::LengthParameter->meta->construct_parameters; +} qr/^Attribute \(length\) is required/; + +$p = MyRole::LengthParameter->meta->construct_parameters( + length => 5, +); + +is($p->length, 5, "correct length"); + +do { + package MyRole::LengthParameter; + use MooseX::Role::Parameterized; + + parameter ['first_name', 'last_name'] => ( + is => 'rw', + isa => 'Str', + ); +}; + +$parameter_metaclass = MyRole::LengthParameter->meta->parameter_metaclass; +is($parameter_metaclass->get_all_attributes, 3, "three parameters"); + +for my $param_name ('first_name', 'last_name') { + my $param = $parameter_metaclass->get_attribute($param_name); + is($param->type_constraint, 'Str', "$param_name type constraint"); + ok(!$param->is_required, "$param_name is optional"); +} +