From 7f716e9ede9e8c0299c9bc297c3612099fa7227c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Thu, 30 Apr 2015 16:36:29 +0200 Subject: [PATCH] Add a few more dbuf tests --- test/test_dbuf.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/test/test_dbuf.c b/test/test_dbuf.c index d0b6bc1..317f2ba 100644 --- a/test/test_dbuf.c +++ b/test/test_dbuf.c @@ -83,12 +83,90 @@ START_TEST (test_dbuf_take_fail) END_TEST +START_TEST (test_dbuf_take_all) + DBuf buf; + int rc; + + rc = uc_dbuf_init(&buf, 10); + + fail_if(rc != 0); + fail_if(uc_dbuf_buflen(&buf) != 10); + fail_if(uc_dbuf_remaining(&buf) != 10); + + strcpy((char *)buf.end, "12345679"); + uc_dbuf_added(&buf, 10); + fail_if(uc_dbuf_len(&buf) != 10); + fail_if(uc_dbuf_remaining(&buf) != 0); + + rc = uc_dbuf_take(&buf, 10); + fail_if(rc != 0); + fail_if(uc_dbuf_len(&buf) != 0); + fail_if(uc_dbuf_remaining(&buf) != 10); + + uc_dbuf_free(&buf); +END_TEST + +START_TEST (test_dbuf_add_ensure_take) + DBuf *buf; + int rc; + + int i; + buf = malloc(sizeof *buf); + fail_if(buf == NULL); + + + rc = uc_dbuf_init(buf, 10); + + fail_if(rc != 0); + fail_if(uc_dbuf_buflen(buf) != 10); + fail_if(uc_dbuf_remaining(buf) != 10); + + for (i = 0; i < 10; i++) { + rc = uc_dbuf_ensure(buf,10); + fail_if(rc != 0); + + uc_dbuf_added(buf, 2); + fail_if(uc_dbuf_len(buf) != 2); + fail_if(uc_dbuf_remaining(buf) != 8); + + uc_dbuf_added(buf, 8); + fail_if(uc_dbuf_len(buf) != 10); + fail_if(uc_dbuf_remaining(buf) != 0); + + rc = uc_dbuf_take(buf, 5); + fail_if(rc != 0); + fail_if(uc_dbuf_len(buf) != 5); + + rc = uc_dbuf_take(buf, 5); + fail_if(rc != 0); + fail_if(uc_dbuf_len(buf) != 0); + fail_if(uc_dbuf_remaining(buf) != 10); + } + + rc = uc_dbuf_ensure(buf,90); + fail_if(rc != 0); + //ok, dbuf adds the ensured capacity to the existing buflen + //so it becomes 100, not 90 even though the buffer is already empty + fail_if(uc_dbuf_remaining(buf) != 100, "remaining %zu", (uc_dbuf_remaining(buf))); + fail_if(uc_dbuf_buflen(buf) != 100); + memset(buf->end, 0xDE, 90); + uc_dbuf_added(buf, 90); + fail_if(uc_dbuf_remaining(buf) != 10); + + uc_dbuf_free(buf); + free(buf); +END_TEST + Suite *dbuf_suite(void) { Suite *s = suite_create("dbuf"); TCase *tc = tcase_create("dbuf tests"); tcase_add_test(tc, test_dbuf); + + tcase_add_test(tc, test_dbuf_take_all); + tcase_add_test(tc, test_dbuf_add_ensure_take); + #ifndef NDEBUG tcase_add_test_raise_signal(tc, test_dbuf_take_fail, SIGABRT); #else