aboutsummaryrefslogtreecommitdiffstats
path: root/libtests/buffer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libtests/buffer.cc')
-rw-r--r--libtests/buffer.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/libtests/buffer.cc b/libtests/buffer.cc
index bd28746f..23d82e7b 100644
--- a/libtests/buffer.cc
+++ b/libtests/buffer.cc
@@ -6,6 +6,7 @@
#include <stdexcept>
#include <iostream>
#include <cassert>
+#include <cstring>
static unsigned char* uc(char const* s)
{
@@ -98,6 +99,31 @@ int main()
b = bp3.getBuffer();
std::cout << "size: " << b->getSize() << std::endl;
delete b;
+
+ // Malloc buffer should behave similarly.
+ Pl_Buffer bp4("bp4");
+ bp4.write(uc("asdf"), 4);
+ unsigned char* mbuf;
+ size_t len;
+ try
+ {
+ bp4.getMallocBuffer(&mbuf, &len);
+ assert(false);
+ }
+ catch (std::logic_error& e)
+ {
+ std::cout << "malloc buffer logic error: " << e.what() << std::endl;
+ }
+ bp4.finish();
+ bp4.getMallocBuffer(&mbuf, &len);
+ assert(len == 4);
+ assert(memcmp(mbuf, uc("asdf"), 4) == 0);
+ free(mbuf);
+ bp4.write(uc(""), 0);
+ bp4.finish();
+ bp4.getMallocBuffer(&mbuf, &len);
+ assert(mbuf == nullptr);
+ assert(len == 0);
}
catch (std::exception& e)
{