use strict;
use Test;
BEGIN { plan tests => 4 }
use lib '../lib';
use File::SortedSeek;
my $file = './test.file';
my ( $tell, $begin, $finish, $line, $got, $want, @data, @lines, @between );
File::SortedSeek::set_silent;
#################### tests for get_last ####################
@data = ();
my $time;
for ( 0..1000 ) {
# change time every 10 entries so we have 10 identical times
$time = scalar gmtime($_) unless $_ % 10;
push @data, $time;
}
write_file ( @data );
# continue to use or date file
open TEST, "<$file" or die "Can't read from test file $!\n";
# get a chunk of lines as array
@lines = File::SortedSeek::get_last( *TEST, 101 );
$got = join "\n", @lines;
$want = join "\n", @data[900..1000];
ok( $got, $want );
# get a chunk of lines as reference
$line = File::SortedSeek::get_last( *TEST, 101 );
$got = join "\n", @$line;
$want = join "\n", @data[900..1000];
ok( $got, $want );
# ask for more than entire file as array
@lines = File::SortedSeek::get_last( *TEST, 1111 );
$got = join "\n", @lines;
$want = join "\n", @data[0..1000];
ok( $got, $want );
# ask for more than entire file as reference
$line = File::SortedSeek::get_last( *TEST, 1111 );
$got = join "\n", @$line;
$want = join "\n", @data[0..1000];
ok( $got, $want );
close TEST;
# write the test file with the data supplied in an array
# we use the default system line ending.
sub write_file {
open TEST, ">$file" or die "Can't write test file $!\n";
print TEST "$_\n" for @_;
close TEST;
}