aboutsummaryrefslogtreecommitdiffstats
path: root/compare-for-test/qtest
diff options
context:
space:
mode:
Diffstat (limited to 'compare-for-test/qtest')
-rw-r--r--compare-for-test/qtest/compare.test93
-rw-r--r--compare-for-test/qtest/compare/diff-data-enc.pdfbin0 -> 1519 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-data-size-unc.pdfbin0 -> 843 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-data-size.pdfbin0 -> 847 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-data-unc.pdfbin0 -> 844 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-data.pdfbin0 -> 849 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-non-stream.pdfbin0 -> 844 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-num-objects.pdfbin0 -> 882 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-object-type.pdfbin0 -> 765 bytes
-rw-r--r--compare-for-test/qtest/compare/diff-stream-dict.pdfbin0 -> 844 bytes
-rw-r--r--compare-for-test/qtest/compare/enc1.pdf41
-rw-r--r--compare-for-test/qtest/compare/enc2.pdf41
-rw-r--r--compare-for-test/qtest/compare/ostream1.pdfbin0 -> 833 bytes
-rw-r--r--compare-for-test/qtest/compare/ostream2.pdfbin0 -> 843 bytes
-rw-r--r--compare-for-test/qtest/compare/start.pdf47
-rw-r--r--compare-for-test/qtest/compare/zlib-9.pdfbin0 -> 844 bytes
-rw-r--r--compare-for-test/qtest/compare/zlib-ng.pdfbin0 -> 848 bytes
-rw-r--r--compare-for-test/qtest/compare/zlib.pdfbin0 -> 844 bytes
18 files changed, 222 insertions, 0 deletions
diff --git a/compare-for-test/qtest/compare.test b/compare-for-test/qtest/compare.test
new file mode 100644
index 00000000..48625cf3
--- /dev/null
+++ b/compare-for-test/qtest/compare.test
@@ -0,0 +1,93 @@
+#!/usr/bin/env perl
+require 5.008;
+BEGIN { $^W = 1; }
+use strict;
+
+chdir("compare") or die "chdir testdir failed: $!\n";
+
+require TestDriver;
+
+my $td = new TestDriver('compare');
+
+# The comparison tool is designed so that you can write tests that run
+# `compare actual expected` and compare the result to expected. This
+# allows you to just replace the actual file in a comparison with the
+# comparison command. If the files match, the output is the expected
+# file, which means that if the actual file is the expected file with
+# different zlib compression, the test will pass. If the files differ,
+# the actual output shown will be the real actual output. If it is
+# determined to be correct and used to replace the expected output,
+# the test will pass next time regardless of whether the same zlib
+# implementation is used.
+
+# These files are the same file compressed with a different
+# compression level and/or a different zlib implementation.
+my @same = qw(zlib.pdf zlib-9.pdf zlib-ng.pdf);
+my $comparisons = (scalar(@same) * (scalar(@same) + 1))/2;
+my $n_tests = 2 * $comparisons;
+
+for (my $i = 0; $i < scalar(@same); $i++)
+{
+ for (my $j = $i; $j < scalar(@same); $j++)
+ {
+ # Make sure the files are byte-wise different (unless they are the same file).
+ $td->runtest("byte-wise compare $i and $j",
+ {$td->COMMAND => "cmp $same[$i] $same[$j]"},
+ {$td->REGEXP => ".*", $td->EXIT_STATUS => $i == $j ? 0 : "!0"});
+ # Make sure they match. This is how compare should be used:
+ # the expected output is the same file as the second argument
+ # to the command.
+ $td->runtest("compare $i and $j",
+ {$td->COMMAND => "qpdf-test-compare $same[$i] $same[$j]"},
+ {$td->FILE => $same[$j], $td->EXIT_STATUS => 0});
+ }
+}
+
+my @diff = (
+ ["diff-num-objects.pdf", "trailer: object contents differ"],
+ ["diff-non-stream.pdf", "3,0: object contents differ"],
+ ["diff-data-size.pdf", "4,0: stream data size differs"],
+ ["diff-data.pdf", "4,0: stream data differs"],
+ ["diff-data-size-unc.pdf", "5,0: stream data size differs"],
+ ["diff-data-unc.pdf", "5,0: stream data differs"],
+ ["diff-stream-dict.pdf", "4,0: stream dictionaries differ"],
+ ["diff-object-type.pdf", "6,0: different types"],
+ );
+$n_tests += 2 * scalar(@diff);
+
+foreach my $f (@diff)
+{
+ # In a real test, the expected output would be the expected file
+ # as above. Here, we are actually testing the comparison tool to
+ # verify that it returns a non-zero status and the actual file
+ # when there is mismatch. Don't copy this test.
+ $td->runtest("$f->[0] is different",
+ {$td->COMMAND => "qpdf-test-compare $f->[0] zlib.pdf"},
+ {$td->FILE => $f->[0], $td->EXIT_STATUS => 2});
+ $td->runtest("$f->[0] is different (why)",
+ {$td->COMMAND => "env QPDF_COMPARE_WHY=1" .
+ " qpdf-test-compare $f->[0] zlib.pdf"},
+ {$td->STRING => "$f->[1]\n", $td->EXIT_STATUS => 2},
+ $td->NORMALIZE_NEWLINES);
+}
+
+# Repeat for encrypted files.
+$n_tests += 3;
+$td->runtest("byte-wise compare encrypted files",
+ {$td->COMMAND => "cmp enc1.pdf enc2.pdf"},
+ {$td->REGEXP => ".*", $td->EXIT_STATUS => "!0"});
+$td->runtest("compare encrypted files (same)",
+ {$td->COMMAND => "env QPDF_COMPARE_WHY=1 qpdf-test-compare enc1.pdf enc2.pdf"},
+ {$td->FILE => "enc2.pdf", $td->EXIT_STATUS => 0});
+$td->runtest("compare encrypted files (different)",
+ {$td->COMMAND => "env QPDF_COMPARE_WHY=1 qpdf-test-compare enc1.pdf diff-data-enc.pdf"},
+ {$td->STRING => "4,0: stream data differs\n", $td->EXIT_STATUS => 2},
+ $td->NORMALIZE_NEWLINES);
+
+# Object streams
+$n_tests += 1;
+$td->runtest("compare object stream files (same)",
+ {$td->COMMAND => "env QPDF_COMPARE_WHY=1 qpdf-test-compare ostream1.pdf ostream2.pdf"},
+ {$td->FILE => "ostream2.pdf", $td->EXIT_STATUS => 0});
+
+$td->report($n_tests);
diff --git a/compare-for-test/qtest/compare/diff-data-enc.pdf b/compare-for-test/qtest/compare/diff-data-enc.pdf
new file mode 100644
index 00000000..ae2b23b0
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-data-enc.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-data-size-unc.pdf b/compare-for-test/qtest/compare/diff-data-size-unc.pdf
new file mode 100644
index 00000000..61444ee2
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-data-size-unc.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-data-size.pdf b/compare-for-test/qtest/compare/diff-data-size.pdf
new file mode 100644
index 00000000..5dc2f5d1
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-data-size.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-data-unc.pdf b/compare-for-test/qtest/compare/diff-data-unc.pdf
new file mode 100644
index 00000000..b79f7afb
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-data-unc.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-data.pdf b/compare-for-test/qtest/compare/diff-data.pdf
new file mode 100644
index 00000000..04216efa
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-data.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-non-stream.pdf b/compare-for-test/qtest/compare/diff-non-stream.pdf
new file mode 100644
index 00000000..2e7e6e80
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-non-stream.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-num-objects.pdf b/compare-for-test/qtest/compare/diff-num-objects.pdf
new file mode 100644
index 00000000..ec904d15
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-num-objects.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-object-type.pdf b/compare-for-test/qtest/compare/diff-object-type.pdf
new file mode 100644
index 00000000..8380e88d
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-object-type.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/diff-stream-dict.pdf b/compare-for-test/qtest/compare/diff-stream-dict.pdf
new file mode 100644
index 00000000..cf40d323
--- /dev/null
+++ b/compare-for-test/qtest/compare/diff-stream-dict.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/enc1.pdf b/compare-for-test/qtest/compare/enc1.pdf
new file mode 100644
index 00000000..50f4f1da
--- /dev/null
+++ b/compare-for-test/qtest/compare/enc1.pdf
@@ -0,0 +1,41 @@
+%PDF-2.0
+%
+1 0 obj
+<< /Pages 2 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /Count 1 /Kids [ 3 0 R ] /Type /Pages >>
+endobj
+3 0 obj
+<< /Contents [ 4 0 R 5 0 R ] /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 6 0 R >> >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 64 >>
+stream
+*8FTbp~0(Ѣ#'őדp;ˆ*ZBjHU[gendstream
+endobj
+5 0 obj
+<< /Length 80 /Filter /FlateDecode >>
+stream
+*8FTbp~0(Ѣ#'őד́i4bzKST$ EzaI<@,w6edendstream
+endobj
+6 0 obj
+<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+7 0 obj
+<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV3 /Length 32 >> >> /Filter /Standard /Length 256 /O <b45814c26b7159b191abe2237afbcf1c0448ac23339f0916f754e3c99e4c67a3296960be084c567f03357be63fc0b335> /OE <9423f87d42392b07fc90b6a2329545a1c877ecec680adc8cbc80a5ad5c3abb6c> /P -4 /Perms <84770c5fdc078585b95e8592bb0b38a3> /R 6 /StmF /StdCF /StrF /StdCF /U <4165270c9c8795068aba2bae6f89673992c6ed0e0c2d2bfca6189293a5ba3c4817f0c7a4eb476c53ac29382cea765534> /UE <7991ebbe79a40d5dfb1a1bc87394a81dbefc6ab9a1b19ee7845099ed6e7de14b> /V 5 >>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000261 00000 n
+0000000395 00000 n
+0000000545 00000 n
+0000000642 00000 n
+trailer << /Root 1 0 R /Size 8 /ID [<42841c13bbf709d79a200fa1691836f8><31415926535897932384626433832795>] /Encrypt 7 0 R >>
+startxref
+1189
+%%EOF
diff --git a/compare-for-test/qtest/compare/enc2.pdf b/compare-for-test/qtest/compare/enc2.pdf
new file mode 100644
index 00000000..5a025491
--- /dev/null
+++ b/compare-for-test/qtest/compare/enc2.pdf
@@ -0,0 +1,41 @@
+%PDF-2.0
+%
+1 0 obj
+<< /Pages 2 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /Count 1 /Kids [ 3 0 R ] /Type /Pages >>
+endobj
+3 0 obj
+<< /Contents [ 4 0 R 5 0 R ] /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 6 0 R >> >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~൐_7a7ҧ'\ }??OsvZ<NȋD$nN}bendstream
+endobj
+5 0 obj
+<< /Length 80 /Filter /FlateDecode >>
+stream
+*8FTbp~൐_7a7ҧ'\ߥR1"'GRrЭHY_&ˢ2 ߴs<HХ: endstream
+endobj
+6 0 obj
+<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+7 0 obj
+<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV3 /Length 32 >> >> /Filter /Standard /Length 256 /O <08cc676b1f1cc805ee97abf33aab0f77cb195093c52b65ebf04b1dce93531d8d11b6cd60da17599e4d3679513b957140> /OE <f0a631fa9024e58c72ec7a899aa137b5da0ec491849e433c7dca87a614a045e6> /P -4 /Perms <973bd88c774165b5e58f722b3ced7bf4> /R 6 /StmF /StdCF /StrF /StdCF /U <8203fcce3446c8747d515ac3368fb817e0b7a290e1298d2a0246cd3b559d4544aebba6df7a97f0c8e74f98638f658468> /UE <689a534cf6e2ea26b9a5f9073ccfcf268700cc129779a5d1bbabc9eae77c72f0> /V 5 >>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000261 00000 n
+0000000411 00000 n
+0000000561 00000 n
+0000000658 00000 n
+trailer << /Root 1 0 R /Size 8 /ID [<42841c13bbf709d79a200fa1691836f8><31415926535897932384626433832795>] /Encrypt 7 0 R >>
+startxref
+1205
+%%EOF
diff --git a/compare-for-test/qtest/compare/ostream1.pdf b/compare-for-test/qtest/compare/ostream1.pdf
new file mode 100644
index 00000000..b340ae33
--- /dev/null
+++ b/compare-for-test/qtest/compare/ostream1.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/ostream2.pdf b/compare-for-test/qtest/compare/ostream2.pdf
new file mode 100644
index 00000000..27d6b2c2
--- /dev/null
+++ b/compare-for-test/qtest/compare/ostream2.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/start.pdf b/compare-for-test/qtest/compare/start.pdf
new file mode 100644
index 00000000..79001f24
--- /dev/null
+++ b/compare-for-test/qtest/compare/start.pdf
@@ -0,0 +1,47 @@
+%PDF-2.0
+%
+1 0 obj
+<< /Pages 2 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /Count 1 /Kids [ 3 0 R ] /Type /Pages >>
+endobj
+3 0 obj
+<< /Contents [ 4 0 R 5 0 R ] /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 6 0 R >> >> /Type /Page >>
+endobj
+4 0 obj
+<< /Length 48 /Filter /FlateDecode >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW) Tj
+ET
+endstream
+endobj
+5 0 obj
+<< /Length 43 >>
+stream
+BT
+ /F1 24 Tf
+ 72 681 Td
+ (Potato) Tj
+ET
+endstream
+endobj
+6 0 obj
+<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000261 00000 n
+0000000379 00000 n
+0000000471 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<42841c13bbf709d79a200fa1691836f8><31415926535897932384626433832795>] >>
+startxref
+568
+%%EOF
diff --git a/compare-for-test/qtest/compare/zlib-9.pdf b/compare-for-test/qtest/compare/zlib-9.pdf
new file mode 100644
index 00000000..16187f31
--- /dev/null
+++ b/compare-for-test/qtest/compare/zlib-9.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/zlib-ng.pdf b/compare-for-test/qtest/compare/zlib-ng.pdf
new file mode 100644
index 00000000..9d8c4329
--- /dev/null
+++ b/compare-for-test/qtest/compare/zlib-ng.pdf
Binary files differ
diff --git a/compare-for-test/qtest/compare/zlib.pdf b/compare-for-test/qtest/compare/zlib.pdf
new file mode 100644
index 00000000..9a24beb4
--- /dev/null
+++ b/compare-for-test/qtest/compare/zlib.pdf
Binary files differ