@@ -369,3 +369,46 @@ where
369
369
}
370
370
}
371
371
}
372
+
373
+ #[ cfg( test) ]
374
+ mod tests {
375
+ use crate :: types:: Type ;
376
+ use crate :: { Connection , Result } ;
377
+
378
+ #[ test]
379
+ fn test_list_types ( ) -> Result < ( ) > {
380
+ let conn = Connection :: open_in_memory ( ) ?;
381
+ conn. execute (
382
+ "CREATE TABLE test_table (float_list FLOAT[], double_list DOUBLE[], int_list INT[])" ,
383
+ [ ] ,
384
+ ) ?;
385
+ conn. execute ( "INSERT INTO test_table VALUES ([1.5, 2.5], [3.5, 4.5], [1, 2])" , [ ] ) ?;
386
+
387
+ let mut stmt = conn. prepare ( "SELECT float_list, double_list, int_list FROM test_table" ) ?;
388
+ let mut rows = stmt. query ( [ ] ) ?;
389
+ let row = rows. next ( ) ?. unwrap ( ) ;
390
+
391
+ let float_list = row. get_ref_unwrap ( 0 ) ;
392
+ assert ! (
393
+ matches!( float_list. data_type( ) , Type :: List ( ref inner_type) if * * inner_type == Type :: Float ) ,
394
+ "Expected Type::List(Type::Float), got {:?}" ,
395
+ float_list. data_type( )
396
+ ) ;
397
+
398
+ let double_list = row. get_ref_unwrap ( 1 ) ;
399
+ assert ! (
400
+ matches!( double_list. data_type( ) , Type :: List ( ref inner_type) if * * inner_type == Type :: Double ) ,
401
+ "Expected Type::List(Type::Double), got {:?}" ,
402
+ double_list. data_type( )
403
+ ) ;
404
+
405
+ let int_list = row. get_ref_unwrap ( 2 ) ;
406
+ assert ! (
407
+ matches!( int_list. data_type( ) , Type :: List ( ref inner_type) if * * inner_type == Type :: Int ) ,
408
+ "Expected Type::List(Type::Int), got {:?}" ,
409
+ int_list. data_type( )
410
+ ) ;
411
+
412
+ Ok ( ( ) )
413
+ }
414
+ }
0 commit comments