1use Test::More; 2use strict; use warnings FATAL => 'all'; 3 4use List::Objects::WithUtils 'array'; 5 6my $arr = array( 1 .. 10 ); 7 8my $halved = $arr->nsect(2); 9 10isa_ok $halved, 'List::Objects::WithUtils::Array', 11 'nsect returned array obj'; 12 13ok $halved->count == 2, 'nsect(2) returned two items'; 14 15ok $halved->get(0)->count == $halved->get(1)->count, 16 'nsect(2) on even set returned even sets'; 17 18is_deeply [ $halved->get(0)->all ], [ 1 .. 5 ], 19 'nsect(2) first set ok' or diag explain $halved; 20is_deeply [ $halved->get(1)->all ], [ 6 .. 10 ], 21 'nsect(2) second set ok' or diag explain $halved; 22 23my $thrice = $arr->nsect(3); 24is_deeply [ $thrice->get(0)->all ], [ 1 .. 4 ], 25 'nsect(3) first set ok' or diag explain $thrice; 26is_deeply [ $thrice->get(1)->all ], [ 5 .. 7 ], 27 'nsect(3) second set ok' or diag explain $thrice; 28is_deeply [ $thrice->get(2)->all ], [ 8 .. 10 ], 29 'nsect(4) third set ok' or diag explain $thrice; 30 31my $zeroarg = array(1..10)->nsect; 32isa_ok $zeroarg, 'List::Objects::WithUtils::Array'; 33ok $zeroarg->is_empty, 'zero arg nsect produced empty array obj' 34 or diag explain $zeroarg; 35 36my $too_many = array(1..3)->nsect(5); 37ok $too_many->count == 3, 'total sections limited to array count'; 38 39ok array->nsect(3)->is_empty, 'nsect on empty array returns empty array'; 40 41done_testing; 42