diff options
author | Richard Braun <rbraun@sceen.net> | 2017-07-24 23:11:30 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2017-07-24 23:11:30 +0200 |
commit | 3f9b2ac2bd9654fa237eed19ce593e2bedb20703 (patch) | |
tree | 9b466aa23f6b526e3828562f39040aa6f2de8789 /test | |
parent | b4b0028d58aa76e3da39d9978975d672aa5fa809 (diff) |
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.
Diffstat (limited to 'test')
-rw-r--r-- | test/test_cbuf.c | 81 |
1 files changed, 76 insertions, 5 deletions
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; } |