X-Git-Url: http://git.shiar.net/perl/list-index.git/blobdiff_plain/e0d12a55c119c9473d1ea57c4e57bb5c6ff87157..HEAD:/t/25-apply.t diff --git a/t/25-apply.t b/t/25-apply.t index 92467c3..eadc285 100644 --- a/t/25-apply.t +++ b/t/25-apply.t @@ -7,29 +7,28 @@ use Test::NoWarnings; use Data::Dump 'pp'; use List::Util qw(first min max); use List::MoreUtils qw(uniq firstidx); +use POSIX qw(ceil); BEGIN { use_ok('List::Index' => 'rangematch'); } { - my %options = (pagesize => 10, context => 2); + my $rows = rand(100) ** 2; + my %options = (pagesize => 50, context => 4, length => 4); # generate random test data my @values; - for (0 .. rand 1000) { + for (0 .. $rows) { my $string = join '', map { # random character (a-z or random digit) chr((int rand(27) || rand(10)-ord('0')*0) + ord('a')-1) - } 0 .. rand(16); + } 0 .. rand($options{length}); push @values, $string unless @values and $values[-1] eq $string; } @values = uniq @values; # find ranges for generated values - my $ranges = eval { - my $index = List::Index->new(\@values); - $index->ranges(\%options); - }; + my $ranges = eval { List::Index->new(\%options)->ranges(\@values) }; my $failure = $@ || ref $ranges ne 'ARRAY' && ( $ranges ? 'returned ranges not an array ref' : 'no ranges returned' ); @@ -64,13 +63,13 @@ BEGIN { use_ok('List::Index' => 'rangematch'); } } # analyse final page sizes - if (my $limit = $options{pagesize} + $options{context}) { + my $pagesize = scalar(@values) / scalar(@matches); + if (my $limit = ceil($pagesize) + $options{context}) { my $largest = max(map { scalar @$_ } @matches); cmp_ok($largest, '<=', $limit, "page sizes under $limit") or pagecontext($largest); } -# pop @matches; - if (my $limit = $options{pagesize} - $options{context}) { + if (my $limit = int($pagesize) - $options{context}) { my $smallest = min(map {scalar @$_} @matches); cmp_ok($smallest, '>=', $limit, "page sizes over $limit") or pagecontext($smallest);