1212TEST
1313check_auto_singles (void )
1414{
15- char * buf = malloc ( 16 ) ;
16- size_t bufsize = 16 ;
15+ char * buf = NULL ;
16+ size_t bufsize = 0 ;
1717 jsonb b ;
1818
1919 jsonb_init (& b );
2020 ASSERT_EQm (buf , JSONB_OK , jsonb_array_auto (& b , & buf , & bufsize ));
2121 ASSERT_EQm (buf , JSONB_END , jsonb_array_pop_auto (& b , & buf , & bufsize ));
2222 ASSERT_STR_EQ ("[]" , buf );
23+ ASSERT_EQ (sizeof ("[]" ) - 1 , b .pos );
24+ ASSERT_EQ (sizeof ("[]" ) - 1 , strlen (buf ));
25+ ASSERT_GT (bufsize , b .pos );
2326
2427 jsonb_init (& b );
2528 ASSERT_EQm (buf , JSONB_OK , jsonb_object_auto (& b , & buf , & bufsize ));
2629 ASSERT_EQm (buf , JSONB_END , jsonb_object_pop_auto (& b , & buf , & bufsize ));
2730 ASSERT_STR_EQ ("{}" , buf );
31+ ASSERT_EQ (sizeof ("{}" ) - 1 , b .pos );
32+ ASSERT_EQ (sizeof ("{}" ) - 1 , strlen (buf ));
33+ ASSERT_GT (bufsize , b .pos );
2834
2935 jsonb_init (& b );
3036 ASSERT_EQm (buf , JSONB_END , jsonb_bool_auto (& b , & buf , & bufsize , 0 ));
3137 ASSERT_STR_EQ ("false" , buf );
38+ ASSERT_EQ (sizeof ("false" ) - 1 , b .pos );
39+ ASSERT_EQ (sizeof ("false" ) - 1 , strlen (buf ));
40+ ASSERT_GT (bufsize , b .pos );
3241
3342 jsonb_init (& b );
3443 ASSERT_EQm (buf , JSONB_END , jsonb_bool_auto (& b , & buf , & bufsize , 1 ));
3544 ASSERT_STR_EQ ("true" , buf );
45+ ASSERT_EQ (sizeof ("true" ) - 1 , b .pos );
46+ ASSERT_EQ (sizeof ("true" ) - 1 , strlen (buf ));
47+ ASSERT_GT (bufsize , b .pos );
3648
3749 jsonb_init (& b );
3850 ASSERT_EQm (buf , JSONB_END , jsonb_number_auto (& b , & buf , & bufsize , 10 ));
3951 ASSERT_STR_EQ ("10" , buf );
52+ ASSERT_EQ (sizeof ("10" ) - 1 , b .pos );
53+ ASSERT_EQ (sizeof ("10" ) - 1 , strlen (buf ));
54+ ASSERT_GT (bufsize , b .pos );
4055
4156 jsonb_init (& b );
4257 ASSERT_EQm (buf , JSONB_END , jsonb_string_auto (& b , & buf , & bufsize , "hi" , 2 ));
4358 ASSERT_STR_EQ ("\"hi\"" , buf );
59+ ASSERT_EQ (sizeof ("\"hi\"" ) - 1 , b .pos );
60+ ASSERT_EQ (sizeof ("\"hi\"" ) - 1 , strlen (buf ));
61+ ASSERT_GT (bufsize , b .pos );
4462
4563 jsonb_init (& b );
4664 ASSERT_EQm (buf , JSONB_END , jsonb_null_auto (& b , & buf , & bufsize ));
4765 ASSERT_STR_EQ ("null" , buf );
66+ ASSERT_EQ (sizeof ("null" ) - 1 , b .pos );
67+ ASSERT_EQ (sizeof ("null" ) - 1 , strlen (buf ));
68+ ASSERT_GT (bufsize , b .pos );
4869
4970 free (buf );
5071 PASS ();
@@ -53,6 +74,7 @@ check_auto_singles(void)
5374TEST
5475check_auto_array_realloc (void )
5576{
77+ static const char expected [] = "[true,false,null,10,\"foo\",{}]" ;
5678 char * buf = malloc (4 );
5779 size_t bufsize = 4 ;
5880 size_t original_size = bufsize ;
@@ -72,8 +94,11 @@ check_auto_array_realloc(void)
7294 ASSERT_EQm (buf , JSONB_END , jsonb_array_pop_auto (& b , & buf , & bufsize ));
7395 }
7496
75- ASSERT_STR_EQ ("[true,false,null,10,\"foo\",{}]" , buf );
97+ ASSERT_STR_EQ (expected , buf );
7698 ASSERT_GT (bufsize , original_size );
99+ ASSERT_GT (bufsize , b .pos );
100+ ASSERT_EQ (sizeof (expected ) - 1 , b .pos );
101+ ASSERT_EQ (sizeof (expected ) - 1 , strlen (buf ));
77102
78103 free (buf );
79104 PASS ();
@@ -82,8 +107,10 @@ check_auto_array_realloc(void)
82107TEST
83108check_auto_object_realloc (void )
84109{
85- char * buf = malloc (4 );
86- size_t bufsize = 4 ;
110+ static const char expected [] =
111+ "{\"a\":true,\"b\":false,\"c\":null,\"d\":10,\"e\":\"foo\",\"f\":[]}" ;
112+ char * buf = NULL ;
113+ size_t bufsize = 0 ;
87114 size_t original_size = bufsize ;
88115 jsonb b ;
89116
@@ -107,10 +134,11 @@ check_auto_object_realloc(void)
107134 ASSERT_EQm (buf , JSONB_END , jsonb_object_pop_auto (& b , & buf , & bufsize ));
108135 }
109136
110- ASSERT_STR_EQ (
111- "{\"a\":true,\"b\":false,\"c\":null,\"d\":10,\"e\":\"foo\",\"f\":[]}" ,
112- buf );
137+ ASSERT_STR_EQ (expected , buf );
113138 ASSERT_GT (bufsize , original_size );
139+ ASSERT_GT (bufsize , b .pos );
140+ ASSERT_EQ (sizeof (expected ) - 1 , b .pos );
141+ ASSERT_EQ (sizeof (expected ) - 1 , strlen (buf ));
114142
115143 free (buf );
116144 PASS ();
@@ -119,6 +147,9 @@ check_auto_object_realloc(void)
119147TEST
120148check_auto_string_escaping (void )
121149{
150+ static const char expected [] = "[\"begin\",\"\\nhi\\n\",\"\\n\\t\\t\","
151+ "\"\\b\\u0007\\u0007\\ttest\\n\","
152+ "\"end\"]" ;
122153 char * buf = malloc (8 );
123154 size_t bufsize = 8 ;
124155 static const char * const strs [] = {
@@ -136,9 +167,10 @@ check_auto_string_escaping(void)
136167 }
137168 ASSERT_EQm (buf , JSONB_END , jsonb_array_pop_auto (& b , & buf , & bufsize ));
138169
139- ASSERT_STR_EQ ("[\"begin\",\"\\nhi\\n\",\"\\n\\t\\t\","
140- "\"\\b\\u0007\\u0007\\ttest\\n\",\"end\"]" ,
141- buf );
170+ ASSERT_STR_EQ (expected , buf );
171+ ASSERT_GT (bufsize , b .pos );
172+ ASSERT_EQ (sizeof (expected ) - 1 , b .pos );
173+ ASSERT_EQ (sizeof (expected ) - 1 , strlen (buf ));
142174
143175 free (buf );
144176 PASS ();
@@ -147,6 +179,8 @@ check_auto_string_escaping(void)
147179TEST
148180check_auto_nested_with_realloc (void )
149181{
182+ static const char expected [] =
183+ "{\"nested\":{\"array\":[1,2,3],\"object\":{\"x\":\"y\"}}}" ;
150184 char * buf = malloc (4 );
151185 size_t bufsize = 4 ;
152186 size_t original_size = bufsize ;
@@ -189,9 +223,11 @@ check_auto_nested_with_realloc(void)
189223 ASSERT_EQm (buf , JSONB_END , jsonb_object_pop_auto (& b , & buf , & bufsize ));
190224 }
191225
192- ASSERT_STR_EQ ("{\"nested\":{\"array\":[1,2,3],\"object\":{\"x\":\"y\"}}}" ,
193- buf );
226+ ASSERT_STR_EQ (expected , buf );
194227 ASSERT_GT (bufsize , original_size );
228+ ASSERT_GT (bufsize , b .pos );
229+ ASSERT_EQ (sizeof (expected ) - 1 , b .pos );
230+ ASSERT_EQ (sizeof (expected ) - 1 , strlen (buf ));
195231
196232 free (buf );
197233 PASS ();
201237check_auto_large_string (void )
202238{
203239 char * longString = malloc (1000 );
204- char * buf = malloc ( 8 ) ;
205- size_t bufsize = 8 ;
240+ char * buf = NULL ;
241+ size_t bufsize = 0 ;
206242 size_t original_size = bufsize ;
207243 jsonb b ;
208244 int i ;
0 commit comments