X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fnative_traits%2Ftrait_array.t;h=086b1430aeec5f845d888c27da4b3a5cf9ba1874;hb=2dc82f5015c46e8415b640c798a9064e1486d585;hp=decf151b671751c847ee0ab87272b6a4c989d0ef;hpb=829433c47061dd70a608bfcd940113c4172b6950;p=gitmo%2FMoose.git diff --git a/t/native_traits/trait_array.t b/t/native_traits/trait_array.t index decf151..086b143 100644 --- a/t/native_traits/trait_array.t +++ b/t/native_traits/trait_array.t @@ -53,6 +53,8 @@ use Test::Moose; grep_curried => [ grep => ( sub { $_ < 5 } ) ], first => 'first', first_curried => [ first => ( sub { $_ % 2 } ) ], + first_index => 'first_index', + first_index_curried => [ first_index => ( sub { $_ % 2 } ) ], join => 'join', join_curried => [ join => '-' ], shuffle => 'shuffle', @@ -523,6 +525,32 @@ sub run_tests { $obj->first_curried( sub { } ); }, qr/Cannot call first with more than 1 argument/, 'throws an error when passing one argument passed to first_curried' ); + + is( + $obj->first_index( sub { $_ % 2 } ), + 3, + 'first_index returns expected value' + ); + + like( exception { $obj->first_index }, qr/Cannot call first_index without at least 1 argument/, 'throws an error when passing no arguments to first_index' ); + + like( exception { + $obj->first_index( sub { }, 2 ); + }, qr/Cannot call first_index with more than 1 argument/, 'throws an error when passing two arguments to first_index' ); + + like( exception { $obj->first_index( {} ) }, qr/The argument passed to first_index must be a code reference/, 'throws an error when passing a non coderef to first_index' ); + + is( + $obj->first_index_curried, + 3, + 'first_index_curried returns expected value' + ); + + like( exception { + $obj->first_index_curried( sub { } ); + }, qr/Cannot call first_index with more than 1 argument/, 'throws an error when passing one argument passed to first_index_curried' ); + + $obj->_values( [ 1 .. 4 ] ); is( @@ -669,4 +697,22 @@ sub run_tests { $class; } +{ + my ( $class, $handles ) = build_class( isa => 'ArrayRef' ); + my $obj = $class->new; + with_immutable { + is( + exception { $obj->accessor( 0, undef ) }, + undef, + 'can use accessor to set value to undef' + ); + is( + exception { $obj->accessor_curried_1(undef) }, + undef, + 'can use curried accessor to set value to undef' + ); + } + $class; +} + done_testing;