mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-16 09:37:08 +00:00
72 lines
2.5 KiB
Perl
72 lines
2.5 KiB
Perl
#!/usr/bin/env perl
|
|
require 5.008;
|
|
use warnings;
|
|
use strict;
|
|
|
|
unshift(@INC, '.');
|
|
require qpdf_test_helpers;
|
|
|
|
chdir("qpdf") or die "chdir testdir failed: $!\n";
|
|
|
|
require TestDriver;
|
|
|
|
cleanup();
|
|
|
|
my $td = new TestDriver('decode-levels');
|
|
|
|
my $n_tests = 14;
|
|
|
|
# image-streams.pdf is the output of examples/pdf-create.
|
|
# examples/pdf-create validates the actual image data.
|
|
# image-streams-small.pdf was manually created by editing
|
|
# pdf-create.cc to reduce width and height to 40x8 and ignoring
|
|
# errors. Its purpose was to get a small file with images with
|
|
# different filters for fuzz testing.
|
|
foreach my $l (qw(none generalized specialized all))
|
|
{
|
|
$td->runtest("image-streams: $l",
|
|
{$td->COMMAND =>
|
|
"qpdf image-streams.pdf --compress-streams=n" .
|
|
" --decode-level=$l a.pdf"},
|
|
{$td->STRING => "", $td->EXIT_STATUS => 0},
|
|
$td->NORMALIZE_NEWLINES);
|
|
$td->runtest("check image-streams: $l",
|
|
{$td->COMMAND => "test_driver 39 a.pdf"},
|
|
{$td->FILE => "image-streams-$l.out", $td->EXIT_STATUS => 0},
|
|
$td->NORMALIZE_NEWLINES);
|
|
}
|
|
|
|
# C API
|
|
$td->runtest("image-streams: C",
|
|
{$td->COMMAND => "qpdf-ctest 20 image-streams.pdf '' a.pdf"},
|
|
{$td->STRING => "C test 20 done\n", $td->EXIT_STATUS => 0},
|
|
$td->NORMALIZE_NEWLINES);
|
|
$td->runtest("check image-streams: C",
|
|
{$td->COMMAND => "test_driver 39 a.pdf"},
|
|
{$td->FILE => "image-streams-specialized.out",
|
|
$td->EXIT_STATUS => 0},
|
|
$td->NORMALIZE_NEWLINES);
|
|
|
|
# Bad JPEG data
|
|
$td->runtest("check finds bad jpeg data",
|
|
{$td->COMMAND => "qpdf --check bad-jpeg.pdf"},
|
|
{$td->FILE => "bad-jpeg-check.out",
|
|
$td->EXIT_STATUS => 3},
|
|
$td->NORMALIZE_NEWLINES);
|
|
$td->runtest("precheck detects bad jpeg data",
|
|
{$td->COMMAND => "qpdf --static-id --decode-level=all" .
|
|
" bad-jpeg.pdf a.pdf"},
|
|
{$td->FILE => "bad-jpeg.out", $td->EXIT_STATUS => 3},
|
|
$td->NORMALIZE_NEWLINES);
|
|
$td->runtest("check file",
|
|
{$td->FILE => "a.pdf"},
|
|
{$td->FILE => "bad-jpeg-out.pdf"});
|
|
$td->runtest("get data",
|
|
{$td->COMMAND => "qpdf --show-object=6" .
|
|
" --filtered-stream-data bad-jpeg.pdf"},
|
|
{$td->FILE => "bad-jpeg-show.out", $td->EXIT_STATUS => 3},
|
|
$td->NORMALIZE_NEWLINES);
|
|
|
|
cleanup();
|
|
$td->report($n_tests);
|