#!/usr/bin/perl

# These are regression tests for:
# http://rt.cpan.org/Public/Bug/Display.html?id=27463
# http://rt.cpan.org/Public/Bug/Display.html?id=76780
#
# It tests that one can add files to the archive whose filenames are "0".

use strict;

BEGIN {
    $|  = 1;
    $^W = 1;
}
use Test::More tests => 3;
use Archive::Zip;

use File::Path;
use File::Spec;

use lib 't';
use common;

mkpath([File::Spec->catdir(TESTDIR, 'folder')]);

my $zero_file = File::Spec->catfile(TESTDIR, 'folder', "0");
open(O, ">$zero_file");
print O "File 0\n";
close(O);

my $one_file = File::Spec->catfile(TESTDIR, 'folder', '1');
open(O, ">$one_file");
print O "File 1\n";
close(O);

my $archive = Archive::Zip->new;

$archive->addTree(File::Spec->catfile(TESTDIR, 'folder'), 'folder',);

# TEST
ok(
    scalar(grep { $_ eq "folder/0" } $archive->memberNames()),
    "Checking that a file called '0' was added properly"
);

rmtree([File::Spec->catdir(TESTDIR, 'folder')]);

# Cannot create member called "0" with addString
{
    # Create member "0" with addString
    my $archive = Archive::Zip->new;
    my $string_member = $archive->addString(TESTSTRING => 0);
    $archive->writeToFileNamed(OUTPUTZIP);
}

{

    # Read member "0"
    my $archive = Archive::Zip->new;
    is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
    ok(scalar(grep { $_ eq "0" } $archive->memberNames()),
        "Checking that a file called '0' was added properly by addString");
}
unlink(OUTPUTZIP);
