File-Locate-Iterator
view release on metacpan or search on metacpan
t/FileMap.t view on Meta::CPAN
or skip 'PerlIO module not available', 1;
my $fh;
my $nosuchlayer;
do {
local $SIG{'__WARN__'} = sub {
### warn handler: @_
if ($_[0] =~ /Unknown PerlIO layer/) {
$nosuchlayer = 1;
} else {
warn $_[0];
}
};
### open: $samp_locatedb
open $fh, '<:mmap', $samp_locatedb;
} or skip "Cannot open $samp_locatedb with mmap: $!", 1;
if ($nosuchlayer) {
skip "No :mmap layer available", 1;
}
diag "mmap layers: ",join(' ',PerlIO::get_layers($fh));
ok (File::Locate::Iterator::FileMap::_have_mmap_layer($fh),
'_have_mmap_layer identify :mmap layer');
}
#-----------------------------------------------------------------------------
# _round_up_pagesize()
is (File::Locate::Iterator::FileMap::_round_up_pagesize(0), 0,
'_round_up_pagesize(0)');
diag "_PAGESIZE is ",File::Locate::Iterator::FileMap::_PAGESIZE();
is (File::Locate::Iterator::FileMap::_round_up_pagesize(1),
File::Locate::Iterator::FileMap::_PAGESIZE(),
'_round_up_pagesize(1)');
#-----------------------------------------------------------------------------
# _total_space()
is (File::Locate::Iterator::FileMap::_total_space(0), 0,
'_total_space() zero initially');
is (File::Locate::Iterator::FileMap::_total_space(1),
File::Locate::Iterator::FileMap::_PAGESIZE(),
'_total_space(1)');
#-----------------------------------------------------------------------------
# get()/find() caching
{
open my $fh, '<', $samp_locatedb
or die "oops, cannot open $samp_locatedb";
binmode($fh) # against msdos :crlf
or die 'oops, cannot set binmode';
is (File::Locate::Iterator::FileMap->find($fh), undef,
'find() not mapped yet');
my $fm1 = File::Locate::Iterator::FileMap->get ($fh);
my $fm2 = File::Locate::Iterator::FileMap->get ($fh);
is ($fm1, $fm2, "get() re-used");
my $fm = $fm1;
Scalar::Util::weaken ($fm);
undef $fm1;
undef $fm2;
is ($fm, undef, 'FileMap destroyed when weakened');
}
exit 0;
( run in 2.446 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )