1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#!perl
use strict;
use warnings FATAL => 'all';
use Test::More
eval { require Moose }
? (tests => 7)
: (skip_all => "Moose required for testing types")
;
{
package Foo;
use Moose;
use Function::Parameters {
fun => { defaults => 'function', reify_type => 'moose' },
method => { defaults => 'method', reify_type => 'moose' },
};
for my $meth (qw/foo bar baz/) {
Foo->meta->add_method("anon_$meth" => method (Str $bar) {
$meth . $bar
});
eval qq{
method str_$meth (Str \$bar) {
\$meth . \$bar
}
};
die $@ if $@;
}
}
can_ok('Foo', map { ("anon_$_", "str_$_") } qw/foo bar baz/);
my $foo = Foo->new;
for my $meth (qw/foo bar baz/) {
is($foo->${\"anon_$meth"}('bar'), $meth . 'bar');
is($foo->${\"str_$meth"}('bar'), $meth . 'bar');
}
|