60 UCX_TEST_ASSERT(ucx_buffer_tell(b) == 3, "pos wrong after first 3 puts"); |
60 UCX_TEST_ASSERT(ucx_buffer_tell(b) == 3, "pos wrong after first 3 puts"); |
61 ucx_buffer_seek(b, 10, SEEK_CUR); |
61 ucx_buffer_seek(b, 10, SEEK_CUR); |
62 ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); |
62 ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); |
63 UCX_TEST_ASSERT(ucx_buffer_tell(b) == 16, "pos wrong after last 3 puts"); |
63 UCX_TEST_ASSERT(ucx_buffer_tell(b) == 16, "pos wrong after last 3 puts"); |
64 UCX_TEST_ASSERT(ucx_buffer_eof(b), "eof not set"); |
64 UCX_TEST_ASSERT(ucx_buffer_eof(b), "eof not set"); |
65 UCX_TEST_ASSERT(ucx_buffer_putc(b, 48) == EOF, "put shall return EOF on memof"); |
65 UCX_TEST_ASSERT(ucx_buffer_putc(b, 48) == EOF, |
|
66 "put shall return EOF when buffer is full"); |
66 UCX_TEST_ASSERT(memcmp(buffer, "000 000", 16) == 0, |
67 UCX_TEST_ASSERT(memcmp(buffer, "000 000", 16) == 0, |
67 "buffer contains incorrect content"); |
68 "buffer contains incorrect content"); |
68 |
69 |
69 UCX_TEST_END |
70 UCX_TEST_END |
70 |
71 |
182 UCX_TEST_END |
183 UCX_TEST_END |
183 |
184 |
184 ucx_buffer_free(b); |
185 ucx_buffer_free(b); |
185 free(buffer); |
186 free(buffer); |
186 } |
187 } |
|
188 |
|
189 UCX_TEST_IMPLEMENT(test_ucx_buffer_extract) { |
|
190 char *buffer = malloc(16); |
|
191 strcpy(buffer, "this is a test!"); |
|
192 |
|
193 UcxBuffer *src = ucx_buffer_new(buffer, 16, UCX_BUFFER_AUTOFREE), |
|
194 *dst = ucx_buffer_extract(src, 5, 5, UCX_BUFFER_DEFAULT); |
|
195 |
|
196 UCX_TEST_BEGIN |
|
197 UCX_TEST_ASSERT(ucx_buffer_testflags(dst, UCX_BUFFER_AUTOFREE), |
|
198 "autofree flag shall be enforced"); |
|
199 UCX_TEST_ASSERT(ucx_buffer_size(dst) == 5, "wrong size for new buffer"); |
|
200 char rb[5]; |
|
201 ucx_buffer_read(rb, 1, 5, dst); |
|
202 UCX_TEST_ASSERT(memcmp(rb, "is a ", 5) == 0, |
|
203 "new buffer has incorrect content"); |
|
204 |
|
205 UCX_TEST_ASSERT(ucx_buffer_extract(dst, 3, 3, UCX_BUFFER_DEFAULT) == NULL, |
|
206 "extract shall fail on invalid bounds"); |
|
207 |
|
208 UCX_TEST_END |
|
209 |
|
210 ucx_buffer_free(dst); |
|
211 ucx_buffer_free(src); |
|
212 } |