|
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 |
use File::Spec;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use Test::More;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $nl;
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
plan(tests => 13);
|
|
Packit |
0bf95d |
$nl = $^O eq 'MSWin32' ? "\r\n" : "\n";
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
use lib 't';
|
|
Packit |
0bf95d |
use common;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# normalize newlines for the platform we are running on
|
|
Packit |
0bf95d |
sub norm_nl($) { local $_ = shift; s/\r?\n/$nl/g; return $_; }
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
SCOPE: {
|
|
Packit |
0bf95d |
my $filename = File::Spec->catfile(TESTDIR, "member_read_xml_like1.zip");
|
|
Packit |
0bf95d |
my $zip = new Archive::Zip;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
isa_ok($zip, "Archive::Zip", "Testing that \$zip is an Archive::Zip");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $data = norm_nl(<<"EOF");
|
|
Packit |
0bf95d |
One Line
|
|
Packit |
0bf95d |
Two Lines
|
|
Packit |
0bf95d |
</tag>
|
|
Packit |
0bf95d |
Three Lines
|
|
Packit |
0bf95d |
Four Lines
|
|
Packit |
0bf95d |
Five Lines
|
|
Packit |
0bf95d |
</tag>
|
|
Packit |
0bf95d |
Quant
|
|
Packit |
0bf95d |
Bant
|
|
Packit |
0bf95d |
</tag>
|
|
Packit |
0bf95d |
Zapta
|
|
Packit |
0bf95d |
EOF
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$zip->addString($data, "string.txt");
|
|
Packit |
0bf95d |
$zip->writeToFileNamed($filename);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Testing for normal line-based reading.
|
|
Packit |
0bf95d |
my $member = $zip->memberNamed("string.txt");
|
|
Packit |
0bf95d |
my $fh = $member->readFileHandle();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
ok($fh, "Filehandle is valid");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is($fh->getline(), "One Line",
|
|
Packit |
0bf95d |
"Testing the first line in a normal read.");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is($fh->getline(), "Two Lines",
|
|
Packit |
0bf95d |
"Testing the second line in a normal read.");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Testing for setting the input record separator of the Perl
|
|
Packit |
0bf95d |
# global variable.
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
local $/ = "</tag>\n";
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $member = $zip->memberNamed("string.txt");
|
|
Packit |
0bf95d |
my $fh = $member->readFileHandle();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
ok($fh, "Filehandle is valid");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is(
|
|
Packit |
0bf95d |
$fh->getline(),
|
|
Packit |
0bf95d |
norm_nl("One Line\nTwo Lines\n"),
|
|
Packit |
0bf95d |
"Testing the first \"line\" when \$/ is set."
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is(
|
|
Packit |
0bf95d |
$fh->getline(),
|
|
Packit |
0bf95d |
norm_nl("Three Lines\nFour Lines\nFive Lines\n"),
|
|
Packit |
0bf95d |
"Testing the second \"line\" when \$/ is set."
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Testing for setting input_record_separator in the filehandle.
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $member = $zip->memberNamed("string.txt");
|
|
Packit |
0bf95d |
my $fh = $member->readFileHandle();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
ok($fh, "Filehandle is valid");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$fh->input_record_separator("</tag>\n");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is(
|
|
Packit |
0bf95d |
$fh->getline(),
|
|
Packit |
0bf95d |
norm_nl("One Line\nTwo Lines\n"),
|
|
Packit |
0bf95d |
"Testing the first line when input_record_separator is set."
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is(
|
|
Packit |
0bf95d |
$fh->getline(),
|
|
Packit |
0bf95d |
norm_nl("Three Lines\nFour Lines\nFive Lines\n"),
|
|
Packit |
0bf95d |
"Testing the second line when input_record_separator is set."
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Test setting both input_record_separator in the filehandle
|
|
Packit |
0bf95d |
# and in Perl.
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
local $/ = "
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $member = $zip->memberNamed("string.txt");
|
|
Packit |
0bf95d |
my $fh = $member->readFileHandle();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
ok($fh, "Filehandle is valid");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$fh->input_record_separator(" ");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is($fh->getline(), "One",
|
|
Packit |
0bf95d |
"Testing the first \"line\" in a both set read");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is($fh->getline(), norm_nl("Line\nTwo"),
|
|
Packit |
0bf95d |
"Testing the second \"line\" in a both set read.");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
}
|