#!perl
# vim:syntax=perl:
BEGIN {
$|= 1;
use Test::More;
# when building perl, skip this test if Win32API::File isn't being built
if ( $ENV{PERL_CORE} ) {
require Config;
if ( $Config::Config{extensions} !~ m:(?<!\S)Win32API/File(?!\S): ) {
plan skip_all => 'Skip Win32API::File extension not built';
exit;
}
}
plan tests => 10;
}
use strict;
use warnings;
use Win32API::File qw(:ALL);
use IO::File;
my $filename = 'foo.txt';
ok(! -e $filename || unlink($filename), "unlinked $filename (if it existed)");
my $fh = Win32API::File->new("+> $filename")
or die fileLastError();
my $tell = tell $fh;
is(0+$tell, 0, "tell \$fh == '$tell'");
my $text = "some text\n";
ok(print($fh $text), "printed 'some text\\n'");
$tell = tell $fh;
my $len = length($text) + 1; # + 1 for cr
is($tell, $len, "after printing 'some text\\n', tell is: '$tell'");
my $seek = seek($fh, 0, 0);
is(0+$seek, 0, "seek is: '$seek'");
my $eof = eof $fh;
ok(! $eof, 'not eof');
my $readline = <$fh>;
my $pretty_readline = $readline;
$pretty_readline =~ s/\r/\\r/g; $pretty_readline =~ s/\n/\\n/g;
is($pretty_readline, "some text\\r\\n", "read line is '$pretty_readline'");
$eof = eof $fh;
ok($eof, 'reached eof');
ok(close($fh), 'closed filehandle');
# Test out binmode (should be only LF with print, no CR).
$fh = Win32API::File->new("+> $filename")
or die fileLastError();
binmode $fh;
print $fh "hello there\n";
seek $fh, 0, 0;
$readline = <$fh>;
is($readline, "hello there\n", "binmode worked (no CR)");
close $fh;
unlink $filename;