From 3f9b2ac2bd9654fa237eed19ce593e2bedb20703 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Mon, 24 Jul 2017 23:11:30 +0200 Subject: cbuf: update interface Rename cbuf_push and cbuf_pop to cbuf_pushb and cbuf_pop respectively, and add the new cbuf_push and cbuf_pop functions, that provide the same services as the old functions, on buffers rather than single bytes. --- test/test_cbuf.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 76 insertions(+), 5 deletions(-) (limited to 'test/test_cbuf.c') diff --git a/test/test_cbuf.c b/test/test_cbuf.c index 918597e..15e4d62 100644 --- a/test/test_cbuf.c +++ b/test/test_cbuf.c @@ -42,7 +42,7 @@ test_push(struct cbuf *cbuf, const char *s) len = strlen(s) + 1; for (i = 0; i < len; i++) { - cbuf_push(cbuf, s[i]); + cbuf_pushb(cbuf, s[i], true); } } @@ -258,12 +258,79 @@ test_write_overflow(void) #undef STRING } -int -main(int argc, char *argv[]) +static void +test_push_buf(void) +{ + char cbuf_buf[TEST_BUF_SIZE]; + struct cbuf cbuf; + int error; + + cbuf_init(&cbuf, cbuf_buf, sizeof(cbuf_buf)); + +#define STRING "abcdef" + error = cbuf_push(&cbuf, STRING, STRLEN(STRING) + 1, false); + check(!error); + test_check(&cbuf, cbuf_start(&cbuf), STRING, STRLEN(STRING) + 1); + check(cbuf_size(&cbuf) == (STRLEN(STRING) + 1)); +#undef STRING +} + +static void +test_push_buf_overflow(void) +{ + char cbuf_buf[TEST_BUF_SIZE]; + struct cbuf cbuf; + int error; + + cbuf_init(&cbuf, cbuf_buf, sizeof(cbuf_buf)); + cbuf.start = 0; + cbuf.end = TEST_BUF_SIZE - 1; + +#define STRING "abcdef" + error = cbuf_push(&cbuf, STRING, STRLEN(STRING) + 1, false); + check(error); +#undef STRING +} + +static void +test_pop_buf(void) { - (void)argc; - (void)argv; + char cbuf_buf[TEST_BUF_SIZE]; + struct cbuf cbuf; + size_t size; + int error; + + cbuf_init(&cbuf, cbuf_buf, sizeof(cbuf_buf)); +#define STRING "abcdef" + error = cbuf_push(&cbuf, STRING, STRLEN(STRING) + 1, false); + check(!error); + size = sizeof(cbuf_buf); + error = cbuf_pop(&cbuf, cbuf_buf, &size); + check(!error && (size == (STRLEN(STRING) + 1))); +#undef STRING +} + +static void +test_pop_buf_overflow(void) +{ + char cbuf_buf[TEST_BUF_SIZE]; + struct cbuf cbuf; + size_t size; + int error; + + cbuf_init(&cbuf, cbuf_buf, sizeof(cbuf_buf)); + +#define STRING "abcdef" + size = sizeof(cbuf_buf); + error = cbuf_pop(&cbuf, cbuf_buf, &size); + check(error); +#undef STRING +} + +int +main(void) +{ test_read_0(); test_read_regular(); test_read_overflow(); @@ -274,6 +341,10 @@ main(int argc, char *argv[]) test_append_overwrite(); test_write_regular(); test_write_overflow(); + test_push_buf(); + test_push_buf_overflow(); + test_pop_buf(); + test_pop_buf_overflow(); return 0; } -- cgit v1.2.3