diff options
Diffstat (limited to 't/exceptions/moose-meta-method-accessor-native.t')
-rw-r--r-- | t/exceptions/moose-meta-method-accessor-native.t | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/t/exceptions/moose-meta-method-accessor-native.t b/t/exceptions/moose-meta-method-accessor-native.t new file mode 100644 index 0000000..4afc1af --- /dev/null +++ b/t/exceptions/moose-meta-method-accessor-native.t @@ -0,0 +1,138 @@ +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; |