summaryrefslogtreecommitdiff
path: root/test/unit/core/test_def.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/core/test_def.c')
-rw-r--r--test/unit/core/test_def.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/unit/core/test_def.c b/test/unit/core/test_def.c
new file mode 100644
index 00000000000..0ae2e9c1e49
--- /dev/null
+++ b/test/unit/core/test_def.c
@@ -0,0 +1,84 @@
+#include "test_def.h"
+
+#include "lwip/def.h"
+
+#define MAGIC_UNTOUCHED_BYTE 0x7a
+#define TEST_BUFSIZE 32
+#define GUARD_SIZE 4
+
+/* Setups/teardown functions */
+
+static void
+def_setup(void)
+{
+}
+
+static void
+def_teardown(void)
+{
+}
+
+static void
+def_check_range_untouched(const char *buf, size_t len)
+{
+ size_t i;
+
+ for (i = 0; i < len; i++) {
+ fail_unless(buf[i] == (char)MAGIC_UNTOUCHED_BYTE);
+ }
+}
+
+static void test_def_itoa(int number, const char *expected)
+{
+ char buf[TEST_BUFSIZE];
+ char *test_buf = &buf[GUARD_SIZE];
+
+ size_t exp_len = strlen(expected);
+ fail_unless(exp_len + 4 < (TEST_BUFSIZE - (2 * GUARD_SIZE)));
+
+ memset(buf, MAGIC_UNTOUCHED_BYTE, sizeof(buf));
+ lwip_itoa(test_buf, exp_len + 1, number);
+ def_check_range_untouched(buf, GUARD_SIZE);
+ fail_unless(test_buf[exp_len] == 0);
+ fail_unless(!memcmp(test_buf, expected, exp_len));
+ def_check_range_untouched(&test_buf[exp_len + 1], TEST_BUFSIZE - GUARD_SIZE - exp_len - 1);
+
+ /* check with too small buffer */
+ memset(buf, MAGIC_UNTOUCHED_BYTE, sizeof(buf));
+ lwip_itoa(test_buf, exp_len, number);
+ def_check_range_untouched(buf, GUARD_SIZE);
+ def_check_range_untouched(&test_buf[exp_len + 1], TEST_BUFSIZE - GUARD_SIZE - exp_len - 1);
+
+ /* check with too large buffer */
+ memset(buf, MAGIC_UNTOUCHED_BYTE, sizeof(buf));
+ lwip_itoa(test_buf, exp_len + 4, number);
+ def_check_range_untouched(buf, GUARD_SIZE);
+ fail_unless(test_buf[exp_len] == 0);
+ fail_unless(!memcmp(test_buf, expected, exp_len));
+ def_check_range_untouched(&test_buf[exp_len + 4], TEST_BUFSIZE - GUARD_SIZE - exp_len - 4);
+}
+
+START_TEST(test_def_lwip_itoa)
+{
+ LWIP_UNUSED_ARG(_i);
+
+ test_def_itoa(0, "0");
+ test_def_itoa(1, "1");
+ test_def_itoa(-1, "-1");
+ test_def_itoa(15, "15");
+ test_def_itoa(-15, "-15");
+ test_def_itoa(156, "156");
+ test_def_itoa(1192, "1192");
+ test_def_itoa(-156, "-156");
+}
+END_TEST
+
+/** Create the suite including all tests for this module */
+Suite *
+def_suite(void)
+{
+ testfunc tests[] = {
+ TESTFUNC(test_def_lwip_itoa)
+ };
+ return create_suite("DEF", tests, sizeof(tests)/sizeof(testfunc), def_setup, def_teardown);
+}