1.1 --- a/test/buffer_tests.c Wed Oct 10 10:04:01 2012 +0200 1.2 +++ b/test/buffer_tests.c Wed Oct 10 10:46:20 2012 +0200 1.3 @@ -62,7 +62,8 @@ 1.4 ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); 1.5 UCX_TEST_ASSERT(ucx_buffer_tell(b) == 16, "pos wrong after last 3 puts"); 1.6 UCX_TEST_ASSERT(ucx_buffer_eof(b), "eof not set"); 1.7 - UCX_TEST_ASSERT(ucx_buffer_putc(b, 48) == EOF, "put shall return EOF on memof"); 1.8 + UCX_TEST_ASSERT(ucx_buffer_putc(b, 48) == EOF, 1.9 + "put shall return EOF when buffer is full"); 1.10 UCX_TEST_ASSERT(memcmp(buffer, "000 000", 16) == 0, 1.11 "buffer contains incorrect content"); 1.12 1.13 @@ -184,3 +185,28 @@ 1.14 ucx_buffer_free(b); 1.15 free(buffer); 1.16 } 1.17 + 1.18 +UCX_TEST_IMPLEMENT(test_ucx_buffer_extract) { 1.19 + char *buffer = malloc(16); 1.20 + strcpy(buffer, "this is a test!"); 1.21 + 1.22 + UcxBuffer *src = ucx_buffer_new(buffer, 16, UCX_BUFFER_AUTOFREE), 1.23 + *dst = ucx_buffer_extract(src, 5, 5, UCX_BUFFER_DEFAULT); 1.24 + 1.25 + UCX_TEST_BEGIN 1.26 + UCX_TEST_ASSERT(ucx_buffer_testflags(dst, UCX_BUFFER_AUTOFREE), 1.27 + "autofree flag shall be enforced"); 1.28 + UCX_TEST_ASSERT(ucx_buffer_size(dst) == 5, "wrong size for new buffer"); 1.29 + char rb[5]; 1.30 + ucx_buffer_read(rb, 1, 5, dst); 1.31 + UCX_TEST_ASSERT(memcmp(rb, "is a ", 5) == 0, 1.32 + "new buffer has incorrect content"); 1.33 + 1.34 + UCX_TEST_ASSERT(ucx_buffer_extract(dst, 3, 3, UCX_BUFFER_DEFAULT) == NULL, 1.35 + "extract shall fail on invalid bounds"); 1.36 + 1.37 + UCX_TEST_END 1.38 + 1.39 + ucx_buffer_free(dst); 1.40 + ucx_buffer_free(src); 1.41 +}