2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-11-01 11:22:29 +00:00
qpdf/libtests/qtest/flate.test
2023-12-20 07:07:35 -05:00

79 lines
1.8 KiB
Perl

#!/usr/bin/env perl
require 5.008;
BEGIN { $^W = 1; }
use strict;
use File::Copy;
use Digest::MD5;
chdir("flate") or die "chdir testdir failed: $!\n";
require TestDriver;
cleanup();
my $td = new TestDriver('flate');
cleanup();
open(F, ">farbage") or die;
binmode F;
print F "q" x 10000, "\n";
print F "w" x 10000, "\n";
print F "e" x 10000, "\n";
print F "r" x 10000, "\n";
print F "t" x 10000, "\n";
print F "y" x 10000, "\n";
print F "u" x 10000, "\n";
print F "i" x 10000, "\n";
print F "o" x 10000, "\n";
print F "p" x 10000, "\n";
close(F);
check_file("farbage", "a6449c61db5b0645c0693b7560b77a60");
$td->runtest("run driver",
{$td->COMMAND => "flate farbage"},,
{$td->STRING => "bytes written to o3: 100010\ndone\n",
$td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
check_file("farbage", "a6449c61db5b0645c0693b7560b77a60");
my $size_uncompressed = (stat("farbage"))[7];
my $size_compressed = (stat("farbage.1"))[7];
$td->runtest("compressed is smaller",
{$td->STRING =>
($size_compressed < $size_uncompressed
? "YES\n" : "$size_compressed $size_uncompressed\n")},
{$td->STRING => "YES\n"});
$td->runtest("uncompress filter works",
{$td->FILE => "farbage"},
{$td->FILE => "farbage.2"});
$td->runtest("double filter works",
{$td->FILE => "farbage"},
{$td->FILE => "farbage.3"});
cleanup();
$td->report(6);
sub cleanup
{
system("rm -f farbage*");
}
sub check_file
{
my ($file, $sum) = @_;
open(F, "<$file") or die "open $file";
my $md5 = new Digest::MD5;
$md5->addfile(*F);
close(F);
my $result = $md5->hexdigest;
$td->runtest("check $file",
{$td->STRING => "$result\n"},
{$td->STRING => "$sum\n"});
}