summaryrefslogtreecommitdiff
path: root/test/test_cbuf.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2017-07-24 23:11:30 +0200
committerRichard Braun <rbraun@sceen.net>2017-07-24 23:11:30 +0200
commit3f9b2ac2bd9654fa237eed19ce593e2bedb20703 (patch)
tree9b466aa23f6b526e3828562f39040aa6f2de8789 /test/test_cbuf.c
parentb4b0028d58aa76e3da39d9978975d672aa5fa809 (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/test_cbuf.c')
-rw-r--r--test/test_cbuf.c81
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;
}