Blame t/24_unicode_win32.t

Packit 0bf95d
#!/usr/bin/perl
Packit 0bf95d
Packit 0bf95d
# tests with $Archive::Zip::UNICODE
Packit 0bf95d
use utf8;       #utf8 source code
Packit 0bf95d
use strict;
Packit 0bf95d
Packit 0bf95d
BEGIN {
Packit 0bf95d
    $|  = 1;
Packit 0bf95d
    $^W = 1;
Packit 0bf95d
}
Packit 0bf95d
use Test::More;
Packit 0bf95d
use Archive::Zip;
Packit 0bf95d
Packit 0bf95d
use File::Temp;
Packit 0bf95d
use File::Path;
Packit 0bf95d
use File::Spec;
Packit 0bf95d
Packit 0bf95d
use lib 't';
Packit 0bf95d
use common;
Packit 0bf95d
Packit 0bf95d
#Initialy written for MSWin32 only, but I found a bug in memberNames() so
Packit 0bf95d
# other systems should be tested too.
Packit 0bf95d
#if( $^O ne 'MSWin32' ) {
Packit 0bf95d
#    plan skip_all => 'Test relevant only on MSWin32';
Packit 0bf95d
#    done_testing();
Packit 0bf95d
#    exit;
Packit 0bf95d
#}
Packit 0bf95d
Packit 0bf95d
$Archive::Zip::UNICODE=1;
Packit 0bf95d
Packit 0bf95d
mkpath([File::Spec->catdir(TESTDIR, 'folder')]);
Packit 0bf95d
my $euro_filename = "euro-€";
Packit 0bf95d
my $zero_file = File::Spec->catfile(TESTDIR, 'folder', $euro_filename);
Packit 0bf95d
open(EURO, ">$zero_file");
Packit 0bf95d
print EURO "File EURO\n";
Packit 0bf95d
close(EURO);
Packit 0bf95d
Packit 0bf95d
# create member called $euro_filename with addTree
Packit 0bf95d
{
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    $archive->addTree(File::Spec->catfile(TESTDIR, 'folder'), 'folder',);
Packit 0bf95d
    
Packit 0bf95d
    #TEST
Packit 0bf95d
    is_deeply(
Packit 0bf95d
        [ $archive->memberNames()],
Packit 0bf95d
        [ "folder/", "folder/$euro_filename" ],
Packit 0bf95d
        "Checking that a file named with unicode chars was added properly"
Packit 0bf95d
    );
Packit 0bf95d
Packit 0bf95d
}
Packit 0bf95d
Packit 0bf95d
# create member called $euro_filename with addString
Packit 0bf95d
{
Packit 0bf95d
    # Create member $euro_filename with addString
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    my $string_member = $archive->addString(TESTSTRING => $euro_filename);
Packit 0bf95d
    $archive->writeToFileNamed(OUTPUTZIP);
Packit 0bf95d
}
Packit 0bf95d
#TEST
Packit 0bf95d
{
Packit 0bf95d
    # Read member $euro_filename
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
Packit 0bf95d
    is_deeply(
Packit 0bf95d
        [$archive->memberNames()],
Packit 0bf95d
        [$euro_filename],
Packit 0bf95d
        "Checking that a file named with unicode chars was added properly by addString");
Packit 0bf95d
}
Packit 0bf95d
unlink(OUTPUTZIP);
Packit 0bf95d
Packit 0bf95d
{
Packit 0bf95d
    # Create member called $euro_filename with addFile
Packit 0bf95d
    # use a temp file so it's name doesn't match internal name
Packit 0bf95d
    my $tmp_file = File::Temp->new;
Packit 0bf95d
    $tmp_file->print("File EURO\n");
Packit 0bf95d
    $tmp_file->flush;
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    my $string_member = $archive->addFile($tmp_file->filename => $euro_filename);
Packit 0bf95d
    $archive->writeToFileNamed(OUTPUTZIP);
Packit 0bf95d
}
Packit 0bf95d
#TEST
Packit 0bf95d
{
Packit 0bf95d
    # Read member $euro_filename
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
Packit 0bf95d
    is_deeply(
Packit 0bf95d
        [$archive->memberNames()],
Packit 0bf95d
        [$euro_filename],
Packit 0bf95d
        "Checking that a file named with unicode chars was added properly by addFile");
Packit 0bf95d
}
Packit 0bf95d
unlink(OUTPUTZIP);
Packit 0bf95d
Packit 0bf95d
{
Packit 0bf95d
    # Create member called $euro_filename with addDirectory
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    my $string_member = $archive->addDirectory(
Packit 0bf95d
        File::Spec->catdir(TESTDIR, 'folder') => $euro_filename);
Packit 0bf95d
    $archive->writeToFileNamed(OUTPUTZIP);
Packit 0bf95d
}
Packit 0bf95d
#TEST
Packit 0bf95d
{
Packit 0bf95d
    # Read member $euro_filename
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
Packit 0bf95d
    is_deeply(
Packit 0bf95d
        [$archive->memberNames()],
Packit 0bf95d
        [$euro_filename.'/'],
Packit 0bf95d
        "Checking that a file named with unicode chars was added properly by addDirectory");
Packit 0bf95d
}
Packit 0bf95d
unlink(OUTPUTZIP);
Packit 0bf95d
Packit 0bf95d
{
Packit 0bf95d
    # Create member called $euro_filename with addFileOrDirectory from a directory
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    my $string_member = $archive->addFileOrDirectory(
Packit 0bf95d
        File::Spec->catdir(TESTDIR, 'folder') => $euro_filename);
Packit 0bf95d
    $archive->writeToFileNamed(OUTPUTZIP);
Packit 0bf95d
}
Packit 0bf95d
#TEST
Packit 0bf95d
{
Packit 0bf95d
    # Read member $euro_filename
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
Packit 0bf95d
    is_deeply(
Packit 0bf95d
        [$archive->memberNames()],
Packit 0bf95d
        [$euro_filename.'/'],
Packit 0bf95d
        "Checking that a file named with unicode chars was added properly by addFileOrDirectory from a direcotry");
Packit 0bf95d
}
Packit 0bf95d
unlink(OUTPUTZIP);
Packit 0bf95d
Packit 0bf95d
{
Packit 0bf95d
    # Create member called $euro_filename with addFileOrDirectory from a file
Packit 0bf95d
    # use a temp file so it's name doesn't match internal name
Packit 0bf95d
    my $tmp_file = File::Temp->new;
Packit 0bf95d
    $tmp_file->print("File EURO\n");
Packit 0bf95d
    $tmp_file->flush;    
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    my $string_member = $archive->addFileOrDirectory(
Packit 0bf95d
        $tmp_file->filename => $euro_filename);
Packit 0bf95d
    $archive->writeToFileNamed(OUTPUTZIP);
Packit 0bf95d
}
Packit 0bf95d
#TEST
Packit 0bf95d
{
Packit 0bf95d
    # Read member $euro_filename
Packit 0bf95d
    my $archive = Archive::Zip->new;
Packit 0bf95d
    is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
Packit 0bf95d
    is_deeply(
Packit 0bf95d
        [$archive->memberNames()],
Packit 0bf95d
        [$euro_filename],
Packit 0bf95d
        "Checking that a file named with unicode chars was added properly by addFileOrDirectory from a file");
Packit 0bf95d
}
Packit 0bf95d
unlink(OUTPUTZIP);
Packit 0bf95d
Packit 0bf95d
rmtree([File::Spec->catdir(TESTDIR, 'folder')]);
Packit 0bf95d
done_testing();