First iteration of mbuf, message buffer api
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
#include <check.h>
|
||||
#include <string.h>
|
||||
#include <ucore/mbuf.h>
|
||||
|
||||
|
||||
START_TEST (test_mbuf_new)
|
||||
struct MBuf *mbuf;
|
||||
|
||||
mbuf = uc_mbuf_new(110);
|
||||
|
||||
fail_if(mbuf == NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 0);
|
||||
fail_if(uc_mbuf_headroom(mbuf) != 0);
|
||||
fail_if(uc_mbuf_tailroom(mbuf) != 110);
|
||||
fail_if(mbuf->next != NULL);
|
||||
fail_if(mbuf->p1 != NULL);
|
||||
fail_if(mbuf->p2 != NULL);
|
||||
fail_if(mbuf->p3 != NULL);
|
||||
fail_if(mbuf->p4 != NULL);
|
||||
fail_if(mbuf->cookie != NULL);
|
||||
fail_if(mbuf->head != mbuf->tail);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_new_inline)
|
||||
struct MBuf *mbuf;
|
||||
|
||||
mbuf = uc_mbuf_new_inline(110);
|
||||
|
||||
fail_if(mbuf == NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 0);
|
||||
fail_if(uc_mbuf_headroom(mbuf) != 0);
|
||||
fail_if(uc_mbuf_tailroom(mbuf) != 110);
|
||||
fail_if(mbuf->next != NULL);
|
||||
fail_if(mbuf->p1 != NULL);
|
||||
fail_if(mbuf->p2 != NULL);
|
||||
fail_if(mbuf->p3 != NULL);
|
||||
fail_if(mbuf->p4 != NULL);
|
||||
fail_if(mbuf->cookie != NULL);
|
||||
fail_if(mbuf->head != mbuf->tail);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_new_headroom)
|
||||
struct MBuf *mbuf;
|
||||
|
||||
mbuf = uc_mbuf_new_hr(110,20);
|
||||
|
||||
fail_if(mbuf == NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 0);
|
||||
fail_if(uc_mbuf_headroom(mbuf) != 20);
|
||||
fail_if(uc_mbuf_tailroom(mbuf) != 110);
|
||||
fail_if(mbuf->next != NULL);
|
||||
fail_if(mbuf->p1 != NULL);
|
||||
fail_if(mbuf->p2 != NULL);
|
||||
fail_if(mbuf->p3 != NULL);
|
||||
fail_if(mbuf->p4 != NULL);
|
||||
fail_if(mbuf->cookie != NULL);
|
||||
fail_if(mbuf->head != mbuf->tail);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_put)
|
||||
struct MBuf *mbuf;
|
||||
uint8_t *data;
|
||||
|
||||
mbuf = uc_mbuf_new_inline(111);
|
||||
fail_if(mbuf == NULL);
|
||||
|
||||
data = uc_mbuf_put(mbuf, 111);
|
||||
fail_if(data == NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 111);
|
||||
fail_if(uc_mbuf_tailroom(mbuf) != 0);
|
||||
|
||||
memset(data, 0, 111);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_put_fail)
|
||||
struct MBuf *mbuf;
|
||||
uint8_t *data;
|
||||
|
||||
mbuf = uc_mbuf_new_inline(10);
|
||||
fail_if(mbuf == NULL);
|
||||
|
||||
data = uc_mbuf_put(mbuf, 11);
|
||||
fail_if(data != NULL);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_push)
|
||||
struct MBuf *mbuf;
|
||||
uint8_t *data;
|
||||
|
||||
mbuf = uc_mbuf_new_hr(10,1);
|
||||
fail_if(mbuf == NULL);
|
||||
|
||||
data = uc_mbuf_push(mbuf, 1);
|
||||
fail_if(data == NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 1);
|
||||
fail_if(uc_mbuf_headroom(mbuf) != 0);
|
||||
|
||||
*data = 0;
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
|
||||
START_TEST (test_mbuf_push_fail)
|
||||
struct MBuf *mbuf;
|
||||
uint8_t *data;
|
||||
|
||||
mbuf = uc_mbuf_new_hr(1,2);
|
||||
fail_if(mbuf == NULL);
|
||||
|
||||
data = uc_mbuf_push(mbuf, 3);
|
||||
fail_if(data != NULL);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_pull)
|
||||
struct MBuf *mbuf;
|
||||
uint8_t *data1;
|
||||
uint8_t *data2;
|
||||
|
||||
mbuf = uc_mbuf_new_inline(10);
|
||||
fail_if(mbuf == NULL);
|
||||
|
||||
data1 = uc_mbuf_put(mbuf, 10);
|
||||
fail_if(data1 == NULL);
|
||||
fail_if(uc_mbuf_tailroom(mbuf) != 0);
|
||||
fail_if(uc_mbuf_len(mbuf) != 10);
|
||||
|
||||
data2 = uc_mbuf_pull(mbuf,10);
|
||||
fail_if(data2 == NULL);
|
||||
fail_if(data1 != data2);
|
||||
fail_if(uc_mbuf_len(mbuf) != 0);
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_mbuf_pull_fail)
|
||||
struct MBuf *mbuf;
|
||||
uint8_t *data1;
|
||||
uint8_t *data2;
|
||||
|
||||
mbuf = uc_mbuf_new_inline(10);
|
||||
fail_if(mbuf == NULL);
|
||||
|
||||
data1 = uc_mbuf_put(mbuf, 10);
|
||||
fail_if(data1 == NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 10);
|
||||
|
||||
data2 = uc_mbuf_pull(mbuf,11);
|
||||
fail_if(data2 != NULL);
|
||||
fail_if(uc_mbuf_len(mbuf) != 10);
|
||||
|
||||
|
||||
uc_mbuf_free(mbuf);
|
||||
|
||||
END_TEST
|
||||
|
||||
|
||||
|
||||
Suite *mbuf_suite(void)
|
||||
{
|
||||
Suite *s = suite_create("mbuf");
|
||||
TCase *tc = tcase_create("mbuf tests");
|
||||
tcase_add_test(tc, test_mbuf_new);
|
||||
tcase_add_test(tc, test_mbuf_new_inline);
|
||||
tcase_add_test(tc, test_mbuf_new_headroom);
|
||||
tcase_add_test(tc, test_mbuf_put);
|
||||
tcase_add_test(tc, test_mbuf_put_fail);
|
||||
tcase_add_test(tc, test_mbuf_push);
|
||||
tcase_add_test(tc, test_mbuf_push_fail);
|
||||
tcase_add_test(tc, test_mbuf_pull);
|
||||
tcase_add_test(tc, test_mbuf_pull_fail);
|
||||
|
||||
suite_add_tcase(s, tc);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
+3
-1
@@ -19,6 +19,7 @@ extern Suite *clock_suite(void);
|
||||
extern Suite *seq_suite(void);
|
||||
extern Suite *sat_math_suite(void);
|
||||
extern Suite *timers_suite(void);
|
||||
extern Suite *mbuf_suite(void);
|
||||
|
||||
static suite_func suites[] = {
|
||||
bitvec_suite,
|
||||
@@ -33,7 +34,8 @@ static suite_func suites[] = {
|
||||
clock_suite,
|
||||
seq_suite,
|
||||
sat_math_suite,
|
||||
timers_suite
|
||||
timers_suite,
|
||||
mbuf_suite
|
||||
};
|
||||
|
||||
int
|
||||
|
||||
Reference in New Issue
Block a user