1use Test::More;
2use strict; use warnings;
3
4use List::Objects::WithUtils 'array';
5
6my $arr = array('a' .. 'f');
7my %as_hash = (map {; $_ => 1 } $arr->all );
8
9my $rolled = $arr->roll(3);
10ok $rolled->count == 3, 'rolled three items';
11for my $item ($rolled->all) {
12  ok exists $as_hash{$item}, "rolled item '$item' ok";
13}
14
15$rolled = $arr->roll(8);
16ok $rolled->count == 8, 'rolled more than size of array';
17for my $item ($rolled->all) {
18  ok exists $as_hash{$item}, "rolled item '$item' ok";
19}
20
21$rolled = array->roll(3);
22ok $rolled->grep(sub { !defined }) && $rolled->count == 3,
23  'roll on empty array ok'
24  or diag explain $rolled;
25
26
27done_testing
28