aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-01-24 10:16:48 +0100
committerJay Berkenbilt <ejb@ql.org>2021-01-25 21:39:10 +0100
commit5816fb44b8ce24e8bb58cb30792e1c763d6cb163 (patch)
treea213191f94c80095f3f6f8261883ccd8ff95cfb9 /qpdf
parent16a9bb3f6f63497946d0efbf403df92d0ce30745 (diff)
downloadqpdf-5816fb44b8ce24e8bb58cb30792e1c763d6cb163.tar.zst
name/number trees: insertAfter
Diffstat (limited to 'qpdf')
-rw-r--r--qpdf/qpdf.testcov1
-rw-r--r--qpdf/qtest/qpdf/name-tree.out3
-rw-r--r--qpdf/qtest/qpdf/number-tree.out3
-rw-r--r--qpdf/test_driver.cc26
4 files changed, 33 insertions, 0 deletions
diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov
index 996c565a..aa07b45f 100644
--- a/qpdf/qpdf.testcov
+++ b/qpdf/qpdf.testcov
@@ -552,3 +552,4 @@ NNTree bad node during find 0
NNTree node is not a dictionary 0
NNTree limits didn't change 0
NNTree increment end() 0
+NNTree insertAfter inserts first 0
diff --git a/qpdf/qtest/qpdf/name-tree.out b/qpdf/qtest/qpdf/name-tree.out
index 2292d5d7..377d3ab5 100644
--- a/qpdf/qtest/qpdf/name-tree.out
+++ b/qpdf/qtest/qpdf/name-tree.out
@@ -16,6 +16,9 @@
20 twenty -> twenty.
22 twenty-two -> twenty-two!
29 twenty-nine -> twenty-nine!
+insertAfter
+3 (3!)
+4 (4!)
/Empty1
/Empty2
/Bad1: deprecated API
diff --git a/qpdf/qtest/qpdf/number-tree.out b/qpdf/qtest/qpdf/number-tree.out
index 4ea689ce..d1ad8302 100644
--- a/qpdf/qtest/qpdf/number-tree.out
+++ b/qpdf/qtest/qpdf/number-tree.out
@@ -26,6 +26,9 @@
22 twenty-two
23 twenty-three
29 twenty-nine
+insertAfter
+3 (3!)
+4 (4!)
/Bad1: deprecated API
/Bad1
WARNING: number-tree.pdf (Name/Number tree node (object 14)): name/number tree node has neither non-empty /Nums nor /Kids
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index 526b0123..a0aab3a8 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -1802,6 +1802,19 @@ void runtest(int n, char const* filename1, char const* arg2)
--iter1;
assert((*iter1).first == 2);
+ std::cout << "insertAfter" << std::endl;
+ auto new2 = QPDFNumberTreeObjectHelper::newEmpty(pdf);
+ auto iter2 = new2.begin();
+ assert(iter2 == new2.end());
+ iter2.insertAfter(3, QPDFObjectHandle::newString("3!"));
+ assert((*iter2).first == 3);
+ iter2.insertAfter(4, QPDFObjectHandle::newString("4!"));
+ assert((*iter2).first == 4);
+ for (auto i: new2)
+ {
+ std::cout << i.first << " " << i.second.unparse() << std::endl;
+ }
+
// Exercise deprecated API until qpdf 11
std::cout << "/Bad1: deprecated API" << std::endl;
auto bad1 = QPDFNumberTreeObjectHelper(
@@ -1961,6 +1974,19 @@ void runtest(int n, char const* filename1, char const* arg2)
--iter1;
assert((*iter1).first == "2");
+ std::cout << "insertAfter" << std::endl;
+ auto new2 = QPDFNameTreeObjectHelper::newEmpty(pdf);
+ auto iter2 = new2.begin();
+ assert(iter2 == new2.end());
+ iter2.insertAfter("3", QPDFObjectHandle::newString("3!"));
+ assert((*iter2).first == "3");
+ iter2.insertAfter("4", QPDFObjectHandle::newString("4!"));
+ assert((*iter2).first == "4");
+ for (auto i: new2)
+ {
+ std::cout << i.first << " " << i.second.unparse() << std::endl;
+ }
+
std::vector<std::string> empties = {"/Empty1", "/Empty2"};
for (auto const& k: empties)
{