use strict; use Test; BEGIN { plan tests => 6 } use lib '../lib'; use File::SortedSeek; my $file = './test.file'; my ( $tell, $begin, $finish, $line, $got, $want, @data, @lines, @between ); File::SortedSeek::set_silent; #################### alphabetic ascending tests #################### @data = ( 'AAA' .. 'ZZZ' ); write_file ( @data ); open TEST, "<$file" or die "Can't read from test file $!\n"; # basic SortedSeek $tell = File::SortedSeek::alphabetic( *TEST, 'BBB' ); chomp ( $line = ); ok( $line, 'BBB' ); # check default no cuddle $tell = File::SortedSeek::alphabetic( *TEST, 'TTTTest' ); chomp ( $line = ); ok( $line, 'TTU' ); # cuddle File::SortedSeek::set_cuddle; $tell = File::SortedSeek::alphabetic( *TEST, 'TTTTest' ); chomp ( $line = ); ok( $line, 'TTT' ); File::SortedSeek::set_no_cuddle; # check between $begin = File::SortedSeek::alphabetic( *TEST, 'ABA' ); $finish = File::SortedSeek::alphabetic( *TEST, 'ABBA' ); @between = File::SortedSeek::get_between( *TEST, $begin, $finish ); $got = join " ", @between; ok( $got, 'ABA ABB' ); # need to close and reopen FH now binmoded. close TEST; open TEST, "<$file" or die "Can't read from test file $!\n"; # should get first line $tell = File::SortedSeek::alphabetic( *TEST, 'A' ); chomp ( $line = ); ok( $line, 'AAA' ); # past EOF, should return undef $tell = File::SortedSeek::alphabetic( *TEST, 'ZZZZ' ); ok( !defined $tell ); 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; }