add the last test for full line coverage

Fri, 28 Nov 2025 15:09:57 +0100

author
Mike Becker <universe@uap-core.de>
date
Fri, 28 Nov 2025 15:09:57 +0100
changeset 1518
39b9dd939ac8
parent 1517
1fe3df1c7c67
child 1519
0cc05a5c053d

add the last test for full line coverage

tests/test_buffer.c file | annotate | diff | comparison | revisions
--- a/tests/test_buffer.c	Thu Nov 27 21:39:20 2025 +0100
+++ b/tests/test_buffer.c	Fri Nov 28 15:09:57 2025 +0100
@@ -1529,6 +1529,32 @@
     cxBufferDestroy(&target);
 }
 
+CX_TEST(test_buffer_write_large_data_flush_target_full) {
+    CxBuffer buf, target;
+    cxBufferInit(&target, NULL, 16, cxDefaultAllocator, CX_BUFFER_DEFAULT);
+    cxBufferInit(&buf, NULL, 8, cxDefaultAllocator, CX_BUFFER_DEFAULT);
+    // simulate that the target is full:
+    target.pos = target.size = 16;
+    CX_TEST_DO {
+        CxBufferFlushConfig flush;
+        flush.threshold = 0;
+        flush.blksize = 32;
+        flush.blkmax = 1;
+        flush.target = &target;
+        flush.wfunc = cxBufferWriteFunc;
+        CX_TEST_ASSERT(0 == cxBufferEnableFlushing(&buf, flush));
+        // write more bytes than the buffer can take, but the target is full
+        size_t written = cxBufferWrite("foobarfoobar", 1, 12, &buf);
+        CX_TEST_ASSERT(written == 0);
+        CX_TEST_ASSERT(buf.pos == 0);
+        CX_TEST_ASSERT(buf.size == 0);
+        CX_TEST_ASSERT(target.pos == 16);
+        CX_TEST_ASSERT(target.size == 16);
+    }
+    cxBufferDestroy(&buf);
+    cxBufferDestroy(&target);
+}
+
 CX_TEST(test_buffer_write_flush_at_threshold_target_full) {
     CxBuffer buf, target;
     // target does NOT auto-extend and can get completely full
@@ -1834,6 +1860,7 @@
     cx_test_register(suite, test_buffer_write_flush_misaligned);
     cx_test_register(suite, test_buffer_write_flush_target_full);
     cx_test_register(suite, test_buffer_write_flush_multibyte_target_full);
+    cx_test_register(suite, test_buffer_write_large_data_flush_target_full);
     cx_test_register(suite, test_buffer_pop);
     cx_test_register(suite, test_buffer_flush);
     cx_test_register(suite, test_buffer_get);

mercurial