mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
long long fixes, enhancements, tests
This commit is contained in:
@ -231,13 +231,13 @@ static void cjson_set_number_value_should_set_numbers(void)
|
||||
TEST_ASSERT_EQUAL(-1, number->valueint);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(-1.5, number->valuedouble);
|
||||
|
||||
cJSON_SetNumberValue(number, 1 + (double)INT_MAX);
|
||||
TEST_ASSERT_EQUAL(INT_MAX, number->valueint);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(1 + (double)INT_MAX, number->valuedouble);
|
||||
cJSON_SetNumberValue(number, 1.0 + (double)CJSON_INT_MAX);
|
||||
TEST_ASSERT_EQUAL(CJSON_INT_MAX, number->valueint);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(1.0 + (double)CJSON_INT_MAX, number->valuedouble);
|
||||
|
||||
cJSON_SetNumberValue(number, -1 + (double)INT_MIN);
|
||||
TEST_ASSERT_EQUAL(INT_MIN, number->valueint);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(-1 + (double)INT_MIN, number->valuedouble);
|
||||
cJSON_SetNumberValue(number, -1.0 + (double)CJSON_INT_MIN);
|
||||
TEST_ASSERT_EQUAL(CJSON_INT_MIN, number->valueint);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(-1.0 + (double)CJSON_INT_MIN, number->valuedouble);
|
||||
}
|
||||
|
||||
static void cjson_detach_item_via_pointer_should_detach_items(void)
|
||||
|
@ -43,7 +43,7 @@ static void assert_is_number(cJSON *number_item)
|
||||
assert_has_no_string(number_item);
|
||||
}
|
||||
|
||||
static void assert_parse_number(const char *string, int integer, double real)
|
||||
static void assert_parse_number(const char *string, cJSON_int integer, double real)
|
||||
{
|
||||
parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } };
|
||||
buffer.content = (const unsigned char*)string;
|
||||
@ -51,7 +51,11 @@ static void assert_parse_number(const char *string, int integer, double real)
|
||||
|
||||
TEST_ASSERT_TRUE(parse_number(item, &buffer));
|
||||
assert_is_number(item);
|
||||
#ifdef CJSON_INT_USE_LONGLONG
|
||||
TEST_ASSERT_EQUAL_INT64(integer, item->valueint);
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_INT(integer, item->valueint);
|
||||
#endif
|
||||
TEST_ASSERT_EQUAL_DOUBLE(real, item->valuedouble);
|
||||
}
|
||||
|
||||
@ -66,14 +70,24 @@ static void parse_number_should_parse_negative_integers(void)
|
||||
{
|
||||
assert_parse_number("-1", -1, -1);
|
||||
assert_parse_number("-32768", -32768, -32768.0);
|
||||
assert_parse_number("-2147483648", (int)-2147483648.0, -2147483648.0);
|
||||
assert_parse_number("-2147483648", -2147483648, -2147483648.0);
|
||||
#ifdef CJSON_INT_USE_LONGLONG
|
||||
assert_parse_number("-8765432101234567", -8765432101234567LL, -8765432101234567.0);
|
||||
#else
|
||||
assert_parse_number("-8765432101234567", CJSON_INT_MIN, -8765432101234567.0);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void parse_number_should_parse_positive_integers(void)
|
||||
{
|
||||
assert_parse_number("1", 1, 1);
|
||||
assert_parse_number("32767", 32767, 32767.0);
|
||||
assert_parse_number("2147483647", (int)2147483647.0, 2147483647.0);
|
||||
assert_parse_number("2147483647", 2147483647, 2147483647.0);
|
||||
#ifdef CJSON_INT_USE_LONGLONG
|
||||
assert_parse_number("8765432101234567", 8765432101234567LL, 8765432101234567.0);
|
||||
#else
|
||||
assert_parse_number("8765432101234567", CJSON_INT_MAX, 8765432101234567.0);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void parse_number_should_parse_positive_reals(void)
|
||||
@ -81,8 +95,11 @@ static void parse_number_should_parse_positive_reals(void)
|
||||
assert_parse_number("0.001", 0, 0.001);
|
||||
assert_parse_number("10e-10", 0, 10e-10);
|
||||
assert_parse_number("10E-10", 0, 10e-10);
|
||||
assert_parse_number("10e10", INT_MAX, 10e10);
|
||||
assert_parse_number("123e+127", INT_MAX, 123e127);
|
||||
#ifdef CJSON_INT_USE_LONGLONG
|
||||
assert_parse_number("10e10", 100000000000LL, 10e10);
|
||||
#endif
|
||||
assert_parse_number("10e20", CJSON_INT_MAX, 10e20);
|
||||
assert_parse_number("123e+127", CJSON_INT_MAX, 123e127);
|
||||
assert_parse_number("123e-128", 0, 123e-128);
|
||||
}
|
||||
|
||||
@ -91,8 +108,11 @@ static void parse_number_should_parse_negative_reals(void)
|
||||
assert_parse_number("-0.001", 0, -0.001);
|
||||
assert_parse_number("-10e-10", 0, -10e-10);
|
||||
assert_parse_number("-10E-10", 0, -10e-10);
|
||||
assert_parse_number("-10e20", INT_MIN, -10e20);
|
||||
assert_parse_number("-123e+127", INT_MIN, -123e127);
|
||||
#ifdef CJSON_INT_USE_LONGLONG
|
||||
assert_parse_number("-10e10", -100000000000LL, -10e10);
|
||||
#endif
|
||||
assert_parse_number("-10e20", CJSON_INT_MIN, -10e20);
|
||||
assert_parse_number("-123e+127", CJSON_INT_MIN, -123e127);
|
||||
assert_parse_number("-123e-128", 0, -123e-128);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user