summaryrefslogtreecommitdiffstats
path: root/qpdf/test_driver.cc
diff options
context:
space:
mode:
Diffstat (limited to 'qpdf/test_driver.cc')
-rw-r--r--qpdf/test_driver.cc59
1 files changed, 59 insertions, 0 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index a0aab3a8..2998e0a1 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -2615,6 +2615,65 @@ void runtest(int n, char const* filename1, char const* arg2)
w.setQDFMode(true);
w.write();
}
+ else if (n == 75)
+ {
+ // This test is crafted to work with erase-nntree.pdf
+ auto erase1 = QPDFNameTreeObjectHelper(
+ pdf.getTrailer().getKey("/Erase1"), pdf);
+ QPDFObjectHandle value;
+ assert(! erase1.remove("1X"));
+ assert(erase1.remove("1C", &value));
+ assert(value.getUTF8Value() == "c");
+ auto iter1 = erase1.find("1B");
+ iter1.remove();
+ assert((*iter1).first == "1D");
+ iter1.remove();
+ assert(iter1 == erase1.end());
+ --iter1;
+ assert((*iter1).first == "1A");
+ iter1.remove();
+ assert(iter1 == erase1.end());
+
+ auto erase2_oh = pdf.getTrailer().getKey("/Erase2");
+ auto erase2 = QPDFNumberTreeObjectHelper(erase2_oh, pdf);
+ auto iter2 = erase2.find(250);
+ iter2.remove();
+ assert(iter2 == erase2.end());
+ --iter2;
+ assert((*iter2).first == 240);
+ auto k1 = erase2_oh.getKey("/Kids").getArrayItem(1);
+ auto l1 = k1.getKey("/Limits");
+ assert(l1.getArrayItem(0).getIntValue() == 230);
+ assert(l1.getArrayItem(1).getIntValue() == 240);
+ iter2 = erase2.find(210);
+ iter2.remove();
+ assert((*iter2).first == 220);
+ k1 = erase2_oh.getKey("/Kids").getArrayItem(0);
+ l1 = k1.getKey("/Limits");
+ assert(l1.getArrayItem(0).getIntValue() == 220);
+ assert(l1.getArrayItem(1).getIntValue() == 220);
+ k1 = k1.getKey("/Kids");
+ assert(k1.getArrayNItems() == 1);
+
+ auto erase3 = QPDFNumberTreeObjectHelper(
+ pdf.getTrailer().getKey("/Erase3"), pdf);
+ iter2 = erase3.find(320);
+ iter2.remove();
+ assert(iter2 == erase3.end());
+ erase3.remove(310);
+ assert(erase3.begin() == erase3.end());
+
+ auto erase4 = QPDFNumberTreeObjectHelper(
+ pdf.getTrailer().getKey("/Erase4"), pdf);
+ iter2 = erase4.find(420);
+ iter2.remove();
+ assert((*iter2).first == 430);
+
+ QPDFWriter w(pdf, "a.pdf");
+ w.setStaticID(true);
+ w.setQDFMode(true);
+ w.write();
+ }
else
{
throw std::runtime_error(std::string("invalid test ") +