|
Packit |
37d9e7 |
#!/usr/bin/perl
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
use strict;
|
|
Packit |
37d9e7 |
BEGIN {
|
|
Packit |
37d9e7 |
$| = 1;
|
|
Packit |
37d9e7 |
$^W = 1;
|
|
Packit |
37d9e7 |
$ENV{PERL_PARAMS_UTIL_PP} ||= 1;
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
use Test::More tests => 23;
|
|
Packit |
37d9e7 |
use File::Spec::Functions ':ALL';
|
|
Packit |
37d9e7 |
BEGIN {
|
|
Packit |
37d9e7 |
ok( ! defined &_HANDLE, '_HANDLE does not exist' );
|
|
Packit |
37d9e7 |
use_ok('Params::Util', qw(_HANDLE));
|
|
Packit |
37d9e7 |
ok( defined &_HANDLE, '_HANDLE imported ok' );
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
# Import refaddr to make certain we have it
|
|
Packit |
37d9e7 |
use Scalar::Util 'refaddr';
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
#####################################################################
|
|
Packit |
37d9e7 |
# Preparing
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
my $readfile = catfile( 't', 'handles', 'readfile.txt' );
|
|
Packit |
37d9e7 |
ok( -f $readfile, "$readfile exists" );
|
|
Packit |
37d9e7 |
my $writefile = catfile( 't', 'handles', 'writefile.txt' );
|
|
Packit |
37d9e7 |
if ( -f $writefile ) { unlink $writefile };
|
|
Packit |
37d9e7 |
END { if ( -f $writefile ) { unlink $writefile }; }
|
|
Packit |
37d9e7 |
ok( ! -e $writefile, "$writefile does not exist" );
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
sub is_handle {
|
|
Packit |
37d9e7 |
my $maybe = shift;
|
|
Packit |
37d9e7 |
my $message = shift || 'Is a file handle';
|
|
Packit |
37d9e7 |
my $result = _HANDLE($maybe);
|
|
Packit |
37d9e7 |
ok( defined $result, '_HANDLE does not return undef' );
|
|
Packit |
37d9e7 |
is( refaddr($result), refaddr($maybe), '_HANDLE returns the passed value' );
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
sub not_handle {
|
|
Packit |
37d9e7 |
my $maybe = shift;
|
|
Packit |
37d9e7 |
my $message = shift || 'Is not a file handle';
|
|
Packit |
37d9e7 |
my $result = _HANDLE($maybe);
|
|
Packit |
37d9e7 |
ok( ! defined $result, '_HANDLE returns undef' );
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
#####################################################################
|
|
Packit |
37d9e7 |
# Basic Filesystem Handles
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
# A read filehandle
|
|
Packit |
37d9e7 |
SCOPE: {
|
|
Packit |
37d9e7 |
local *HANDLE;
|
|
Packit |
37d9e7 |
open( HANDLE, $readfile );
|
|
Packit |
37d9e7 |
is_handle( \*HANDLE, 'Ordinary read filehandle' );
|
|
Packit |
37d9e7 |
close HANDLE;
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
# A write filehandle
|
|
Packit |
37d9e7 |
SCOPE: {
|
|
Packit |
37d9e7 |
local *HANDLE;
|
|
Packit |
37d9e7 |
open( HANDLE, "> $readfile" );
|
|
Packit |
37d9e7 |
is_handle( \*HANDLE, 'Ordinary read filehandle' );
|
|
Packit |
37d9e7 |
print HANDLE "A write filehandle";
|
|
Packit |
37d9e7 |
close HANDLE;
|
|
Packit |
37d9e7 |
if ( -f $writefile ) { unlink $writefile };
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
# On 5.8+ the new style filehandle
|
|
Packit |
37d9e7 |
SKIP: {
|
|
Packit |
37d9e7 |
skip( "Skipping 5.8-style 'my \$fh' handles", 2 ) if $] < 5.008;
|
|
Packit |
37d9e7 |
open( my $handle, $readfile );
|
|
Packit |
37d9e7 |
is_handle( $handle, '5.8-style read filehandle' );
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
#####################################################################
|
|
Packit |
37d9e7 |
# Things that are not file handles
|
|
Packit |
37d9e7 |
|
|
Packit |
37d9e7 |
foreach (
|
|
Packit |
37d9e7 |
undef, '', ' ', 'foo', 1, 0, -1, 1.23,
|
|
Packit |
37d9e7 |
[], {}, \'', bless( {}, "foo" )
|
|
Packit |
37d9e7 |
) {
|
|
Packit |
37d9e7 |
not_handle( $_ );
|
|
Packit |
37d9e7 |
}
|
|
Packit |
37d9e7 |
|