File: 07_handle.t

package info (click to toggle)
libparams-util-perl 0.30-1.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 264 kB
  • ctags: 114
  • sloc: perl: 2,027; makefile: 42
file content (94 lines) | stat: -rw-r--r-- 2,061 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/perl

use strict;
BEGIN {
	$|  = 1;
	$^W = 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( $_ );
}