Parse-Method-Signatures
view release on metacpan or search on metacpan
use strict;
use warnings;
use Test::More tests => 43;
use Test::Differences;
use Test::Moose;
use MooseX::Types::Structured qw/Dict/;
use Parse::Method::Signatures;
use aliased 'Parse::Method::Signatures::Param';
BEGIN {
eval "use aliased 'Parse::Method::Signatures::Param::${_}'"
for qw/Named Positional Bindable Placeholder/;
eval "use aliased 'Parse::Method::Signatures::Param::Unpacked::${_}' => 'Unpacked${_}'"
for qw/Array Hash/;
}
{
my $sig = Parse::Method::Signatures->signature('(Str $name)');
ok(!$sig->has_named_params);
ok($sig->has_positional_params);
is(scalar @{ $sig->positional_params }, 1);
my ($param) = $sig->positional_params;
isa_ok($param, Param);
ok($param->has_type_constraints);
#is($param->type_constraints->data, 'Str');
is($param->variable_name, '$name');
ok($param->required);
ok(!$param->has_constraints);
does_ok($param, $_) for Positional, Bindable;
my $tc = $param->meta_type_constraint;
isa_ok($tc, 'Moose::Meta::TypeConstraint');
is($tc->name, 'Str');
}
{
my $sig = Parse::Method::Signatures->signature('(Str :$who, Int :$age where { $_ > 0 })');
ok(!$sig->has_positional_params);
ok($sig->has_named_params);
is(scalar @{ $sig->named_params }, 2);
my @params = $sig->named_params;
isa_ok($_, Param) for @params;
for my $param (@params) {
does_ok($param, $_) for Named, Bindable;
}
my ($who, $age) = @params;
#is($who->type_constraints->data, 'Str');
is($who->variable_name, '$who');
ok(!$who->required);
ok(!$who->has_constraints);
my $tc = $who->meta_type_constraint;
isa_ok($tc, 'Moose::Meta::TypeConstraint');
is($tc->name, 'Str');
#is($age->type_constraints->data, 'Int');
is($age->variable_name, '$age');
( run in 1.026 second using v1.01-cache-2.11-cpan-39bf76dae61 )