Fri, 28 Nov 2025 15:09:57 +0100
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 = ⌖ + 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);