diff options
Diffstat (limited to 'libtests')
-rw-r--r-- | libtests/buffer.cc | 30 | ||||
-rw-r--r-- | libtests/qtest/buffer/buffer.out | 2 |
2 files changed, 32 insertions, 0 deletions
diff --git a/libtests/buffer.cc b/libtests/buffer.cc index 4713f554..bd28746f 100644 --- a/libtests/buffer.cc +++ b/libtests/buffer.cc @@ -5,6 +5,7 @@ #include <stdlib.h> #include <stdexcept> #include <iostream> +#include <cassert> static unsigned char* uc(char const* s) { @@ -13,6 +14,25 @@ static unsigned char* uc(char const* s) int main() { + { + // Test that buffers can be copied by value. + Buffer bc1(2); + unsigned char* bc1p = bc1.getBuffer(); + bc1p[0] = 'Q'; + bc1p[1] = 'W'; + Buffer bc2(bc1); + bc1p[0] = 'R'; + unsigned char* bc2p = bc2.getBuffer(); + assert(bc2p != bc1p); + assert(bc2p[0] == 'Q'); + assert(bc2p[1] == 'W'); + bc2 = bc1; + bc2p = bc2.getBuffer(); + assert(bc2p != bc1p); + assert(bc2p[0] == 'R'); + assert(bc2p[1] == 'W'); + } + try { Pl_Discard discard; @@ -68,6 +88,16 @@ int main() b = bp3.getBuffer(); std::cout << "size: " << b->getSize() << std::endl; delete b; + // Should be able to call getBuffer again and get an empty buffer + b = bp3.getBuffer(); + std::cout << "size: " << b->getSize() << std::endl; + delete b; + // Also can write 0 and do it. + bp3.write(uc(""), 0); + bp3.finish(); + b = bp3.getBuffer(); + std::cout << "size: " << b->getSize() << std::endl; + delete b; } catch (std::exception& e) { diff --git a/libtests/qtest/buffer/buffer.out b/libtests/qtest/buffer/buffer.out index c1bf24cf..e1e404b1 100644 --- a/libtests/qtest/buffer/buffer.out +++ b/libtests/qtest/buffer/buffer.out @@ -9,4 +9,6 @@ Pl_Buffer::getBuffer() called when not ready size: 9 data: mooquack size: 0 +size: 0 +size: 0 done |