summaryrefslogtreecommitdiff
path: root/cpan/Test-Simple/t/Builder/is_fh.t
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/Test-Simple/t/Builder/is_fh.t')
-rw-r--r--cpan/Test-Simple/t/Builder/is_fh.t48
1 files changed, 48 insertions, 0 deletions
diff --git a/cpan/Test-Simple/t/Builder/is_fh.t b/cpan/Test-Simple/t/Builder/is_fh.t
new file mode 100644
index 0000000000..0eb3ec0b15
--- /dev/null
+++ b/cpan/Test-Simple/t/Builder/is_fh.t
@@ -0,0 +1,48 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+ if( $ENV{PERL_CORE} ) {
+ chdir 't';
+ @INC = ('../lib', 'lib');
+ }
+ else {
+ unshift @INC, 't/lib';
+ }
+}
+
+use strict;
+use Test::More tests => 11;
+use TieOut;
+
+ok( !Test::Builder->is_fh("foo"), 'string is not a filehandle' );
+ok( !Test::Builder->is_fh(''), 'empty string' );
+ok( !Test::Builder->is_fh(undef), 'undef' );
+
+ok( open(FILE, '>foo') );
+END { close FILE; 1 while unlink 'foo' }
+
+ok( Test::Builder->is_fh(*FILE) );
+ok( Test::Builder->is_fh(\*FILE) );
+ok( Test::Builder->is_fh(*FILE{IO}) );
+
+tie *OUT, 'TieOut';
+ok( Test::Builder->is_fh(*OUT) );
+ok( Test::Builder->is_fh(\*OUT) );
+
+SKIP: {
+ skip "*TIED_HANDLE{IO} doesn't work in this perl", 1
+ unless defined *OUT{IO};
+ ok( Test::Builder->is_fh(*OUT{IO}) );
+}
+
+
+package Lying::isa;
+
+sub isa {
+ my $self = shift;
+ my $parent = shift;
+
+ return 1 if $parent eq 'IO::Handle';
+}
+
+::ok( Test::Builder->is_fh(bless {}, "Lying::isa"));