test_def.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "test_def.h"
  2. #include "lwip/def.h"
  3. #define MAGIC_UNTOUCHED_BYTE 0x7a
  4. #define TEST_BUFSIZE 32
  5. #define GUARD_SIZE 4
  6. /* Setups/teardown functions */
  7. static void
  8. def_setup(void)
  9. {
  10. }
  11. static void
  12. def_teardown(void)
  13. {
  14. }
  15. static void
  16. def_check_range_untouched(const char *buf, size_t len)
  17. {
  18. size_t i;
  19. for (i = 0; i < len; i++) {
  20. fail_unless(buf[i] == (char)MAGIC_UNTOUCHED_BYTE);
  21. }
  22. }
  23. static void test_def_itoa(int number, const char *expected)
  24. {
  25. char buf[TEST_BUFSIZE];
  26. char *test_buf = &buf[GUARD_SIZE];
  27. size_t exp_len = strlen(expected);
  28. fail_unless(exp_len + 4 < (TEST_BUFSIZE - (2 * GUARD_SIZE)));
  29. memset(buf, MAGIC_UNTOUCHED_BYTE, sizeof(buf));
  30. lwip_itoa(test_buf, exp_len + 1, number);
  31. def_check_range_untouched(buf, GUARD_SIZE);
  32. fail_unless(test_buf[exp_len] == 0);
  33. fail_unless(!memcmp(test_buf, expected, exp_len));
  34. def_check_range_untouched(&test_buf[exp_len + 1], TEST_BUFSIZE - GUARD_SIZE - exp_len - 1);
  35. /* check with too small buffer */
  36. memset(buf, MAGIC_UNTOUCHED_BYTE, sizeof(buf));
  37. lwip_itoa(test_buf, exp_len, number);
  38. def_check_range_untouched(buf, GUARD_SIZE);
  39. def_check_range_untouched(&test_buf[exp_len + 1], TEST_BUFSIZE - GUARD_SIZE - exp_len - 1);
  40. /* check with too large buffer */
  41. memset(buf, MAGIC_UNTOUCHED_BYTE, sizeof(buf));
  42. lwip_itoa(test_buf, exp_len + 4, number);
  43. def_check_range_untouched(buf, GUARD_SIZE);
  44. fail_unless(test_buf[exp_len] == 0);
  45. fail_unless(!memcmp(test_buf, expected, exp_len));
  46. def_check_range_untouched(&test_buf[exp_len + 4], TEST_BUFSIZE - GUARD_SIZE - exp_len - 4);
  47. }
  48. START_TEST(test_def_lwip_itoa)
  49. {
  50. LWIP_UNUSED_ARG(_i);
  51. test_def_itoa(0, "0");
  52. test_def_itoa(1, "1");
  53. test_def_itoa(-1, "-1");
  54. test_def_itoa(15, "15");
  55. test_def_itoa(-15, "-15");
  56. test_def_itoa(156, "156");
  57. test_def_itoa(1192, "1192");
  58. test_def_itoa(-156, "-156");
  59. }
  60. END_TEST
  61. /** Create the suite including all tests for this module */
  62. Suite *
  63. def_suite(void)
  64. {
  65. testfunc tests[] = {
  66. TESTFUNC(test_def_lwip_itoa)
  67. };
  68. return create_suite("DEF", tests, sizeof(tests)/sizeof(testfunc), def_setup, def_teardown);
  69. }