Files
libucore/test/test_buffer.c
T
Nils O. Selåsdal c260602890 Add gcc printf attribute to gbuf_printf.
More gbuf tests
2012-11-18 14:12:05 +01:00

102 lines
2.2 KiB
C

#include <check.h>
#include <string.h>
#include <ucore/ucore_buffer.h>
START_TEST (test_new_gbuf)
GBuf *buf = uc_new_gbuf(11);
fail_if(buf == NULL);
fail_if(buf->len != 11);
fail_if(buf->ref_cnt != 1);
fail_if(buf->buf == NULL);
fail_if(buf->used != 0);
END_TEST
START_TEST (test_gbuf_grow)
GBuf *buf = uc_new_gbuf(33);
int rc;
fail_if(buf == NULL);
fail_if(buf->len != 33);
rc = uc_gbuf_grow(buf, 128);
fail_if(rc != 0);
fail_if(buf->len < 128 + 33);
fail_if(buf->used != 0);
END_TEST
START_TEST (test_gbuf_append1)
const char *data = "lorum_ ipson 1234567890";
int rc;
GBuf *buf = uc_new_gbuf(11);
fail_if(buf == NULL);
rc = uc_gbuf_append(buf, data, strlen(data) + 1);
fail_if(rc != 0);
fail_if(buf->used != strlen(data) + 1);
fail_if(strcmp(data, buf->buf) != 0);
END_TEST
START_TEST (test_gbuf_printf1)
int rc;
GBuf *buf = uc_new_gbuf(10);
fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, "test %d", 1);
fail_if(rc != 6, "rc was %d", rc);
fail_if(buf->used != 6, "buf->used was %d", buf->used);
fail_if(strcmp("test 1", buf->buf) != 0);
END_TEST
START_TEST (test_gbuf_printf2)
int rc;
GBuf *buf = uc_new_gbuf(8);
fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, "test %d test %d test %d", 1, 2, 3);
fail_if(rc != 20, "rc was %d", rc);
fail_if(buf->used != 20, "buf->used was %d", buf->used);
fail_if(strcmp("test 1 test 2 test 3", buf->buf) != 0);
END_TEST
START_TEST (test_gbuf_printf_empty_string)
int rc;
GBuf *buf = uc_new_gbuf(1);
const char *fmt = ""; //tricks gcc to not warn about empty format string
fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, fmt);
fail_if(rc != 0);
fail_if(buf->used != 0);
END_TEST
Suite *buffer_suite(void)
{
Suite *s = suite_create("buffer");
TCase *tc = tcase_create("buffer (GBuf) tests");
tcase_add_test(tc, test_new_gbuf);
tcase_add_test(tc, test_gbuf_append1);
tcase_add_test(tc, test_gbuf_grow);
tcase_add_test(tc, test_gbuf_printf1);
tcase_add_test(tc, test_gbuf_printf2);
tcase_add_test(tc, test_gbuf_printf_empty_string);
suite_add_tcase(s, tc);
return s;
}