From cc2f34dc189074e8a93c03ebc5c0790661353b86 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Tue, 23 Apr 2019 22:50:28 +0200 Subject: mbuf: add support for variable-size message headers --- test/test_mbuf.c | 88 +++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 20 deletions(-) (limited to 'test') diff --git a/test/test_mbuf.c b/test/test_mbuf.c index 6b3f90f..3df0b01 100644 --- a/test/test_mbuf.c +++ b/test/test_mbuf.c @@ -39,7 +39,7 @@ test_regular(void) size_t size; int error; - mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf)); + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), 255); #define STRING "abcdef" error = mbuf_push(&mbuf, STRING, STRLEN(STRING) + 1, false); @@ -78,7 +78,7 @@ test_write_full(void) size_t size; int error; - mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf)); + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), (size_t)-1); #define STRING "abcdef" error = mbuf_push(&mbuf, STRING, STRLEN(STRING) + 1, false); @@ -110,7 +110,7 @@ test_overwrite(void) size_t size; int error; - mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf)); + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), (size_t)-1); #define STRING "abcdef" error = mbuf_push(&mbuf, STRING, STRLEN(STRING) + 1, true); @@ -135,14 +135,66 @@ test_overwrite(void) } static void -test_msg_too_big(void) +test_msg_size_power_of_two(void) +{ + char mbuf_buf[512], buffer[256]; + struct mbuf mbuf; + size_t size; + int error; + + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), sizeof(buffer)); + + memset(buffer, 0xab, sizeof(buffer)); + + error = mbuf_push(&mbuf, buffer, sizeof(buffer), true); + check(!error); + + memset(buffer, 0xf0, sizeof(buffer)); + + size = sizeof(buffer); + error = mbuf_pop(&mbuf, buffer, &size); + check(!error && (size == sizeof(buffer))); + + for (size_t i = 0; i < sizeof(buffer); i++) { + check(buffer[i] == (char)0xab); + } +} + +static void +test_msg_size_uint8_max(void) +{ + char mbuf_buf[512], buffer[255]; + struct mbuf mbuf; + size_t size; + int error; + + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), sizeof(buffer)); + + memset(buffer, 0xab, sizeof(buffer)); + + error = mbuf_push(&mbuf, buffer, sizeof(buffer), true); + check(!error); + + memset(buffer, 0xf0, sizeof(buffer)); + + size = sizeof(buffer); + error = mbuf_pop(&mbuf, buffer, &size); + check(!error && (size == sizeof(buffer))); + + for (size_t i = 0; i < sizeof(buffer); i++) { + check(buffer[i] == (char)0xab); + } +} + +static void +test_msg_too_big_to_fit(void) { char mbuf_buf[8], buffer[8]; struct mbuf mbuf; size_t size; int error; - mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf)); + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), (size_t)-1); #define STRING "abcdef" error = mbuf_push(&mbuf, STRING, STRLEN(STRING) + 1, true); @@ -155,25 +207,19 @@ test_msg_too_big(void) } static void -test_msg_far_too_big(void) +test_msg_bigger_than_max(void) { - char mbuf_buf[8], buffer[8]; + char mbuf_buf[512], buffer[256]; struct mbuf mbuf; size_t size; int error; - if (sizeof(size_t) <= sizeof(uint32_t)) { - fprintf(stderr, "warning: %s disabled\n", __func__); - return; - } + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), sizeof(buffer) - 1); - mbuf_init(&mbuf, mbuf_buf, (size_t)1 << 36); + memset(buffer, 0xab, sizeof(buffer)); -#define STRING "abcdef" - size = (size_t)1 << 32; - error = mbuf_push(&mbuf, STRING, size, true); - check(error == EMSGSIZE); -#undef STRING + error = mbuf_push(&mbuf, buffer, sizeof(buffer), true); + check(error == EINVAL); size = sizeof(buffer); error = mbuf_pop(&mbuf, buffer, &size); @@ -188,7 +234,7 @@ test_peak(void) size_t size; int error; - mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf)); + mbuf_init(&mbuf, mbuf_buf, sizeof(mbuf_buf), (size_t)-1); #define STRING "abcdef" error = mbuf_push(&mbuf, STRING, STRLEN(STRING) + 1, true); @@ -214,8 +260,10 @@ main(void) test_regular(); test_write_full(); test_overwrite(); - test_msg_too_big(); - test_msg_far_too_big(); + test_msg_size_power_of_two(); + test_msg_size_uint8_max(); + test_msg_too_big_to_fit(); + test_msg_bigger_than_max(); test_peak(); return EXIT_SUCCESS; -- cgit v1.2.3