<html>
<head>
</head>
<body>
<pre id="test">
<script type="text/javascript" src="lib/Test/Builder.js"></script>
<script type="text/javascript" src="lib/Test/More.js"></script>
<script type="text/javascript" src="../share/JS/Data/Page.js"></script>
<script>
// Copied from Toshimasa Ishibashi
plan({ tests: 772 });
var cases = [
'# Initial test',
'50 10 1 1 5 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'50 10 2 1 5 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10',
'50 10 3 1 5 21 30 2 3 4 20,21,22,23,24,25,26,27,28,29 10',
'50 10 4 1 5 31 40 3 4 5 30,31,32,33,34,35,36,37,38,39 10',
'50 10 5 1 5 41 50 4 5 undef 40,41,42,43,44,45,46,47,48,49 10',
'# Under 10',
'1 10 1 1 1 1 1 undef 1 undef 0 1',
'2 10 1 1 1 1 2 undef 1 undef 0,1 2',
'3 10 1 1 1 1 3 undef 1 undef 0,1,2 3',
'4 10 1 1 1 1 4 undef 1 undef 0,1,2,3 4',
'5 10 1 1 1 1 5 undef 1 undef 0,1,2,3,4 5',
'6 10 1 1 1 1 6 undef 1 undef 0,1,2,3,4,5 6',
'7 10 1 1 1 1 7 undef 1 undef 0,1,2,3,4,5,6 7',
'8 10 1 1 1 1 8 undef 1 undef 0,1,2,3,4,5,6,7 8',
'9 10 1 1 1 1 9 undef 1 undef 0,1,2,3,4,5,6,7,8 9',
'10 10 1 1 1 1 10 undef 1 undef 0,1,2,3,4,5,6,7,8,9 10',
'# Over 10',
'11 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'11 10 2 1 2 11 11 1 2 undef 10 1',
'12 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'12 10 2 1 2 11 12 1 2 undef 10,11 2',
'13 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'13 10 2 1 2 11 13 1 2 undef 10,11,12 3',
'# Under 20',
'19 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'19 10 2 1 2 11 19 1 2 undef 10,11,12,13,14,15,16,17,18 9',
'20 10 1 1 2 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'20 10 2 1 2 11 20 1 2 undef 10,11,12,13,14,15,16,17,18,19 10',
'# Over 20',
'21 10 1 1 3 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'21 10 2 1 3 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10',
'21 10 3 1 3 21 21 2 3 undef 20 1',
'22 10 1 1 3 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'22 10 2 1 3 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10',
'22 10 3 1 3 21 22 2 3 undef 20,21 2',
'23 10 1 1 3 1 10 undef 1 2 0,1,2,3,4,5,6,7,8,9 10',
'23 10 2 1 3 11 20 1 2 3 10,11,12,13,14,15,16,17,18,19 10',
'23 10 3 1 3 21 23 2 3 undef 20,21,22 3',
'# Zero test',
'0 10 1 1 1 0 0 undef 1 undef "" 0'
];
var name = '';
var p;
for( var i=0; i<cases.length; i++ ){
var s = cases[i];
if( s.match( /^# ?(.+?)/ ) ){
name = s.match( /^# ?(.+)/ )[1];
continue;
}
var arr = s.split( /\s+/ );
for( var x=0; x<arr.length; x++ ){
if( arr[x].match( /^undef$/ ) ){
arr[x] = undefined;
}else if( arr[x].match( /^""$/ ) ){
arr[x] = '';
}else if( x == 10 ){
continue;
}else{
arr[x] = parseInt( arr[x] );
}
}
//diag('old: ', arr[0], ', ', arr[1], ', ', arr[2]);
p = new Data.Page( arr[0], arr[1], arr[2] );
check( p, name, arr );
//diag('new: ', arr[0], ', ', arr[1], ', ', arr[2]);
p = new Data.Page();
p.total_entries( arr[0] );
p.entries_per_page( arr[1] );
p.current_page( arr[2] );
check( p, name, arr );
}
p = new Data.Page( 0, 10 );
isaOK( p, 'Data.Page' );
var empty = [];
var spliced = p.splice( empty );
is( spliced.length, 0, "Splice on empty is empty" );
function check ( page, name, vals ){
isaOK( page, 'Data.Page' );
is( p.first_page(), vals[3], name + ': first page' );
is( p.last_page(), vals[4], name + ': last page' );
is( p.first(), vals[5], name + ': first' );
is( p.last(), vals[6], name + ': last' );
is( p.previous_page(), vals[7], name + ': previous page' );
is( p.current_page(), vals[8], name + ': current page' );
is( p.next_page(), vals[9], name + ': next page' );
var int = [];
for( var i=0; i < vals[0]; i++ ){ int.push( i ) }
int = p.splice( int );
is( int.join( ',' ), vals[10], name + ': splice' );
is( p.entries_on_this_page(), vals[11],
name + ': entries on this page' );
var skipped = vals[5] - 1;
if( skipped < 0 ){ skipped = 0 }
is( p.skipped(), skipped, name + ': skipped' );
};
</script></pre>
</body>
</html>