aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xt/01packdrakeng.t69
1 files changed, 69 insertions, 0 deletions
diff --git a/t/01packdrakeng.t b/t/01packdrakeng.t
new file mode 100755
index 0000000..5f7f77c
--- /dev/null
+++ b/t/01packdrakeng.t
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+# $Id$
+
+use Test::More tests => 8;
+use Digest::MD5;
+
+use_ok('packdrakeng');
+
+sub clean_random_files {
+ -d "test" or return;
+ unlink glob("test/*");
+}
+
+#
+sub create_random_files {
+ my ($number) = @_;
+ my %created;
+ -d test or mkdir test;
+ foreach my $n (1 .. $number||10) {
+ my $size = int(rand(1024));
+ push(@created, "test/$size");
+ system("dd if=/dev/urandom of=test/$size bs=1024 count=$size >/dev/null 2>&1");
+ open(my $h, "test/$size");
+ $created{"test/$size"} = Digest::MD5->new->addfile($h)->hexdigest;
+ close $h;
+ }
+ %created
+}
+
+sub check_files {
+ my %files = @_;
+ my $ok = 1;
+ foreach my $f (keys %files) {
+ open(my $h, $f);
+ Digest::MD5->new->addfile($h)->hexdigest ne $files{$f} and $ok = 0;
+ close $h;
+ }
+ $ok
+}
+
+
+# Test: creating
+clean_random_files();
+my %createdfiles = create_random_files(50);
+
+ok(my $pack = packdrakeng->new(archive => "packtest.cz"), "Creating an archive");
+ok($pack->add(undef, keys %createdfiles), "Adding files to the archive");
+$pack = undef; # closing the archive.
+
+clean_random_files();
+ok($pack = packdrakeng->open(archive => "packtest.cz"), "Re-opening the archive");
+$pack->dump;
+
+# Test: all files are packed
+my (undef, $packedfiles, undef) = $pack->getcontent();
+ok(@$packedfiles > 0, "Archive contains files");
+
+{
+my %fex = %createdfiles;
+foreach (@$packedfiles) {
+ delete $fex{$_};
+}
+ok(! keys(%fex), "All files has been packed");
+}
+
+ok($pack->extract(undef, keys(%createdfiles)), "extracting files");
+ok(check_files(%createdfiles), "Checking md5sum for extracted files");
+