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 )