1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00

unittests: adapt ng_pktbuf tests for new API

This commit is contained in:
Martine Lenders 2015-07-25 01:33:02 +02:00
parent 41b0a2661a
commit f747b07db8
2 changed files with 266 additions and 245 deletions

View File

@ -304,6 +304,7 @@ static void test_ipv6_hdr_build__wrong_src_len(void)
ng_ipv6_addr_t src = DEFAULT_TEST_SRC; ng_ipv6_addr_t src = DEFAULT_TEST_SRC;
ng_ipv6_addr_t dst = DEFAULT_TEST_DST; ng_ipv6_addr_t dst = DEFAULT_TEST_DST;
ng_pktbuf_init();
TEST_ASSERT_NULL(ng_ipv6_hdr_build(NULL, (uint8_t *)&src, TEST_ASSERT_NULL(ng_ipv6_hdr_build(NULL, (uint8_t *)&src,
sizeof(ng_ipv6_addr_t) + TEST_UINT8, sizeof(ng_ipv6_addr_t) + TEST_UINT8,
(uint8_t *)&dst, (uint8_t *)&dst,
@ -316,6 +317,7 @@ static void test_ipv6_hdr_build__wrong_dst_len(void)
ng_ipv6_addr_t src = DEFAULT_TEST_SRC; ng_ipv6_addr_t src = DEFAULT_TEST_SRC;
ng_ipv6_addr_t dst = DEFAULT_TEST_DST; ng_ipv6_addr_t dst = DEFAULT_TEST_DST;
ng_pktbuf_init();
TEST_ASSERT_NULL(ng_ipv6_hdr_build(NULL, (uint8_t *)&src, TEST_ASSERT_NULL(ng_ipv6_hdr_build(NULL, (uint8_t *)&src,
sizeof(ng_ipv6_addr_t), sizeof(ng_ipv6_addr_t),
(uint8_t *)&dst, (uint8_t *)&dst,
@ -329,7 +331,7 @@ static void test_ipv6_hdr_build__src_NULL(void)
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
ng_ipv6_hdr_t *hdr; ng_ipv6_hdr_t *hdr;
TEST_ASSERT(ng_pktbuf_is_empty()); ng_pktbuf_init();
TEST_ASSERT_NOT_NULL((pkt = ng_ipv6_hdr_build(NULL, NULL, 0, (uint8_t *)&dst, TEST_ASSERT_NOT_NULL((pkt = ng_ipv6_hdr_build(NULL, NULL, 0, (uint8_t *)&dst,
sizeof(ng_ipv6_addr_t)))); sizeof(ng_ipv6_addr_t))));
hdr = pkt->data; hdr = pkt->data;
@ -341,7 +343,6 @@ static void test_ipv6_hdr_build__src_NULL(void)
TEST_ASSERT_EQUAL_INT(0, hdr->hl); TEST_ASSERT_EQUAL_INT(0, hdr->hl);
TEST_ASSERT(ng_ipv6_addr_equal(&dst, &hdr->dst)); TEST_ASSERT(ng_ipv6_addr_equal(&dst, &hdr->dst));
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
ng_pktbuf_reset();
} }
static void test_ipv6_hdr_build__dst_NULL(void) static void test_ipv6_hdr_build__dst_NULL(void)
@ -350,7 +351,7 @@ static void test_ipv6_hdr_build__dst_NULL(void)
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
ng_ipv6_hdr_t *hdr; ng_ipv6_hdr_t *hdr;
TEST_ASSERT(ng_pktbuf_is_empty()); ng_pktbuf_init();
TEST_ASSERT_NOT_NULL((pkt = ng_ipv6_hdr_build(NULL, (uint8_t *)&src, TEST_ASSERT_NOT_NULL((pkt = ng_ipv6_hdr_build(NULL, (uint8_t *)&src,
sizeof(ng_ipv6_addr_t), sizeof(ng_ipv6_addr_t),
NULL, 0))); NULL, 0)));
@ -363,7 +364,6 @@ static void test_ipv6_hdr_build__dst_NULL(void)
TEST_ASSERT_EQUAL_INT(0, hdr->hl); TEST_ASSERT_EQUAL_INT(0, hdr->hl);
TEST_ASSERT(ng_ipv6_addr_equal(&src, &hdr->src)); TEST_ASSERT(ng_ipv6_addr_equal(&src, &hdr->src));
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
ng_pktbuf_reset();
} }
static void test_ipv6_hdr_build__complete(void) static void test_ipv6_hdr_build__complete(void)
@ -373,7 +373,7 @@ static void test_ipv6_hdr_build__complete(void)
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
ng_ipv6_hdr_t *hdr; ng_ipv6_hdr_t *hdr;
TEST_ASSERT(ng_pktbuf_is_empty()); ng_pktbuf_init();
TEST_ASSERT_NOT_NULL((pkt = ng_ipv6_hdr_build(NULL, (uint8_t *)&src, TEST_ASSERT_NOT_NULL((pkt = ng_ipv6_hdr_build(NULL, (uint8_t *)&src,
sizeof(ng_ipv6_addr_t), sizeof(ng_ipv6_addr_t),
(uint8_t *)&dst, (uint8_t *)&dst,
@ -388,7 +388,6 @@ static void test_ipv6_hdr_build__complete(void)
TEST_ASSERT(ng_ipv6_addr_equal(&src, &hdr->src)); TEST_ASSERT(ng_ipv6_addr_equal(&src, &hdr->src));
TEST_ASSERT(ng_ipv6_addr_equal(&dst, &hdr->dst)); TEST_ASSERT(ng_ipv6_addr_equal(&dst, &hdr->dst));
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
ng_pktbuf_reset();
} }
Test *tests_ipv6_hdr_tests(void) Test *tests_ipv6_hdr_tests(void)

View File

@ -32,96 +32,72 @@ typedef struct __attribute__((packed)) {
int16_t s16; int16_t s16;
int32_t s32; int32_t s32;
int64_t s64; int64_t s64;
} test_pktbuf_struct_t; }
test_pktbuf_struct_t;
static void tear_down(void) static void set_up(void)
{ {
ng_pktbuf_reset(); ng_pktbuf_init();
} }
static void test_pktbuf_reset(void) static void test_pktbuf_init(void)
{ {
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4),
NG_NETTYPE_UNDEF)); NG_NETTYPE_TEST));
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8), TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8),
NG_NETTYPE_UNDEF)); NG_NETTYPE_TEST));
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16),
NG_NETTYPE_UNDEF)); NG_NETTYPE_TEST));
TEST_ASSERT(ng_pktbuf_is_sane());
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
ng_pktbuf_reset(); ng_pktbuf_init();
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
static void test_pktbuf_add__pkt_NULL__data_NULL__size_0(void) static void test_pktbuf_add__pkt_NULL__data_NULL__size_0(void)
{ {
ng_pktsnip_t *pkt; TEST_ASSERT_NULL(ng_pktbuf_add(NULL, NULL, 0, NG_NETTYPE_TEST));
TEST_ASSERT(ng_pktbuf_is_empty());
TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(NULL, NULL, 0, NG_NETTYPE_UNDEF)));
TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_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_NOT_NULL__data_NULL__size_0(void) static void test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_0(void)
{ {
ng_pktsnip_t *pkt, *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), ng_pktsnip_t *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4),
NG_NETTYPE_UNDEF); NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(next); TEST_ASSERT_NOT_NULL(next);
TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, NULL, 0, NG_NETTYPE_UNDEF))); TEST_ASSERT_NULL(ng_pktbuf_add(next, NULL, 0, NG_NETTYPE_TEST));
TEST_ASSERT(pkt->next == next);
TEST_ASSERT_NULL(pkt->data);
TEST_ASSERT_EQUAL_INT(0, pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type);
TEST_ASSERT_NULL(next->next); TEST_ASSERT_NULL(next->next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, next->type);
TEST_ASSERT(ng_pktbuf_is_sane());
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
} }
static void test_pktbuf_add__pkt_NULL__data_NOT_NULL__size_0(void) static void test_pktbuf_add__pkt_NULL__data_NOT_NULL__size_0(void)
{ {
ng_pktsnip_t *pkt; TEST_ASSERT_NULL(ng_pktbuf_add(NULL, TEST_STRING8, 0, NG_NETTYPE_TEST));
TEST_ASSERT(ng_pktbuf_is_empty());
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_NOT_NULL__data_NOT_NULL__size_0(void) static void test_pktbuf_add__pkt_NOT_NULL__data_NOT_NULL__size_0(void)
{ {
ng_pktsnip_t *pkt, *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), ng_pktsnip_t *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4),
NG_NETTYPE_UNDEF); NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(next); TEST_ASSERT_NOT_NULL(next);
TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, TEST_STRING8, 0, NG_NETTYPE_UNDEF))); TEST_ASSERT_NULL(ng_pktbuf_add(next, TEST_STRING8, 0, NG_NETTYPE_TEST));
TEST_ASSERT(pkt->next == 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_NULL(next->next); TEST_ASSERT_NULL(next->next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, next->type);
TEST_ASSERT(ng_pktbuf_is_sane());
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
} }
@ -130,34 +106,35 @@ static void test_pktbuf_add__pkt_NULL__data_NULL__size_not_0(void)
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8),
NG_NETTYPE_UNDEF))); NG_NETTYPE_TEST)));
TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_NOT_NULL(pkt->data); TEST_ASSERT_NOT_NULL(pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT_EQUAL_INT(1, pkt->users);
TEST_ASSERT(ng_pktbuf_is_sane());
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
} }
static void test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_not_0(void) 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_pktsnip_t *pkt, *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4),
NG_NETTYPE_UNDEF); NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(next); TEST_ASSERT_NOT_NULL(next);
TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF))); TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, NULL, sizeof(TEST_STRING8), NG_NETTYPE_TEST)));
TEST_ASSERT(pkt->next == next); TEST_ASSERT(pkt->next == next);
TEST_ASSERT_NOT_NULL(pkt->data); TEST_ASSERT_NOT_NULL(pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_NULL(next->next); TEST_ASSERT_NULL(next->next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT(!ng_pktbuf_is_empty()); TEST_ASSERT(!ng_pktbuf_is_empty());
} }
@ -165,84 +142,50 @@ static void test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_not_0(void)
static void test_pktbuf_add__pkt_NOT_NULL__data_NOT_NULL__size_not_0(void) static void test_pktbuf_add__pkt_NOT_NULL__data_NOT_NULL__size_not_0(void)
{ {
ng_pktsnip_t *pkt, *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4), ng_pktsnip_t *pkt, *next = ng_pktbuf_add(NULL, TEST_STRING4, sizeof(TEST_STRING4),
NG_NETTYPE_UNDEF); NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(next); TEST_ASSERT_NOT_NULL(next);
TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, TEST_STRING8, sizeof(TEST_STRING8), TEST_ASSERT_NOT_NULL((pkt = ng_pktbuf_add(next, TEST_STRING8, sizeof(TEST_STRING8),
NG_NETTYPE_UNDEF))); NG_NETTYPE_TEST)));
TEST_ASSERT(pkt->next == next); TEST_ASSERT(pkt->next == next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING8, pkt->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING8, pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_NULL(next->next); TEST_ASSERT_NULL(next->next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING4, next->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING4), next->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT(ng_pktbuf_is_sane());
TEST_ASSERT(!ng_pktbuf_is_empty()); 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());
}
#if NG_PKTBUF_SIZE > 0
static void test_pktbuf_add__memfull(void) static void test_pktbuf_add__memfull(void)
{ {
TEST_ASSERT_NULL(ng_pktbuf_add(NULL, NULL, NG_PKTBUF_SIZE + 1, NG_NETTYPE_UNDEF)); ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, 1, NG_NETTYPE_TEST);
TEST_ASSERT(ng_pktbuf_is_empty()); while (pkt) {
pkt = ng_pktbuf_add(NULL, NULL, 1, NG_NETTYPE_TEST);
} }
static void test_pktbuf_add__memfull2(void) TEST_ASSERT(ng_pktbuf_is_sane());
{ TEST_ASSERT(!ng_pktbuf_is_empty());
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_add__memfull3(void)
{
for (int i = 0; i < 9; i++) {
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, (NG_PKTBUF_SIZE / 10) + 4, NG_NETTYPE_UNDEF));
/* Why 4? Because: http://xkcd.com/221/, thats why ;-) */
}
TEST_ASSERT_NULL(ng_pktbuf_add(NULL, NULL, (NG_PKTBUF_SIZE / 10) + 4, NG_NETTYPE_UNDEF));
}
#endif
static void test_pktbuf_add__success(void) static void test_pktbuf_add__success(void)
{ {
ng_pktsnip_t *pkt, *pkt_prev = NULL; ng_pktsnip_t *pkt, *pkt_prev = NULL;
for (int i = 0; i < 9; i++) { for (int i = 0; i < 9; i++) {
pkt = ng_pktbuf_add(NULL, NULL, (NG_PKTBUF_SIZE / 10) + 4, NG_NETTYPE_UNDEF); pkt = ng_pktbuf_add(NULL, NULL, (NG_PKTBUF_SIZE / 10) + 4, NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_NOT_NULL(pkt->data); TEST_ASSERT_NOT_NULL(pkt->data);
TEST_ASSERT_EQUAL_INT((NG_PKTBUF_SIZE / 10) + 4, pkt->size); TEST_ASSERT_EQUAL_INT((NG_PKTBUF_SIZE / 10) + 4, pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT_EQUAL_INT(1, pkt->users);
if (pkt_prev != NULL) { if (pkt_prev != NULL) {
@ -252,6 +195,7 @@ static void test_pktbuf_add__success(void)
pkt_prev = pkt; pkt_prev = pkt;
} }
TEST_ASSERT(ng_pktbuf_is_sane());
} }
static void test_pktbuf_add__packed_struct(void) static void test_pktbuf_add__packed_struct(void)
@ -260,7 +204,7 @@ static void test_pktbuf_add__packed_struct(void)
34, -4469, 149699748, -46590430597 34, -4469, 149699748, -46590430597
}; };
test_pktbuf_struct_t *data_cpy; test_pktbuf_struct_t *data_cpy;
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, &data, sizeof(test_pktbuf_struct_t), NG_NETTYPE_UNDEF); ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, &data, sizeof(test_pktbuf_struct_t), NG_NETTYPE_TEST);
data_cpy = (test_pktbuf_struct_t *)pkt->data; data_cpy = (test_pktbuf_struct_t *)pkt->data;
TEST_ASSERT_EQUAL_INT(data.u8, data_cpy->u8); TEST_ASSERT_EQUAL_INT(data.u8, data_cpy->u8);
@ -275,14 +219,14 @@ static void test_pktbuf_add__packed_struct(void)
static void test_pktbuf_add__unaligned_in_aligned_hole(void) static void test_pktbuf_add__unaligned_in_aligned_hole(void)
{ {
ng_pktsnip_t *pkt1 = ng_pktbuf_add(NULL, NULL, 8, NG_NETTYPE_UNDEF); 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_UNDEF); 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_UNDEF); ng_pktsnip_t *pkt3 = ng_pktbuf_add(NULL, NULL, 8, NG_NETTYPE_TEST);
ng_pktsnip_t *pkt4; ng_pktsnip_t *pkt4;
void *tmp_data2 = pkt2->data; void *tmp_data2 = pkt2->data;
ng_pktbuf_release(pkt2); ng_pktbuf_release(pkt2);
pkt4 = ng_pktbuf_add(NULL, TEST_STRING12, 9, NG_NETTYPE_UNDEF); pkt4 = ng_pktbuf_add(NULL, TEST_STRING12, 9, NG_NETTYPE_TEST);
TEST_ASSERT(tmp_data2 != pkt4->data); TEST_ASSERT(tmp_data2 != pkt4->data);
@ -292,171 +236,287 @@ static void test_pktbuf_add__unaligned_in_aligned_hole(void)
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
static void test_pktbuf_realloc_data__pkt_NULL(void) static void test_pktbuf_mark__pkt_NULL__size_0(void)
{ {
TEST_ASSERT_EQUAL_INT(ENOENT, ng_pktbuf_realloc_data(NULL, 0)); TEST_ASSERT_NULL(ng_pktbuf_mark(NULL, 0, NG_NETTYPE_TEST));
}
static void test_pktbuf_mark__pkt_NULL__size_not_0(void)
{
TEST_ASSERT_NULL(ng_pktbuf_mark(NULL, sizeof(TEST_STRING4), NG_NETTYPE_TEST));
}
static void test_pktbuf_mark__pkt_NOT_NULL__size_0(void)
{
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16),
NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_NULL(ng_pktbuf_mark(pkt, 0, NG_NETTYPE_TEST));
TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_NOT_NULL(pkt->data);
TEST_ASSERT_EQUAL_STRING(TEST_STRING16, pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users);
}
static void test_pktbuf_mark__pkt_NOT_NULL__size_greater_than_pkt_size(void)
{
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16),
NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_NULL(ng_pktbuf_mark(pkt, sizeof(TEST_STRING16) + 8,
NG_NETTYPE_TEST));
TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_NOT_NULL(pkt->data);
TEST_ASSERT_EQUAL_STRING(TEST_STRING16, pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users);
}
static void test_pktbuf_mark__pkt_NOT_NULL__pkt_data_NULL(void)
{
ng_pktsnip_t pkt = { 1, NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_TEST };
TEST_ASSERT_NULL(ng_pktbuf_mark(&pkt, sizeof(TEST_STRING16) - 1,
NG_NETTYPE_TEST));
TEST_ASSERT_NULL(pkt.next);
TEST_ASSERT_NULL(pkt.data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16), pkt.size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt.type);
TEST_ASSERT_EQUAL_INT(1, pkt.users);
}
static void test_pktbuf_mark__success_large(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) - sizeof(TEST_STRING8)];
uint8_t exp_data2[sizeof(TEST_STRING8)];
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, sizeof(TEST_STRING8), 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) - sizeof(TEST_STRING8),
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(sizeof(TEST_STRING8), 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) - sizeof(TEST_STRING8),
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()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
static void test_pktbuf_realloc_data__pkt_wrong(void) static void test_pktbuf_mark__success_aligned(void)
{ {
ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF }; 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];
TEST_ASSERT_EQUAL_INT(ENOENT, ng_pktbuf_realloc_data(&pkt, 0)); 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()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
static void test_pktbuf_realloc_data__pkt_data_wrong(void) static void test_pktbuf_mark__success_small(void)
{ {
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); uint8_t *data = (uint8_t *)(TEST_STRING16);
void *orig_data = pkt->data; ng_pktsnip_t *pkt1 = ng_pktbuf_add(NULL, data, sizeof(TEST_STRING16),
pkt->data = TEST_STRING8; NG_NETTYPE_TEST);
ng_pktsnip_t *pkt2;
uint8_t exp_data1[sizeof(TEST_STRING16) - 1];
uint8_t exp_data2[1];
TEST_ASSERT_EQUAL_INT(ENOENT, ng_pktbuf_realloc_data(pkt, 0)); memcpy(exp_data1, data + sizeof(exp_data2), sizeof(exp_data1));
pkt->data = orig_data; memcpy(exp_data2, data, sizeof(exp_data2));
ng_pktbuf_release(pkt);
TEST_ASSERT(ng_pktbuf_is_empty());
}
static void test_pktbuf_realloc_data__pkt_users_gt_1(void) TEST_ASSERT_NOT_NULL(pkt1);
{ TEST_ASSERT_NOT_NULL((pkt2 = ng_pktbuf_mark(pkt1, 1, NG_NETTYPE_UNDEF)));
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); TEST_ASSERT(ng_pktbuf_is_sane());
ng_pktbuf_hold(pkt, 1); 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) - 1, 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(1, pkt2->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt2->type);
TEST_ASSERT_EQUAL_INT(1, pkt2->users);
TEST_ASSERT_EQUAL_INT(EINVAL, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8) - 1)); /* check if slightly larger packet would override data */
ng_pktbuf_release(pkt); ng_pktbuf_remove_snip(pkt1, pkt2);
ng_pktbuf_release(pkt); pkt2 = ng_pktbuf_add(NULL, TEST_STRING12, 3, NG_NETTYPE_TEST);
TEST_ASSERT(ng_pktbuf_is_empty()); 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) - 1, pkt1->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt1->type);
TEST_ASSERT_EQUAL_INT(1, pkt1->users);
static void test_pktbuf_realloc_data__pkt_next_neq_NULL(void) /* check if everything can be cleaned up */
{ ng_pktbuf_release(pkt1);
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); ng_pktbuf_release(pkt2);
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()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
static void test_pktbuf_realloc_data__size_0(void) static void test_pktbuf_realloc_data__size_0(void)
{ {
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); 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, 0)); TEST_ASSERT_EQUAL_INT(ENOMEM, ng_pktbuf_realloc_data(pkt, 0));
ng_pktbuf_release(pkt); ng_pktbuf_release(pkt);
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
#if NG_PKTBUF_SIZE > 0
static void test_pktbuf_realloc_data__memfull(void) static void test_pktbuf_realloc_data__memfull(void)
{ {
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); 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)); TEST_ASSERT_EQUAL_INT(ENOMEM, ng_pktbuf_realloc_data(pkt, NG_PKTBUF_SIZE + 1));
ng_pktbuf_release(pkt); ng_pktbuf_release(pkt);
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
} }
static void test_pktbuf_realloc_data__memfull2(void)
{
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF);
TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF));
TEST_ASSERT_EQUAL_INT(ENOMEM, ng_pktbuf_realloc_data(pkt, NG_PKTBUF_SIZE - sizeof(TEST_STRING8)));
}
static void test_pktbuf_realloc_data__memfull3(void)
{
ng_pktsnip_t *pkt;
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF));
pkt = ng_pktbuf_add(NULL, NULL, TEST_UINT8, NG_NETTYPE_UNDEF);
TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF));
TEST_ASSERT_EQUAL_INT(ENOMEM, ng_pktbuf_realloc_data(pkt, NG_PKTBUF_SIZE - TEST_UINT8));
}
/* dynamic malloc is a little more unpredictable ;-) */
static void test_pktbuf_realloc_data__shrink(void) static void test_pktbuf_realloc_data__shrink(void)
{ {
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
void *exp_data; void *exp_data;
pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_TEST);
exp_data = pkt->data; exp_data = pkt->data;
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, 4, NG_NETTYPE_UNDEF)); TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, 4, NG_NETTYPE_TEST));
TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8))); TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt, 8));
TEST_ASSERT(exp_data == pkt->data); TEST_ASSERT(exp_data == pkt->data);
TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(8, pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT_EQUAL_INT(1, pkt->users);
} }
static void test_pktbuf_realloc_data__memenough(void) static void test_pktbuf_realloc_data__memenough(void)
{ {
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
void *exp_data;
pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); pkt = ng_pktbuf_add(NULL, NULL, sizeof(TEST_STRING16), NG_NETTYPE_TEST);
exp_data = pkt->data;
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8))); TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8)));
TEST_ASSERT(exp_data == pkt->data);
TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT_EQUAL_INT(1, pkt->users);
} }
static void test_pktbuf_realloc_data__nomemenough(void) static void test_pktbuf_realloc_data__nomemenough(void)
{ {
ng_pktsnip_t *pkt1, *pkt2; ng_pktsnip_t *pkt1, *pkt2;
void *exp_data;
pkt1 = ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); pkt1 = ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_TEST);
exp_data = pkt1->data;
TEST_ASSERT_NOT_NULL(pkt1); TEST_ASSERT_NOT_NULL(pkt1);
pkt2 = ng_pktbuf_add(NULL, NULL, 1, NG_NETTYPE_UNDEF); pkt2 = ng_pktbuf_add(NULL, NULL, 1, NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(pkt2); TEST_ASSERT_NOT_NULL(pkt2);
TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, 4, NG_NETTYPE_UNDEF)); TEST_ASSERT_NOT_NULL(ng_pktbuf_add(NULL, NULL, 4, NG_NETTYPE_TEST));
ng_pktbuf_release(pkt2); ng_pktbuf_release(pkt2);
TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt1, 200)); TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt1, 200));
TEST_ASSERT(exp_data != pkt1->data);
TEST_ASSERT_NULL(pkt1->next); TEST_ASSERT_NULL(pkt1->next);
TEST_ASSERT_EQUAL_INT(200, pkt1->size); TEST_ASSERT_EQUAL_INT(200, pkt1->size);
TEST_ASSERT_EQUAL_STRING(TEST_STRING8, pkt1->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING8, pkt1->data);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt1->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt1->type);
TEST_ASSERT_EQUAL_INT(1, pkt1->users); TEST_ASSERT_EQUAL_INT(1, pkt1->users);
} }
#endif
static void test_pktbuf_realloc_data__success(void) static void test_pktbuf_realloc_data__success(void)
{ {
char exp_data[] = TEST_STRING16;
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8))); TEST_ASSERT_EQUAL_INT(0, ng_pktbuf_realloc_data(pkt, sizeof(TEST_STRING8)));
TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING16, pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); for (unsigned int i = 0; i < pkt->size; i++) {
uint8_t *data = pkt->data;
TEST_ASSERT_EQUAL_INT(exp_data[i], data[i]);
}
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT_EQUAL_INT(1, pkt->users);
} }
@ -464,7 +524,7 @@ static void test_pktbuf_realloc_data__success2(void)
{ {
ng_pktsnip_t *pkt; ng_pktsnip_t *pkt;
pkt = ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF); pkt = ng_pktbuf_add(NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
@ -472,41 +532,10 @@ static void test_pktbuf_realloc_data__success2(void)
TEST_ASSERT_NULL(pkt->next); TEST_ASSERT_NULL(pkt->next);
TEST_ASSERT_EQUAL_STRING(TEST_STRING8, pkt->data); TEST_ASSERT_EQUAL_STRING(TEST_STRING8, pkt->data);
TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16), pkt->size); TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16), pkt->size);
TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type); TEST_ASSERT_EQUAL_INT(NG_NETTYPE_TEST, pkt->type);
TEST_ASSERT_EQUAL_INT(1, pkt->users); TEST_ASSERT_EQUAL_INT(1, pkt->users);
} }
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_null(void) static void test_pktbuf_hold__pkt_null(void)
{ {
ng_pktbuf_hold(NULL, 1); ng_pktbuf_hold(NULL, 1);
@ -515,7 +544,7 @@ static void test_pktbuf_hold__pkt_null(void)
static void test_pktbuf_hold__pkt_external(void) static void test_pktbuf_hold__pkt_external(void)
{ {
ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF }; ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_TEST };
ng_pktbuf_hold(&pkt, 1); ng_pktbuf_hold(&pkt, 1);
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
@ -523,7 +552,7 @@ static void test_pktbuf_hold__pkt_external(void)
static void test_pktbuf_hold__success(void) static void test_pktbuf_hold__success(void)
{ {
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); 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++) { for (uint8_t i = 0; i < TEST_UINT8; i++) {
uint8_t prev_users = pkt->users; uint8_t prev_users = pkt->users;
@ -534,7 +563,7 @@ static void test_pktbuf_hold__success(void)
static void test_pktbuf_hold__success2(void) static void test_pktbuf_hold__success2(void)
{ {
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_TEST);
ng_pktbuf_hold(pkt, TEST_UINT8); ng_pktbuf_hold(pkt, TEST_UINT8);
@ -549,7 +578,7 @@ static void test_pktbuf_release__pkt_null(void)
static void test_pktbuf_release__pkt_external(void) static void test_pktbuf_release__pkt_external(void)
{ {
ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_UNDEF }; ng_pktsnip_t pkt = { 1, NULL, TEST_STRING8, sizeof(TEST_STRING8), NG_NETTYPE_TEST };
ng_pktbuf_release(&pkt); ng_pktbuf_release(&pkt);
TEST_ASSERT(ng_pktbuf_is_empty()); TEST_ASSERT(ng_pktbuf_is_empty());
@ -557,7 +586,7 @@ static void test_pktbuf_release__pkt_external(void)
static void test_pktbuf_release__success(void) static void test_pktbuf_release__success(void)
{ {
ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16), NG_NETTYPE_UNDEF); 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++) { for (uint8_t i = 0; i < TEST_UINT8; i++) {
uint8_t prev_users = pkt->users; uint8_t prev_users = pkt->users;
@ -587,7 +616,7 @@ static void test_pktbuf_start_write__NULL(void)
static void test_pktbuf_start_write__pkt_users_1(void) 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_pktsnip_t *pkt_copy, *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16),
NG_NETTYPE_UNDEF); NG_NETTYPE_TEST);
TEST_ASSERT_NOT_NULL((pkt_copy = ng_pktbuf_start_write(pkt))); TEST_ASSERT_NOT_NULL((pkt_copy = ng_pktbuf_start_write(pkt)));
TEST_ASSERT(pkt == pkt_copy); TEST_ASSERT(pkt == pkt_copy);
@ -598,7 +627,7 @@ static void test_pktbuf_start_write__pkt_users_1(void)
static void test_pktbuf_start_write__pkt_users_2(void) 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_pktsnip_t *pkt_copy, *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16),
NG_NETTYPE_UNDEF); NG_NETTYPE_TEST);
ng_pktbuf_hold(pkt, 1); ng_pktbuf_hold(pkt, 1);
TEST_ASSERT_NOT_NULL((pkt_copy = ng_pktbuf_start_write(pkt))); TEST_ASSERT_NOT_NULL((pkt_copy = ng_pktbuf_start_write(pkt)));
@ -618,7 +647,7 @@ static void test_pktbuf_start_write__pkt_users_2(void)
Test *tests_pktbuf_tests(void) Test *tests_pktbuf_tests(void)
{ {
EMB_UNIT_TESTFIXTURES(fixtures) { EMB_UNIT_TESTFIXTURES(fixtures) {
new_TestFixture(test_pktbuf_reset), new_TestFixture(test_pktbuf_init),
new_TestFixture(test_pktbuf_add__pkt_NULL__data_NULL__size_0), new_TestFixture(test_pktbuf_add__pkt_NULL__data_NULL__size_0),
new_TestFixture(test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_0), new_TestFixture(test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_0),
new_TestFixture(test_pktbuf_add__pkt_NULL__data_NOT_NULL__size_0), new_TestFixture(test_pktbuf_add__pkt_NULL__data_NOT_NULL__size_0),
@ -626,32 +655,25 @@ Test *tests_pktbuf_tests(void)
new_TestFixture(test_pktbuf_add__pkt_NULL__data_NULL__size_not_0), new_TestFixture(test_pktbuf_add__pkt_NULL__data_NULL__size_not_0),
new_TestFixture(test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_not_0), new_TestFixture(test_pktbuf_add__pkt_NOT_NULL__data_NULL__size_not_0),
new_TestFixture(test_pktbuf_add__pkt_NOT_NULL__data_NOT_NULL__size_not_0), new_TestFixture(test_pktbuf_add__pkt_NOT_NULL__data_NOT_NULL__size_not_0),
new_TestFixture(test_pktbuf_add__in_place),
#if NG_PKTBUF_SIZE > 0
new_TestFixture(test_pktbuf_add__memfull), new_TestFixture(test_pktbuf_add__memfull),
new_TestFixture(test_pktbuf_add__memfull2),
new_TestFixture(test_pktbuf_add__memfull3),
#endif
new_TestFixture(test_pktbuf_add__success), new_TestFixture(test_pktbuf_add__success),
new_TestFixture(test_pktbuf_add__packed_struct), new_TestFixture(test_pktbuf_add__packed_struct),
new_TestFixture(test_pktbuf_add__unaligned_in_aligned_hole), new_TestFixture(test_pktbuf_add__unaligned_in_aligned_hole),
new_TestFixture(test_pktbuf_realloc_data__pkt_NULL), new_TestFixture(test_pktbuf_mark__pkt_NULL__size_0),
new_TestFixture(test_pktbuf_realloc_data__pkt_wrong), new_TestFixture(test_pktbuf_mark__pkt_NULL__size_not_0),
new_TestFixture(test_pktbuf_realloc_data__pkt_data_wrong), new_TestFixture(test_pktbuf_mark__pkt_NOT_NULL__size_0),
new_TestFixture(test_pktbuf_realloc_data__pkt_users_gt_1), new_TestFixture(test_pktbuf_mark__pkt_NOT_NULL__size_greater_than_pkt_size),
new_TestFixture(test_pktbuf_realloc_data__pkt_next_neq_NULL), new_TestFixture(test_pktbuf_mark__pkt_NOT_NULL__pkt_data_NULL),
new_TestFixture(test_pktbuf_mark__success_large),
new_TestFixture(test_pktbuf_mark__success_aligned),
new_TestFixture(test_pktbuf_mark__success_small),
new_TestFixture(test_pktbuf_realloc_data__size_0), new_TestFixture(test_pktbuf_realloc_data__size_0),
#if NG_PKTBUF_SIZE > 0
new_TestFixture(test_pktbuf_realloc_data__memfull), new_TestFixture(test_pktbuf_realloc_data__memfull),
new_TestFixture(test_pktbuf_realloc_data__memfull2),
new_TestFixture(test_pktbuf_realloc_data__memfull3),
new_TestFixture(test_pktbuf_realloc_data__nomemenough), new_TestFixture(test_pktbuf_realloc_data__nomemenough),
new_TestFixture(test_pktbuf_realloc_data__shrink), new_TestFixture(test_pktbuf_realloc_data__shrink),
new_TestFixture(test_pktbuf_realloc_data__memenough), new_TestFixture(test_pktbuf_realloc_data__memenough),
#endif
new_TestFixture(test_pktbuf_realloc_data__success), new_TestFixture(test_pktbuf_realloc_data__success),
new_TestFixture(test_pktbuf_realloc_data__success2), new_TestFixture(test_pktbuf_realloc_data__success2),
new_TestFixture(test_pktbuf_realloc_data__further_down_the_line),
new_TestFixture(test_pktbuf_hold__pkt_null), new_TestFixture(test_pktbuf_hold__pkt_null),
new_TestFixture(test_pktbuf_hold__pkt_external), new_TestFixture(test_pktbuf_hold__pkt_external),
new_TestFixture(test_pktbuf_hold__success), new_TestFixture(test_pktbuf_hold__success),
@ -664,7 +686,7 @@ Test *tests_pktbuf_tests(void)
new_TestFixture(test_pktbuf_start_write__pkt_users_2), new_TestFixture(test_pktbuf_start_write__pkt_users_2),
}; };
EMB_UNIT_TESTCALLER(ng_pktbuf_tests, NULL, tear_down, fixtures); EMB_UNIT_TESTCALLER(ng_pktbuf_tests, set_up, NULL, fixtures);
return (Test *)&ng_pktbuf_tests; return (Test *)&ng_pktbuf_tests;
} }