#include #include #include #include "ucore/dbuf.h" START_TEST (test_dbuf) 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_ensure(&buf, 110); fail_if(rc != 0); fail_if(uc_dbuf_remaining(&buf) != 110); fail_if(uc_dbuf_buflen(&buf) != 120); rc = uc_dbuf_ensure(&buf, 5); fail_if(rc != 0); strcpy((char *)buf.end, "ABCD"); uc_dbuf_added(&buf, 5); uc_dbuf_take(&buf, 10); fail_if(uc_dbuf_remaining(&buf) != 105); fail_if(uc_dbuf_len(&buf) != 5); ck_assert_str_eq((char *)buf.start, "ABCD"); uc_dbuf_take(&buf, 5); fail_if(uc_dbuf_remaining(&buf) != 120); fail_if(uc_dbuf_buflen(&buf) != 120); fail_if(uc_dbuf_len(&buf) != 0); strcpy((char *)buf.end, "EFGH"); uc_dbuf_added(&buf, 5); uc_dbuf_trim(&buf); fail_if(uc_dbuf_buflen(&buf) != 5); fail_if(uc_dbuf_len(&buf) != 5); uc_dbuf_take(&buf, 1); rc = uc_dbuf_ensure(&buf, 10); fail_if(rc != 0); ck_assert_str_eq((char *)buf.start, "FGH"); uc_dbuf_take(&buf, 1); uc_dbuf_trim(&buf); ck_assert_str_eq((char *)buf.start, "GH"); fail_if(uc_dbuf_buflen(&buf) != 3); fail_if(uc_dbuf_len(&buf) != 3); uc_dbuf_free(&buf); END_TEST START_TEST (test_dbuf_take_fail) 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, 11); fail_if(rc == 0); uc_dbuf_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); #ifndef NDEBUG tcase_add_test_raise_signal(tc, test_dbuf_take_fail, SIGABRT); #else tcase_add_test(tc, test_dbuf_take_fail); #endif suite_add_tcase(s, tc); return s; }