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