aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/test_driver.cc
diff options
context:
space:
mode:
Diffstat (limited to 'qpdf/test_driver.cc')
-rw-r--r--qpdf/test_driver.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index 24e2f1ec..b2ceca5c 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -779,6 +779,34 @@ void runtest(int n, char const* filename)
pdf.removePage(pages[0]);
std::cout << "you can't see this" << std::endl;
}
+ else if (n == 18)
+ {
+ // Remove a page and re-insert it in the same file.
+ std::vector<QPDFObjectHandle> const& pages = pdf.getAllPages();
+
+ // Remove pages from various places, checking to make sure
+ // that our pages reference is getting updated.
+ assert(pages.size() == 10);
+ QPDFObjectHandle page5 = pages[5];
+ pdf.removePage(page5);
+ pdf.addPage(page5, false);
+ assert(pages.size() == 10);
+ assert(pages.back().getObjectID() == page5.getObjectID());
+
+ QPDFWriter w(pdf, "a.pdf");
+ w.setStaticID(true);
+ w.setStreamDataMode(qpdf_s_preserve);
+ w.write();
+ }
+ else if (n == 19)
+ {
+ // Remove a page and re-insert it in the same file.
+ std::vector<QPDFObjectHandle> const& pages = pdf.getAllPages();
+
+ // Try to insert a page that's already there.
+ pdf.addPage(pages[5], false);
+ std::cout << "you can't see this" << std::endl;
+ }
else
{
throw std::runtime_error(std::string("invalid test ") +