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.cc58
1 files changed, 46 insertions, 12 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index 99c5cf53..6cb5fc80 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -347,30 +347,29 @@ void runtest(int n, char const* filename1, char const* arg2)
else if (qtest.isArray())
{
QTC::TC("qpdf", "main QTest array");
- int nitems = qtest.getArrayNItems();
std::cout << "/QTest is an array with "
- << nitems << " items" << std::endl;
- for (int i = 0; i < nitems; ++i)
+ << qtest.getArrayNItems() << " items" << std::endl;
+ int i = 0;
+ for (auto& iter: QPDFArrayItems(qtest))
{
QTC::TC("qpdf", "main QTest array indirect",
- qtest.getArrayItem(i).isIndirect() ? 1 : 0);
+ iter.isIndirect() ? 1 : 0);
std::cout << " item " << i << " is "
- << (qtest.getArrayItem(i).isIndirect() ? "in" : "")
+ << (iter.isIndirect() ? "in" : "")
<< "direct" << std::endl;
+ ++i;
}
}
else if (qtest.isDictionary())
{
QTC::TC("qpdf", "main QTest dictionary");
std::cout << "/QTest is a dictionary" << std::endl;
- std::set<std::string> keys = qtest.getKeys();
- for (std::set<std::string>::iterator iter = keys.begin();
- iter != keys.end(); ++iter)
- {
+ for (auto& iter: QPDFDictItems(qtest))
+ {
QTC::TC("qpdf", "main QTest dictionary indirect",
- (qtest.getKey(*iter).isIndirect() ? 1 : 0));
- std::cout << " " << *iter << " is "
- << (qtest.getKey(*iter).isIndirect() ? "in" : "")
+ iter.second.isIndirect() ? 1 : 0);
+ std::cout << " " << iter.first << " is "
+ << (iter.second.isIndirect() ? "in" : "")
<< "direct" << std::endl;
}
}
@@ -1539,7 +1538,38 @@ void runtest(int n, char const* filename1, char const* arg2)
QPDFObjectHandle integer = qtest.getKey("/Integer");
QPDFObjectHandle null = QPDFObjectHandle::newNull();
assert(array.isArray());
+ {
+ // Exercise iterators directly
+ QPDFArrayItems ai(array);
+ auto i = ai.begin();
+ assert(i->getName() == "/Item0");
+ auto& i_value = *i;
+ --i;
+ assert(i->getName() == "/Item0");
+ ++i;
+ ++i;
+ ++i;
+ assert(i == ai.end());
+ ++i;
+ assert(i == ai.end());
+ assert(! i_value.isInitialized());
+ --i;
+ assert(i_value.getName() == "/Item2");
+ assert(i->getName() == "/Item2");
+ }
assert(dictionary.isDictionary());
+ {
+ // Exercise iterators directly
+ QPDFDictItems di(dictionary);
+ auto i = di.begin();
+ assert(i->first == "/Key1");
+ auto& i_value = *i;
+ assert(i->second.getName() == "/Value1");
+ ++i;
+ ++i;
+ assert(i == di.end());
+ assert(! i_value.second.isInitialized());
+ }
assert("" == qtest.getStringValue());
array.getArrayItem(-1).assertNull();
array.getArrayItem(16059).assertNull();
@@ -1599,6 +1629,10 @@ void runtest(int n, char const* filename1, char const* arg2)
(r1.lly > 3.39) && (r1.lly < 3.41) &&
(r1.urx > 5.59) && (r1.urx < 5.61) &&
(r1.ury > 7.79) && (r1.ury < 7.81));
+ QPDFObjectHandle uninitialized;
+ assert(! uninitialized.isInitialized());
+ assert(! uninitialized.isInteger());
+ assert(! uninitialized.isDictionary());
}
else if (n == 43)
{