#include <inttypes.h> #include <stdlib.h> #include <stdio.h> #include <string.h> struct atoi_data { char string[15]; // int max 2147483647 int ret_num; }; struct atoi_data test_data[] = { /* positive integer */ {"0", 0}, {"1", 1}, {"1.123", 1}, {"123", 123}, {"98993489", 98993489}, {"98993489.12", 98993489}, {"2147483647", 2147483647}, /* negtive integer */ {"-1", -1}, {"-1.123", -1}, {"-123", -123}, {"-98993489", -98993489}, {"-98993489.12", -98993489}, {"-2147483647", -2147483647}, /* letters and numbers */ {"12a45", 12}, {"-12a45", -12}, {"12/45", 12}, {"-12/45", -12}, /* cannot be resolved */ {"", 0}, {" ", 0}, {"abc12", 0}, {" abc12", 0}, /* {NULL, -1} compiler warning */ }; #include <utest.h> int atoi_entry(void) { int i = 0; int res = 0; for (i = 0; i < sizeof(test_data) / sizeof(test_data[0]); i++) { res = atoi(test_data[i].string); uassert_int_equal(res, test_data[i].ret_num); } return 0; } static void test_atoi(void) { atoi_entry(); } static void testcase(void) { UTEST_UNIT_RUN(test_atoi); } UTEST_TC_EXPORT(testcase, "posix.stdlib_h.atoi_tc.c", RT_NULL, RT_NULL, 10);