summaryrefslogtreecommitdiff
path: root/t/17_handle.t
diff options
context:
space:
mode:
Diffstat (limited to 't/17_handle.t')
-rw-r--r--t/17_handle.t95
1 files changed, 95 insertions, 0 deletions
diff --git a/t/17_handle.t b/t/17_handle.t
new file mode 100644
index 0000000..39d7b35
--- /dev/null
+++ b/t/17_handle.t
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+
+use strict;
+BEGIN {
+ $| = 1;
+ $^W = 1;
+ $ENV{PERL_PARAMS_UTIL_PP} ||= 1;
+}
+
+use Test::More tests => 23;
+use File::Spec::Functions ':ALL';
+BEGIN {
+ ok( ! defined &_HANDLE, '_HANDLE does not exist' );
+ use_ok('Params::Util', qw(_HANDLE));
+ ok( defined &_HANDLE, '_HANDLE imported ok' );
+}
+
+# Import refaddr to make certain we have it
+use Scalar::Util 'refaddr';
+
+
+
+
+
+#####################################################################
+# Preparing
+
+my $readfile = catfile( 't', 'handles', 'readfile.txt' );
+ok( -f $readfile, "$readfile exists" );
+my $writefile = catfile( 't', 'handles', 'writefile.txt' );
+ if ( -f $writefile ) { unlink $writefile };
+END { if ( -f $writefile ) { unlink $writefile }; }
+ok( ! -e $writefile, "$writefile does not exist" );
+
+sub is_handle {
+ my $maybe = shift;
+ my $message = shift || 'Is a file handle';
+ my $result = _HANDLE($maybe);
+ ok( defined $result, '_HANDLE does not return undef' );
+ is( refaddr($result), refaddr($maybe), '_HANDLE returns the passed value' );
+}
+
+sub not_handle {
+ my $maybe = shift;
+ my $message = shift || 'Is not a file handle';
+ my $result = _HANDLE($maybe);
+ ok( ! defined $result, '_HANDLE returns undef' );
+}
+
+
+
+
+
+#####################################################################
+# Basic Filesystem Handles
+
+# A read filehandle
+SCOPE: {
+ local *HANDLE;
+ open( HANDLE, $readfile );
+ is_handle( \*HANDLE, 'Ordinary read filehandle' );
+ close HANDLE;
+}
+
+# A write filehandle
+SCOPE: {
+ local *HANDLE;
+ open( HANDLE, "> $readfile" );
+ is_handle( \*HANDLE, 'Ordinary read filehandle' );
+ print HANDLE "A write filehandle";
+ close HANDLE;
+ if ( -f $writefile ) { unlink $writefile };
+}
+
+# On 5.8+ the new style filehandle
+SKIP: {
+ skip( "Skipping 5.8-style 'my \$fh' handles", 2 ) if $] < 5.008;
+ open( my $handle, $readfile );
+ is_handle( $handle, '5.8-style read filehandle' );
+}
+
+
+
+
+
+#####################################################################
+# Things that are not file handles
+
+foreach (
+ undef, '', ' ', 'foo', 1, 0, -1, 1.23,
+ [], {}, \'', bless( {}, "foo" )
+) {
+ not_handle( $_ );
+}
+