@@ -326,6 +326,37 @@ int test_list(void) {
326326 return passed ;
327327}
328328
329+ int test_vector (void ) {
330+ passed = 1 ;
331+
332+ check_equal ("(vector)" , "#()" );
333+ check_equal ("(vector 1)" , "#(1)" );
334+ check_equal ("(vector 1 2 3)" , "#(1 2 3)" );
335+
336+ check_equal ("(vector-length #())" , "0" );
337+ check_equal ("(vector-length #(1))" , "1" );
338+ check_equal ("(vector-length #(1 2 3))" , "3" );
339+
340+ check_equal ("(vector-ref #(1 2 3) 0)" , "1" );
341+ check_equal ("(vector-ref #(1 2 3) 1)" , "2" );
342+ check_equal ("(vector-ref #(1 2 3) 2)" , "3" );
343+
344+ check_equal ("(let-values ([(v) #(1 2 3)]) (vector-set! v 0 0) v)" , "#(0 2 3)" );
345+ check_equal ("(let-values ([(v) #(1 2 3)]) (vector-set! v 1 0) v)" , "#(1 0 3)" );
346+ check_equal ("(let-values ([(v) #(1 2 3)]) (vector-set! v 2 0) v)" , "#(1 2 0)" );
347+
348+ check_equal ("(vector->list #())" , "()" );
349+ check_equal ("(vector->list #(1))" , "(1)" );
350+ check_equal ("(vector->list #(1 2 3))" , "(1 2 3)" );
351+
352+ check_equal ("(list->vector '())" , "#()" );
353+ check_equal ("(list->vector '(1))" , "#(1)" );
354+ check_equal ("(list->vector '(1 2 3))" , "#(1 2 3)" );
355+
356+
357+ return passed ;
358+ }
359+
329360int test_callwv (void ) {
330361 passed = 1 ;
331362
@@ -440,6 +471,7 @@ int main(int argc, char **argv) {
440471 log_test ("num" , test_num , return_code );
441472 log_test ("pair" , test_pair , return_code );
442473 log_test ("list" , test_list , return_code );
474+ log_test ("vector" , test_vector , return_code );
443475 log_test ("call-with-values" , test_callwv , return_code );
444476 log_test ("call/cc" , test_callcc , return_code );
445477 log_test ("dynamic-wind" , test_dynamic_wind , return_code );
0 commit comments