1#!/usr/bin/perl -wT 2 3use strict; 4use Test::More tests => 773; 5use_ok('Data::Page'); 6 7my $name; 8 9foreach my $line (<DATA>) { 10 chomp $line; 11 next unless $line; 12 13 if ($line =~ /^# ?(.+)/) { 14 $name = $1; 15 next; 16 } 17 18 print "Line is: $line\n"; 19 my @vals = map { /^undef$/ ? undef : /^''$/ ? '' : $_ } split /\s+/, $line; 20 21 my $page = Data::Page->new(@vals[ 0, 1, 2 ]); 22 print "Old style\n"; 23 check($page, $name, @vals); 24 25 $page = Data::Page->new(); 26 $page->total_entries($vals[0]); 27 $page->entries_per_page($vals[1]); 28 $page->current_page($vals[2]); 29 print "New style\n"; 30 check($page, $name, @vals); 31} 32 33my $page = Data::Page->new(0, 10); 34isa_ok($page, 'Data::Page'); 35my @empty; 36my @spliced = $page->splice(\@empty); 37is(scalar(@spliced), 0, "Splice on empty is empty"); 38 39sub check { 40 my ($page, $name, @vals) = @_; 41 isa_ok($page, 'Data::Page'); 42 43 is($page->first_page, $vals[3], "$name: first page"); 44 is($page->last_page, $vals[4], "$name: last page"); 45 is($page->first, $vals[5], "$name: first"); 46 is($page->last, $vals[6], "$name: last"); 47 is($page->previous_page, $vals[7], "$name: previous_page"); 48 is($page->current_page, $vals[8], "$name: current_page"); 49 is($page->next_page, $vals[9], "$name: next_page"); 50 51 my @integers = (0 .. $vals[0] - 1); 52 @integers = $page->splice(\@integers); 53 my $integers = join ',', @integers; 54 is($integers, $vals[10], "$name: splice"); 55 is($page->entries_on_this_page, $vals[11], "$name: entries_on_this_page"); 56 57 my $skipped = $vals[5] - 1; 58 $skipped = 0 if $skipped < 0; 59 is($page->skipped, $skipped, "$name: skipped"); 60} 61 62# Format of test data: 0=number of entries, 1=entries per page, 2=current page, 63# 3=first page, 4=last page, 5=first entry on page, 6=last entry on page, 64# 7=previous page, 8=current page, 9=next page, 10=current entries, 11=current number of entries 65 66__DATA__ 67# Initial test 6850 10 1 1 5 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 6950 10 2 1 5 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10 7050 10 3 1 5 21 30 2 3 4 20,21,22,23,24,25,26,27,28,29 10 7150 10 4 1 5 31 40 3 4 5 30,31,32,33,34,35,36,37,38,39 10 7250 10 5 1 5 41 50 4 5 undef 40,41,42,43,44,45,46,47,48,49 10 73 74# Under 10 751 10 1 1 1 1 1 undef 1 undef 0 1 762 10 1 1 1 1 2 undef 1 undef 0,1 2 773 10 1 1 1 1 3 undef 1 undef 0,1,2 3 784 10 1 1 1 1 4 undef 1 undef 0,1,2,3 4 795 10 1 1 1 1 5 undef 1 undef 0,1,2,3,4 5 806 10 1 1 1 1 6 undef 1 undef 0,1,2,3,4,5 6 817 10 1 1 1 1 7 undef 1 undef 0,1,2,3,4,5,6 7 828 10 1 1 1 1 8 undef 1 undef 0,1,2,3,4,5,6,7 8 839 10 1 1 1 1 9 undef 1 undef 0,1,2,3,4,5,6,7,8 9 8410 10 1 1 1 1 10 undef 1 undef 0,1,2,3,4,5,6,7,8,9 10 85 86# Over 10 8711 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 8811 10 2 1 2 11 11 1 2 undef 10 1 8912 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 9012 10 2 1 2 11 12 1 2 undef 10,11 2 9113 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 9213 10 2 1 2 11 13 1 2 undef 10,11,12 3 93 94# Under 20 9519 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 9619 10 2 1 2 11 19 1 2 undef 10,11,12,13,14,15,16,17,18 9 9720 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 9820 10 2 1 2 11 20 1 2 undef 10,11,12,13,14,15,16,17,18,19 10 99 100# Over 20 10121 10 1 1 3 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 10221 10 2 1 3 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10 10321 10 3 1 3 21 21 2 3 undef 20 1 10422 10 1 1 3 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 10522 10 2 1 3 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10 10622 10 3 1 3 21 22 2 3 undef 20,21 2 10723 10 1 1 3 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10 10823 10 2 1 3 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10 10923 10 3 1 3 21 23 2 3 undef 20,21,22 3 110 111# Zero test 1120 10 1 1 1 0 0 undef 1 undef '' 0 113