#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
my $testdata = [
{
create_args => [],
pages_in_set => [1 .. 5],
show => qq(1
2
3
4
5
>Next
>>Last),
},
{
create_args => [
curitem => 4
],
pages_in_set => [2 .. 6],
show => qq(<<First
<Previous
2
3
4
5
6
>Next
>>Last),
},
{
create_args => [
curitem => 15,
],
pages_in_set => [6 .. 10],
show => qq(<<First
<Previous
6
7
8
9
10),
},
];
plan tests => 2 + ( @$testdata * 3 );
#BEGIN begin block doesn't work when planning tests runtime
{
use_ok( 'Data::Page' );
use_ok( 'Data::Page::Set' );
}
sub create_page_set {
my %attr = @_;
my $datalen = $attr{datalen} || 150;
my $curitem = $attr{curitem} || 1;
my $itemspp = $attr{itemspp} || 15;
my $setsize = $attr{setsize} || 5;
my $show = $attr{show} || {};
my @data = 0 .. $datalen - 1;
my $page = Data::Page->new(
scalar @data,
$itemspp,
$curitem,
);
my $pageset = Data::Page::Set->new(
$page,
$setsize,
$show,
);
return wantarray ? ($pageset, \@data)
: $pageset;
}
for my $test ( @$testdata ) {
my $pageset = create_page_set( @{$test->{create_args}} );
isa_ok( $pageset, 'Data::Page::Set' );
is_deeply(
[$pageset->pages_in_set],
$test->{pages_in_set},
"pages_in_set ok",
);
is(
$pageset->show,
$test->{show},
"show ok",
);
}