@@ -128,13 +128,43 @@ static void test_parse_string() {
128128}
129129
130130static  void  test_parse_array () {
131+     size_t  i , j ;
131132    lept_value  v ;
132133
133134    lept_init (& v );
134135    EXPECT_EQ_INT (LEPT_PARSE_OK , lept_parse (& v , "[ ]" ));
135136    EXPECT_EQ_INT (LEPT_ARRAY , lept_get_type (& v ));
136137    EXPECT_EQ_SIZE_T (0 , lept_get_array_size (& v ));
137138    lept_free (& v );
139+ 
140+     lept_init (& v );
141+     EXPECT_EQ_INT (LEPT_PARSE_OK , lept_parse (& v , "[ null , false , true , 123 , \"abc\" ]" ));
142+     EXPECT_EQ_INT (LEPT_ARRAY , lept_get_type (& v ));
143+     EXPECT_EQ_SIZE_T (5 , lept_get_array_size (& v ));
144+     EXPECT_EQ_INT (LEPT_NULL ,   lept_get_type (lept_get_array_element (& v , 0 )));
145+     EXPECT_EQ_INT (LEPT_FALSE ,  lept_get_type (lept_get_array_element (& v , 1 )));
146+     EXPECT_EQ_INT (LEPT_TRUE ,   lept_get_type (lept_get_array_element (& v , 2 )));
147+     EXPECT_EQ_INT (LEPT_NUMBER , lept_get_type (lept_get_array_element (& v , 3 )));
148+     EXPECT_EQ_INT (LEPT_STRING , lept_get_type (lept_get_array_element (& v , 4 )));
149+     EXPECT_EQ_DOUBLE (123.0 , lept_get_number (lept_get_array_element (& v , 3 )));
150+     EXPECT_EQ_STRING ("abc" , lept_get_string (lept_get_array_element (& v , 4 )), lept_get_string_length (lept_get_array_element (& v , 4 )));
151+     lept_free (& v );
152+ 
153+     lept_init (& v );
154+     EXPECT_EQ_INT (LEPT_PARSE_OK , lept_parse (& v , "[ [ ] , [ 0 ] , [ 0 , 1 ] , [ 0 , 1 , 2 ] ]" ));
155+     EXPECT_EQ_INT (LEPT_ARRAY , lept_get_type (& v ));
156+     EXPECT_EQ_SIZE_T (4 , lept_get_array_size (& v ));
157+     for  (i  =  0 ; i  <  4 ; i ++ ) {
158+         lept_value *  a  =  lept_get_array_element (& v , i );
159+         EXPECT_EQ_INT (LEPT_ARRAY , lept_get_type (a ));
160+         EXPECT_EQ_SIZE_T (i , lept_get_array_size (a ));
161+         for  (j  =  0 ; j  <  i ; j ++ ) {
162+             lept_value *  e  =  lept_get_array_element (a , j );
163+             EXPECT_EQ_INT (LEPT_NUMBER , lept_get_type (e ));
164+             EXPECT_EQ_DOUBLE ((double )j , lept_get_number (e ));
165+         }
166+     }
167+     lept_free (& v );
138168}
139169
140170#define  TEST_ERROR (error , json )\
@@ -229,7 +259,7 @@ static void test_parse_invalid_unicode_surrogate() {
229259}
230260
231261static  void  test_parse_miss_comma_or_square_bracket () {
232- #if  0 
262+ #if  1 
233263    TEST_ERROR (LEPT_PARSE_MISS_COMMA_OR_SQUARE_BRACKET , "[1" );
234264    TEST_ERROR (LEPT_PARSE_MISS_COMMA_OR_SQUARE_BRACKET , "[1}" );
235265    TEST_ERROR (LEPT_PARSE_MISS_COMMA_OR_SQUARE_BRACKET , "[1 2" );
0 commit comments