summaryrefslogtreecommitdiff
path: root/t/binmode.t
diff options
context:
space:
mode:
Diffstat (limited to 't/binmode.t')
-rw-r--r--t/binmode.t50
1 files changed, 50 insertions, 0 deletions
diff --git a/t/binmode.t b/t/binmode.t
new file mode 100644
index 0000000..03534b8
--- /dev/null
+++ b/t/binmode.t
@@ -0,0 +1,50 @@
+#!/usr/local/bin/perl -w
+
+use strict ;
+use Test::More ;
+use Carp ;
+use File::Slurp ;
+
+BEGIN {
+ plan skip_all => 'Older Perl lacking unicode support'
+ if $] < 5.008001 ;
+}
+
+plan tests => 2 ;
+
+my $suf = 'utf8' ;
+my $mode = ":$suf" ;
+
+my $is_win32 = $^O =~ /win32/i ;
+
+my $orig_text = "\x{20ac}\n" ;
+( my $win32_text = $orig_text ) =~ s/\n/\015\012/ ;
+my $unicode_length = length $orig_text ;
+
+my $control_file = "control.$suf" ;
+my $slurp_file = "slurp.$suf" ;
+
+open( my $fh, ">$mode", $control_file ) or
+ die "cannot create control unicode file '$control_file' $!" ;
+print $fh $orig_text ;
+close $fh ;
+
+my $slurp_utf = read_file( $control_file, binmode => $mode ) ;
+my $written_text = $is_win32 ? $win32_text : $orig_text ;
+is( $slurp_utf, $written_text, "read_file of $mode file" ) ;
+
+# my $slurp_utf_length = length $slurp_utf ;
+# my $slurp_text = read_file( $control_file ) ;
+# my $slurp_text_length = length $slurp_text ;
+# print "LEN UTF $slurp_utf_length TXT $slurp_text_length\n" ;
+
+write_file( $slurp_file, {binmode => $mode}, $orig_text ) ;
+
+open( $fh, "<$mode", $slurp_file ) or
+ die "cannot open slurp test file '$slurp_file' $!" ;
+my $read_length = read( $fh, my $utf_text, $unicode_length ) ;
+close $fh ;
+
+is( $utf_text, $orig_text, "write_file of $mode file" ) ;
+
+unlink( $control_file, $slurp_file ) ;