| 324 cxBufferInit(&buf, alloc, space, 16, CX_BUFFER_COPY_ON_EXTEND); |
324 cxBufferInit(&buf, alloc, space, 16, CX_BUFFER_COPY_ON_EXTEND); |
| 325 buf.size = 8; |
325 buf.size = 8; |
| 326 CX_TEST_ASSERT(buf.capacity == 16); |
326 CX_TEST_ASSERT(buf.capacity == 16); |
| 327 CX_TEST_ASSERT(talloc.alloc_total == 0); |
327 CX_TEST_ASSERT(talloc.alloc_total == 0); |
| 328 // reserve to grow |
328 // reserve to grow |
| 329 cxBufferReserve(&buf, 32); |
329 CX_TEST_ASSERT(0 == cxBufferReserve(&buf, 32)); |
| 330 CX_TEST_ASSERT(buf.capacity == 32); |
330 CX_TEST_ASSERT(buf.capacity == 32); |
| 331 CX_TEST_ASSERT(buf.size == 8); |
331 CX_TEST_ASSERT(buf.size == 8); |
| 332 CX_TEST_ASSERT(memcmp(buf.space, "Testing", 8) == 0); |
332 CX_TEST_ASSERT(memcmp(buf.space, "Testing", 8) == 0); |
| 333 CX_TEST_ASSERT(talloc.alloc_total > 0); |
333 CX_TEST_ASSERT(talloc.alloc_total > 0); |
| 334 CX_TEST_ASSERT((buf.flags & CX_BUFFER_COPY_ON_EXTEND) == 0); |
334 CX_TEST_ASSERT((buf.flags & CX_BUFFER_COPY_ON_EXTEND) == 0); |
| 335 // reserve to shrink |
335 // reserve to shrink |
| 336 buf.size = 24; |
336 buf.size = 24; |
| 337 cxBufferReserve(&buf, 16); |
337 CX_TEST_ASSERT(0 == cxBufferReserve(&buf, 16)); |
| |
338 CX_TEST_ASSERT(buf.capacity == 16); |
| |
339 CX_TEST_ASSERT(buf.size == 16); |
| |
340 CX_TEST_ASSERT(memcmp(buf.space, "Testing", 8) == 0); |
| |
341 // reserve no-op |
| |
342 CX_TEST_ASSERT(0 == cxBufferReserve(&buf, 16)); |
| 338 CX_TEST_ASSERT(buf.capacity == 16); |
343 CX_TEST_ASSERT(buf.capacity == 16); |
| 339 CX_TEST_ASSERT(buf.size == 16); |
344 CX_TEST_ASSERT(buf.size == 16); |
| 340 CX_TEST_ASSERT(memcmp(buf.space, "Testing", 8) == 0); |
345 CX_TEST_ASSERT(memcmp(buf.space, "Testing", 8) == 0); |
| 341 // reserve to free |
346 // reserve to free |
| 342 cxBufferReserve(&buf, 0); |
347 CX_TEST_ASSERT(0 == cxBufferReserve(&buf, 0)); |
| 343 CX_TEST_ASSERT(buf.capacity == 0); |
348 CX_TEST_ASSERT(buf.capacity == 0); |
| 344 CX_TEST_ASSERT(buf.size == 0); |
349 CX_TEST_ASSERT(buf.size == 0); |
| 345 CX_TEST_ASSERT(buf.space == NULL); |
350 CX_TEST_ASSERT(buf.space == NULL); |
| 346 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
351 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
| 347 cxBufferDestroy(&buf); |
352 cxBufferDestroy(&buf); |