1use Test::More; 2use strict; use warnings FATAL => 'all'; 3 4use List::Objects::WithUtils 'array'; 5 6my $arr = array( 1 .. 3 ); 7 8cmp_ok $arr->get_or_else(0), '==', 1, 9 'get_or_else existing element ok'; 10 11ok !$arr->get_or_else(3), 12 'get_or_else nonexistant element without default'; 13 14cmp_ok $arr->get_or_else(3 => 'foo'), 'eq', 'foo', 15 'get_or_else defaults to scalar ok'; 16 17my ($invoc, $pos); 18cmp_ok $arr->get_or_else(3 => sub { ($invoc, $pos) = @_; 'foo' }), 19 'eq', 'foo', 20 'get_or_else with coderef ok'; 21 22cmp_ok $invoc, '==', $arr, 23 'get_or_else coderef invocant ok'; 24cmp_ok $pos, '==', 3, 25 'get_or_else coderef index ok'; 26 27done_testing; 28