103 lines
2.2 KiB
C
103 lines
2.2 KiB
C
#include <check.h>
|
|
#include <string.h>
|
|
#include <signal.h>
|
|
#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;
|
|
}
|
|
|