@@ -48,13 +48,25 @@ static void assert_parse_number(const char *string, int integer, double real)
48
48
parse_buffer buffer = { 0 , 0 , 0 , 0 , { 0 , 0 , 0 } };
49
49
buffer .content = (const unsigned char * )string ;
50
50
buffer .length = strlen (string ) + sizeof ("" );
51
+ buffer .hooks = global_hooks ;
51
52
52
53
TEST_ASSERT_TRUE (parse_number (item , & buffer ));
53
54
assert_is_number (item );
54
55
TEST_ASSERT_EQUAL_INT (integer , item -> valueint );
55
56
TEST_ASSERT_EQUAL_DOUBLE (real , item -> valuedouble );
56
57
}
57
58
59
+ static void assert_parse_big_number (const char * string )
60
+ {
61
+ parse_buffer buffer = { 0 , 0 , 0 , 0 , { 0 , 0 , 0 } };
62
+ buffer .content = (const unsigned char * )string ;
63
+ buffer .length = strlen (string ) + sizeof ("" );
64
+ buffer .hooks = global_hooks ;
65
+
66
+ TEST_ASSERT_TRUE (parse_number (item , & buffer ));
67
+ assert_is_number (item );
68
+ }
69
+
58
70
static void parse_number_should_parse_zero (void )
59
71
{
60
72
assert_parse_number ("0" , 0 , 0 );
@@ -96,6 +108,13 @@ static void parse_number_should_parse_negative_reals(void)
96
108
assert_parse_number ("-123e-128" , 0 , -123e-128 );
97
109
}
98
110
111
+ static void parse_number_should_parse_big_numbers (void )
112
+ {
113
+ assert_parse_big_number ("9999999999999999999999999999999999999999999999912345678901234567" );
114
+ assert_parse_big_number ("9999999999999999999999999999999999999999999999912345678901234567E10" );
115
+ assert_parse_big_number ("999999999999999999999999999999999999999999999991234567890.1234567" );
116
+ }
117
+
99
118
int CJSON_CDECL main (void )
100
119
{
101
120
/* initialize cJSON item */
@@ -106,5 +125,6 @@ int CJSON_CDECL main(void)
106
125
RUN_TEST (parse_number_should_parse_positive_integers );
107
126
RUN_TEST (parse_number_should_parse_positive_reals );
108
127
RUN_TEST (parse_number_should_parse_negative_reals );
128
+ RUN_TEST (parse_number_should_parse_big_numbers );
109
129
return UNITY_END ();
110
130
}
0 commit comments