static void test_pktbuf_reset(void) { TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), NG_NETTYPE_UNDEF)); TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF)); TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF)); TEST_ASSERT(!ng_pktbuf_is_empty()); ng_pktbuf_reset(); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__further_down_the_line(void) { ng_pktsnip_t *pkt1, *pkt2, *header; void *exp_data; pkt1 = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); exp_data = pkt1->data; TEST_ASSERT_NOT_NULL(pkt1); header = ng_pktbuf_add(pkt1, pkt1->data, 4, NG_NETTYPE_UNDEF); pkt2 = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); TEST_ASSERT_NOT_NULL(header); TEST_ASSERT(header == pkt1->next); TEST_ASSERT_EQUAL_INT(4, header->size); TEST_ASSERT(((uint8_t *)pkt1->data) == (((uint8_t *)header->data) + 4)); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 4, pkt1->size); TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(header, 40)); TEST_ASSERT(exp_data != header->data); TEST_ASSERT_NULL(header->next); TEST_ASSERT_EQUAL_STRING(TEST_STRING16, header->data); TEST_ASSERT_EQUAL_INT(40, header->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, header->type); TEST_ASSERT_EQUAL_INT(1, header->users); ng_pktbuf_release(pkt1); ng_pktbuf_release(pkt2); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_hold__pkt_external(void) { ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_TEST }; ng_pktbuf_hold(&pkt, 1); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__pkt_wrong(void) { ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF }; TEST_ASSERT_EQUAL_INT(ENOENT, ng_pktbuf_realloc_data(&pkt, 0)); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_release__pkt_external(void) { ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF }; ng_pktbuf_release(&pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__size_0(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); TEST_ASSERT_EQUAL_INT(ENOMEM, ng_pktbuf_realloc_data(pkt, 0)); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__memfull(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_TEST); TEST_ASSERT_EQUAL_INT(ENOMEM, ng_pktbuf_realloc_data(pkt, NG_PKTBUF_SIZE + 1)); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__pkt_next_neq_NULL(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); TEST_ASSERT_NOT_NULL(ng_pktbuf_add(pkt, pkt->data, sizeof(TEST_STRING4), NG_NETTYPE_UNDEF)); TEST_ASSERT_EQUAL_INT(EINVAL, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8) - 1)); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__pkt_users_gt_1(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); ng_pktbuf_hold(pkt, 1); TEST_ASSERT_EQUAL_INT(EINVAL, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8) - 1)); ng_pktbuf_release(pkt); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__memfull(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, 1, NG_NETTYPE_TEST); while (pkt) { pkt = ng_pktbuf_add(NULL, NULL, 1, NG_NETTYPE_TEST); } TEST_ASSERT(ng_pktbuf_is_sane()); TEST_ASSERT(!ng_pktbuf_is_empty()); }
static void test_pktbuf_start_write__pkt_users_1(void) { ng_pktsnip_t *pkt_copy, *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_TEST); TEST_ASSERT_NOT_NULL((pkt_copy = ng_pktbuf_start_write(pkt))); TEST_ASSERT(pkt == pkt_copy); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__pkt_data_wrong(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); void *orig_data = pkt->data; pkt->data = TEST_STRING8; TEST_ASSERT_EQUAL_INT(ENOENT, ng_pktbuf_realloc_data(pkt, 0)); pkt->data = orig_data; ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_release__success(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_TEST); for (uint8_t i = 0; i < TEST_UINT8; i++) { uint8_t prev_users = pkt->users; ng_pktbuf_hold(pkt, 1); TEST_ASSERT_EQUAL_INT(prev_users + 1, pkt->users); } TEST_ASSERT(!ng_pktbuf_is_empty()); for (uint8_t i = 0; i < TEST_UINT8; i++) { uint8_t prev_users = pkt->users; ng_pktbuf_release(pkt); TEST_ASSERT_EQUAL_INT(prev_users - 1, pkt->users); } TEST_ASSERT(!ng_pktbuf_is_empty()); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__pkt_NULL__data_NOT_NULL__size_0(void) { ng_pktsnip_t *pkt; TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(NULL, TEST_STRING8, 0, NG_NETTYPE_UNDEF))); TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NOT_NULL(pkt->data); TEST_ASSERT_EQUAL_INT(0, pkt->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT(!ng_pktbuf_is_empty()); }
static void test_pktbuf_add__pkt_NULL__data_NULL__size_not_0(void) { ng_pktsnip_t *pkt; TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_TEST))); TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NOT_NULL(pkt->data); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type); TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT(ng_pktbuf_is_sane()); TEST_ASSERT(!ng_pktbuf_is_empty()); }
static void test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_0(void) { ng_pktsnip_t *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), NG_NETTYPE_TEST); TEST_ASSERT_NOT_NULL(next); TEST_ASSERT_NULL(ng_pktbuf_add(next, NULL, 0, NG_NETTYPE_TEST)); TEST_ASSERT_NULL(next->next); TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, next->type); TEST_ASSERT(ng_pktbuf_is_sane()); TEST_ASSERT(!ng_pktbuf_is_empty()); }
static void test_pktbuf_get_iovec__1_elem(void) { struct iovec *vec; size_t len; ng_pktsnip_t *snip = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); snip = ng_pktbuf_get_iovec(snip, &len); vec = (struct iovec *)snip->data; TEST_ASSERT_EQUAL_INT(sizeof(struct iovec), snip->size); TEST_ASSERT_EQUAL_INT(1, len); TEST_ASSERT(snip->next->data == vec[0].iov_base); TEST_ASSERT_EQUAL_INT(snip->next->size, vec[0].iov_len); ng_pktbuf_release(snip); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_mark__success_aligned(void) { uint8_t *data = (uint8_t *)(TEST_STRING16); ng_pktsnip_t *pkt1 = ng_pktbuf_add(NULL, data, sizeof(TEST_STRING16), NG_NETTYPE_TEST); ng_pktsnip_t *pkt2; uint8_t exp_data1[sizeof(TEST_STRING16) - 8]; uint8_t exp_data2[8]; memcpy(exp_data1, data + sizeof(exp_data2), sizeof(exp_data1)); memcpy(exp_data2, data, sizeof(exp_data2)); TEST_ASSERT_NOT_NULL(pkt1); TEST_ASSERT_NOT_NULL((pkt2 = ng_pktbuf_mark(pkt1, 8, NG_NETTYPE_UNDEF))); TEST_ASSERT(ng_pktbuf_is_sane()); TEST_ASSERT(pkt1->next == pkt2); TEST_ASSERT_NOT_NULL(pkt1->data); TEST_ASSERT_EQUAL_INT(0, memcmp(exp_data1, pkt1->data, pkt1->size)); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 8, pkt1->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt1->type); TEST_ASSERT_EQUAL_INT(1, pkt1->users); TEST_ASSERT_NULL(pkt2->next); TEST_ASSERT_NOT_NULL(pkt2->data); TEST_ASSERT_EQUAL_INT(0, memcmp(exp_data2, pkt2->data, pkt2->size)); TEST_ASSERT_EQUAL_INT(8, pkt2->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt2->type); TEST_ASSERT_EQUAL_INT(1, pkt2->users); /* check if slightly larger packet would override data */ ng_pktbuf_remove_snip(pkt1, pkt2); pkt2 = ng_pktbuf_add(NULL, TEST_STRING12, 12, NG_NETTYPE_TEST); TEST_ASSERT(ng_pktbuf_is_sane()); TEST_ASSERT_NOT_NULL(pkt1->data); TEST_ASSERT_EQUAL_INT(0, memcmp(exp_data1, pkt1->data, pkt1->size)); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 8, pkt1->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt1->type); TEST_ASSERT_EQUAL_INT(1, pkt1->users); /* check if everything can be cleaned up */ ng_pktbuf_release(pkt1); ng_pktbuf_release(pkt2); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__unaligned_in_aligned_hole(void) { ng_pktsnip_t *pkt1 = ng_pktbuf_add(NULL, NULL, 8, NG_NETTYPE_TEST); ng_pktsnip_t *pkt2 = ng_pktbuf_add(NULL, NULL, 8, NG_NETTYPE_TEST); ng_pktsnip_t *pkt3 = ng_pktbuf_add(NULL, NULL, 8, NG_NETTYPE_TEST); ng_pktsnip_t *pkt4; void *tmp_data2 = pkt2->data; ng_pktbuf_release(pkt2); pkt4 = ng_pktbuf_add(NULL, TEST_STRING12, 9, NG_NETTYPE_TEST); TEST_ASSERT(tmp_data2 != pkt4->data); ng_pktbuf_release(pkt1); ng_pktbuf_release(pkt3); ng_pktbuf_release(pkt4); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_start_write__pkt_users_2(void) { ng_pktsnip_t *pkt_copy, *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_TEST); ng_pktbuf_hold(pkt, 1); TEST_ASSERT_NOT_NULL((pkt_copy = ng_pktbuf_start_write(pkt))); TEST_ASSERT(pkt != pkt_copy); TEST_ASSERT(pkt->next == pkt_copy->next); TEST_ASSERT_EQUAL_STRING(pkt->data, pkt_copy->data); TEST_ASSERT_EQUAL_INT(pkt->size, pkt_copy->size); TEST_ASSERT_EQUAL_INT(pkt->type, pkt_copy->type); TEST_ASSERT_EQUAL_INT(pkt->users, pkt_copy->users); TEST_ASSERT_EQUAL_INT(1, pkt->users); ng_pktbuf_release(pkt_copy); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__in_place(void) { ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); ng_pktsnip_t *header; TEST_ASSERT_NOT_NULL((header = ng_pktbuf_add(pkt, pkt->data, 4, NG_NETTYPE_UNDEF))); TEST_ASSERT(header == pkt->next); TEST_ASSERT_EQUAL_STRING(TEST_STRING16, header->data); /* there is no 0 byte */ TEST_ASSERT_EQUAL_INT(4, header->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, header->type); TEST_ASSERT_EQUAL_INT(1, header->users); TEST_ASSERT_EQUAL_STRING(TEST_STRING16 + 4, pkt->data); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 4, pkt->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(1, pkt->users); ng_pktbuf_release(header); ng_pktbuf_release(pkt); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_not_0(void) { ng_pktsnip_t *pkt, *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), NG_NETTYPE_UNDEF); TEST_ASSERT_NOT_NULL(next); TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF))); TEST_ASSERT(pkt->next == next); TEST_ASSERT_NOT_NULL(pkt->data); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_NULL(next->next); TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT(!ng_pktbuf_is_empty()); }
static void test_pktbuf_add__memfull(void) { TEST_ASSERT_NULL(ng_pktbuf_add(NULL, NULL, NG_PKTBUF_SIZE + 1, NG_NETTYPE_UNDEF)); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__pkt_NULL__data_NOT_NULL__size_0(void) { TEST_ASSERT_NULL(ng_pktbuf_add(NULL, TEST_STRING8, 0, NG_NETTYPE_TEST)); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_add__memfull2(void) { TEST_ASSERT_NULL(ng_pktbuf_add(NULL, NULL, NG_PKTBUF_SIZE - sizeof(ng_pktsnip_t), NG_NETTYPE_UNDEF)); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_realloc_data__pkt_NULL(void) { TEST_ASSERT_EQUAL_INT(ENOENT, ng_pktbuf_realloc_data(NULL, 0)); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_release__pkt_null(void) { ng_pktbuf_release(NULL); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_start_write__NULL(void) { ng_pktbuf_start_write(NULL); TEST_ASSERT(ng_pktbuf_is_empty()); }
static void test_pktbuf_hold__pkt_null(void) { ng_pktbuf_hold(NULL, 1); TEST_ASSERT(ng_pktbuf_is_empty()); }