|
Packit |
0bf95d |
#!/usr/bin/perl
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
$| = 1;
|
|
Packit |
0bf95d |
$^W = 1;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
|
|
Packit |
0bf95d |
use Archive::Zip::MemberRead;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use Test::More tests => 10;
|
|
Packit |
0bf95d |
use lib 't';
|
|
Packit |
0bf95d |
use common;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use constant FILENAME => File::Spec->catfile(TESTDIR, 'member_read.zip');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my ($zip, $member, $fh, @data);
|
|
Packit |
0bf95d |
$zip = new Archive::Zip;
|
|
Packit |
0bf95d |
isa_ok($zip, 'Archive::Zip');
|
|
Packit |
0bf95d |
@data = ('Line 1', 'Line 2', '', 'Line 3', 'Line 4');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$zip->addString(join("\n", @data), 'string.txt');
|
|
Packit |
0bf95d |
$zip->writeToFileNamed(FILENAME);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$member = $zip->memberNamed('string.txt');
|
|
Packit |
0bf95d |
$fh = $member->readFileHandle();
|
|
Packit |
0bf95d |
ok($fh);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my ($line, $not_ok, $ret, $buffer);
|
|
Packit |
0bf95d |
while (defined($line = $fh->getline())) {
|
|
Packit |
0bf95d |
$not_ok = 1 if ($line ne $data[$fh->input_line_number() - 1]);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
SKIP: {
|
|
Packit |
0bf95d |
if ($^O eq 'MSWin32') {
|
|
Packit |
0bf95d |
skip("Ignoring failing test on Win32", 1);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
ok(!$not_ok);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $member_read = Archive::Zip::MemberRead->new($zip, 'string.txt');
|
|
Packit |
0bf95d |
$line = $member_read->getline({'preserve_line_ending' => 1});
|
|
Packit |
0bf95d |
is($line, "Line 1\n", 'Preserve line ending');
|
|
Packit |
0bf95d |
$line = $member_read->getline({'preserve_line_ending' => 0});
|
|
Packit |
0bf95d |
is($line, "Line 2", 'Do not preserve line ending');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$fh->rewind();
|
|
Packit |
0bf95d |
$ret = $fh->read($buffer, length($data[0]));
|
|
Packit |
0bf95d |
ok($ret == length($data[0]));
|
|
Packit |
0bf95d |
ok($buffer eq $data[0]);
|
|
Packit |
0bf95d |
$fh->close();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
#
|
|
Packit |
0bf95d |
# Different usages
|
|
Packit |
0bf95d |
#
|
|
Packit |
0bf95d |
$fh = new Archive::Zip::MemberRead($zip, 'string.txt');
|
|
Packit |
0bf95d |
ok($fh);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$fh = new Archive::Zip::MemberRead($zip, $zip->memberNamed('string.txt'));
|
|
Packit |
0bf95d |
ok($fh);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$fh = new Archive::Zip::MemberRead($zip->memberNamed('string.txt'));
|
|
Packit |
0bf95d |
ok($fh);
|