summaryrefslogtreecommitdiffstats
path: root/qpdf/qtest/newline_before_endstream.test
diff options
context:
space:
mode:
Diffstat (limited to 'qpdf/qtest/newline_before_endstream.test')
-rw-r--r--qpdf/qtest/newline_before_endstream.test59
1 files changed, 59 insertions, 0 deletions
diff --git a/qpdf/qtest/newline_before_endstream.test b/qpdf/qtest/newline_before_endstream.test
new file mode 100644
index 00000000..7ac8d361
--- /dev/null
+++ b/qpdf/qtest/newline_before_endstream.test
@@ -0,0 +1,59 @@
+#!/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('newline_before_endstream');
+
+my $n_tests = 12;
+
+# From issue 133, http://verapdf.org/software/ is an open source
+# package that can verify PDF/A compliance. This could potentially be
+# useful for manual or automated verification that qpdf doesn't break
+# PDF/A compliance should that ever be desired.
+
+foreach my $d (
+ ['--qdf', 'qdf', 'qdf'],
+ ['--newline-before-endstream', 'newline', 'nl'],
+ ['--qdf --newline-before-endstream', 'newline and qdf', 'nl-qdf'],
+ ['--object-streams=generate --newline-before-endstream',
+ 'newline and object streams', 'nl-objstm'],
+ )
+{
+ my ($flags, $description, $suffix) = @$d;
+ $td->runtest("newline before endstream: $description",
+ {$td->COMMAND => "qpdf --static-id --stream-data=preserve" .
+ " $flags streams-with-newlines.pdf a.pdf"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+ $td->runtest("check output ($description)",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "newline-before-endstream-$suffix.pdf"});
+ if ($flags =~ /qdf/)
+ {
+ $td->runtest("fix-qdf",
+ {$td->COMMAND => "fix-qdf a.pdf"},
+ {$td->FILE => "a.pdf", $td->EXIT_STATUS => 0});
+ }
+}
+
+$td->runtest("newline before endstream (C)",
+ {$td->COMMAND =>
+ "qpdf-ctest 22 streams-with-newlines.pdf '' a.pdf"},
+ {$td->STRING => "C test 22 done\n", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "newline-before-endstream-nl.pdf"});
+
+cleanup();
+$td->report($n_tests);