mirror of
https://github.com/json-c/json-c.git
synced 2026-04-03 04:19:07 +08:00
add uint64 data to json-c
This commit is contained in:
@@ -15,10 +15,18 @@ void checkit(const char *buf)
|
||||
printf("buf=%s parseit=%d, value=%" PRId64 " \n", buf, retval, cint64);
|
||||
}
|
||||
|
||||
void checkit_uint(const char *buf)
|
||||
{
|
||||
uint64_t cuint64 = 666;
|
||||
|
||||
int retval = json_parse_uint64(buf, &cuint64);
|
||||
printf("buf=%s parseit=%d, value=%" PRIu64 " \n", buf, retval, cuint64);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test calls json_parse_int64 with a variety of different strings.
|
||||
* It's purpose is to ensure that the results are consistent across all
|
||||
* different environments that it might be executed in.
|
||||
* This test calls json_parse_int64 and json_parse_int64 with a variety
|
||||
* of different strings. It's purpose is to ensure that the results are
|
||||
* consistent across all different environments that it might be executed in.
|
||||
*
|
||||
* This always exits with a 0 exit value. The output should be compared
|
||||
* against previously saved expected output.
|
||||
@@ -27,6 +35,7 @@ int main()
|
||||
{
|
||||
char buf[100];
|
||||
|
||||
printf("==========json_parse_int64() test===========\n");
|
||||
checkit("x");
|
||||
|
||||
checkit("0");
|
||||
@@ -59,8 +68,10 @@ int main()
|
||||
checkit(buf);
|
||||
|
||||
strcpy(buf, "4294967295"); // aka UINT32_MAX
|
||||
checkit(buf);
|
||||
|
||||
sprintf(buf, "4294967296"); // aka UINT32_MAX + 1
|
||||
strcpy(buf, "4294967296"); // aka UINT32_MAX + 1
|
||||
checkit(buf);
|
||||
|
||||
strcpy(buf, "21474836470"); // INT32_MAX * 10
|
||||
checkit(buf);
|
||||
@@ -111,5 +122,68 @@ int main()
|
||||
strcpy(buf, "123");
|
||||
checkit(buf);
|
||||
|
||||
printf("\n==========json_parse_uint64() test===========\n");
|
||||
checkit_uint("x");
|
||||
|
||||
checkit_uint("0");
|
||||
checkit_uint("-0");
|
||||
|
||||
checkit_uint("00000000");
|
||||
checkit_uint("-00000000");
|
||||
|
||||
checkit_uint("1");
|
||||
|
||||
strcpy(buf, "2147483647"); // aka INT32_MAX
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "-1");
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "-9223372036854775808");
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, " 1");
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "00001234");
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "0001234x");
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "4294967295"); // aka UINT32_MAX
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "4294967296"); // aka UINT32_MAX + 1
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "21474836470"); // INT32_MAX * 10
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "31474836470"); // INT32_MAX * 10 + a bunch
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "9223372036854775806"); // INT64_MAX - 1
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "9223372036854775807"); // INT64_MAX
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "9223372036854775808"); // INT64_MAX + 1
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "18446744073709551614"); // UINT64_MAX - 1
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "18446744073709551615"); // UINT64_MAX
|
||||
checkit_uint(buf);
|
||||
|
||||
strcpy(buf, "18446744073709551616"); // UINT64_MAX + 1
|
||||
checkit_uint(buf);
|
||||
|
||||
// Ensure we can still parse valid numbers after parsing out of range ones.
|
||||
strcpy(buf, "123");
|
||||
checkit_uint(buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user