#!/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('c-api'); my @capi = ( [2, 'no options'], [3, 'normalized content'], [4, 'ignore xref streams'], [5, 'linearized'], [6, 'object streams'], [7, 'qdf'], [8, 'no original object ids'], [9, 'uncompressed streams'], ); my $n_tests = (2 * @capi) + 5; foreach my $d (@capi) { my ($n, $description) = @$d; my $outfile = $description; $outfile =~ s/ /-/g; $outfile = "c-$outfile.pdf"; $td->runtest($description, {$td->COMMAND => "qpdf-ctest $n hybrid-xref.pdf '' a.pdf"}, {$td->STRING => "C test $n done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); $td->runtest("check $description", {$td->COMMAND => "qpdf-test-compare a.pdf $outfile"}, {$td->FILE => $outfile, $td->EXIT_STATUS => 0}); } $td->runtest("write to bad file name", {$td->COMMAND => "qpdf-ctest 2 hybrid-xref.pdf '' /:a:/:b:"}, {$td->REGEXP => "error: open /:a:/:b:: .*", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); $td->runtest("write damaged to bad file name", {$td->COMMAND => "qpdf-ctest 2 append-page-content-damaged.pdf" . " '' /:a:/:b:"}, {$td->REGEXP => "warning:(?s:.*)\n" . "error: open /:a:/:b:: .*", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); $td->runtest("write damaged", {$td->COMMAND => "qpdf-ctest 2 append-page-content-damaged.pdf" . " '' a.pdf"}, {$td->FILE => "c-write-damaged.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); $td->runtest("empty PDF", {$td->COMMAND => "qpdf-ctest 41 - '' a.pdf"}, {$td->STRING => "C test 41 done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); $td->runtest("check output", {$td->FILE => "a.pdf"}, {$td->FILE => "c-empty.pdf"}); cleanup(); $td->report($n_tests);