2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-11-01 03:12:29 +00:00

Add boundary condition test for getUniqueResourceName

This commit is contained in:
Jay Berkenbilt 2019-01-27 08:00:32 -05:00
parent 2d1db06042
commit c2ae35540e
3 changed files with 25 additions and 1 deletions

View File

@ -1032,12 +1032,19 @@ $td->runtest("detect foreign object in write",
show_ntests(); show_ntests();
# ---------- # ----------
$td->notify("--- Merge Dictionary ---"); $td->notify("--- Merge Dictionary ---");
$n_tests += 1; $n_tests += 3;
$td->runtest("merge dictionary", $td->runtest("merge dictionary",
{$td->COMMAND => "test_driver 50 merge-dict.pdf"}, {$td->COMMAND => "test_driver 50 merge-dict.pdf"},
{$td->FILE => "merge-dict.out", $td->EXIT_STATUS => 0}, {$td->FILE => "merge-dict.out", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES); $td->NORMALIZE_NEWLINES);
$td->runtest("unique resource name",
{$td->COMMAND => "test_driver 60 minimal.pdf"},
{$td->STRING => "test 60 done\n", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->runtest("check output",
{$td->FILE => "a.pdf"},
{$td->FILE => "unique-resources.pdf"});
show_ntests(); show_ntests();
# ---------- # ----------

Binary file not shown.

View File

@ -2016,6 +2016,23 @@ void runtest(int n, char const* filename1, char const* arg2)
w.setStaticID(true); w.setStaticID(true);
w.write(); w.write();
} }
else if (n == 60)
{
// Boundary condition testing for getUniqueResourceName
QPDFObjectHandle r1 = QPDFObjectHandle::newDictionary();
int min_suffix = 1;
for (int i = 1; i < 3; ++i)
{
std::string name = r1.getUniqueResourceName("/Quack", min_suffix);
r1.mergeResources(QPDFObjectHandle::parse("<< /Z << >> >>"));
r1.getKey("/Z").replaceKey(
name, QPDFObjectHandle::newString("moo"));
}
pdf.getTrailer().replaceKey("/QTest", r1);
QPDFWriter w(pdf, "a.pdf");
w.setStaticID(true);
w.write();
}
else else
{ {
throw std::runtime_error(std::string("invalid test ") + throw std::runtime_error(std::string("invalid test ") +