use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Moose();
{
{
package Foo;
use Moose;
has 'foo' => (
is => 'ro',
isa => 'Str',
traits => ['String'],
handles => {
substr => 'substr',
},
required => 1
);
}
my $foo_obj = Foo->new( foo => 'hello' );
my $exception = exception {
$foo_obj->substr(1,2,3,3);
};
like(
$exception,
qr/Cannot call substr with more than 3 arguments/,
"substr doesn't take 4 arguments");
isa_ok(
$exception,
'Moose::Exception::MethodExpectsFewerArgs',
"substr doesn't take 4 arguments");
is(
$exception->method_name,
"substr",
"substr doesn't take 4 arguments");
is(
$exception->maximum_args,
3,
"substr doesn't take 4 arguments");
}
{
{
package Bar;
use Moose;
has 'foo' => (
is => 'ro',
isa => 'Str',
traits => ['String'],
handles => {
substr => 'substr',
},
required => 1
);
}
my $foo_obj = Bar->new( foo => 'hello' );
my $exception = exception {
$foo_obj->substr;
};
like(
$exception,
qr/Cannot call substr without at least 1 argument/,
"substr expects atleast 1 argument");
isa_ok(
$exception,
'Moose::Exception::MethodExpectsMoreArgs',
"substr expects atleast 1 argument");
is(
$exception->method_name,
"substr",
"substr expects atleast 1 argument");
is(
$exception->minimum_args,
1,
"substr expects atleast 1 argument");
}
{
{
package Bar2;
use Moose;
with 'Moose::Meta::Method::Accessor::Native::Reader';
sub _return_value {
return 1;
}
sub _get_value {
return 1
}
sub _inline_store_value {
return 1;
}
sub _eval_environment {
return 1;
}
}
my $exception = exception {
Bar2->new( curried_arguments => 'xyz' );
};
like(
$exception,
qr/You must supply a curried_arguments which is an ARRAY reference/,
"curried arguments is 'xyz'");
isa_ok(
$exception,
'Moose::Exception::MustSupplyArrayRefAsCurriedArguments',
"curried arguments is 'xyz'");
is(
$exception->class_name,
"Bar2",
"curried arguments is 'xyz'");
}
done_testing;