summaryrefslogtreecommitdiffstats
path: root/qpdf/test_driver.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2010-08-05 22:20:52 +0200
committerJay Berkenbilt <ejb@ql.org>2010-08-05 22:20:52 +0200
commit6f2bd7eb3a64ae6ffbdf9ae256d822056ddcb7b0 (patch)
treeb2853762f4a564e1110ddf37f4821ea02d40a367 /qpdf/test_driver.cc
parent11df7809af7131af139be2e76f2db87128700939 (diff)
downloadqpdf-6f2bd7eb3a64ae6ffbdf9ae256d822056ddcb7b0.tar.zst
newStream
git-svn-id: svn+q:///qpdf/trunk@991 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'qpdf/test_driver.cc')
-rw-r--r--qpdf/test_driver.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index e9739e92..09458227 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -398,6 +398,35 @@ void runtest(int n, char const* filename)
w.setStreamDataMode(qpdf_s_preserve);
w.write();
}
+ else if (n == 9)
+ {
+ QPDFObjectHandle root = pdf.getRoot();
+ PointerHolder<Buffer> b1 = new Buffer(20);
+ unsigned char* bp = b1.getPointer()->getBuffer();
+ memcpy(bp, (char*)"data for new stream\n", 20); // no null!
+ QPDFObjectHandle qstream = QPDFObjectHandle::newStream(&pdf, b1);
+ QPDFObjectHandle rstream = QPDFObjectHandle::newStream(&pdf);
+ try
+ {
+ rstream.getStreamData();
+ std::cout << "oops -- getStreamData didn't throw" << std::endl;
+ }
+ catch (std::logic_error const& e)
+ {
+ std::cout << "exception: " << e.what() << std::endl;
+ }
+ PointerHolder<Buffer> b2 = new Buffer(22);
+ bp = b2.getPointer()->getBuffer();
+ memcpy(bp, (char*)"data for other stream\n", 22); // no null!
+ rstream.replaceStreamData(
+ b2, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull());
+ root.replaceKey("/QStream", qstream);
+ root.replaceKey("/RStream", rstream);
+ QPDFWriter w(pdf, "a.pdf");
+ w.setStaticID(true);
+ w.setStreamDataMode(qpdf_s_preserve);
+ w.write();
+ }
else
{
throw std::runtime_error(std::string("invalid test ") +