@@ -628,6 +628,39 @@ describe("date32", (t) => {
628628// }
629629// });
630630
631+ describe ( "duration" , ( t ) => {
632+ function test ( copy : boolean ) {
633+ let columnIndex = TEST_TABLE . schema . fields . findIndex (
634+ ( field ) => field . name == "duration"
635+ ) ;
636+
637+ const originalField = TEST_TABLE . schema . fields [ columnIndex ] ;
638+ // declare it's not null
639+ const originalVector = TEST_TABLE . getChildAt ( columnIndex ) as arrow . Vector ;
640+ const fieldPtr = FFI_TABLE . schemaAddr ( columnIndex ) ;
641+ const field = parseField ( WASM_MEMORY . buffer , fieldPtr ) ;
642+
643+ expect ( field . name ) . toStrictEqual ( originalField . name ) ;
644+ expect ( field . typeId ) . toStrictEqual ( originalField . typeId ) ;
645+ expect ( field . nullable ) . toStrictEqual ( originalField . nullable ) ;
646+
647+ const arrayPtr = FFI_TABLE . arrayAddr ( 0 , columnIndex ) ;
648+ const wasmVector = parseVector (
649+ WASM_MEMORY . buffer ,
650+ arrayPtr ,
651+ field . type ,
652+ copy
653+ ) ;
654+
655+ for ( let i = 0 ; i < 3 ; i ++ ) {
656+ expect ( originalVector . get ( i ) , wasmVector . get ( i ) ) ;
657+ }
658+ }
659+
660+ it ( "copy=false" , ( ) => test ( false ) ) ;
661+ it ( "copy=true" , ( ) => test ( true ) ) ;
662+ } ) ;
663+
631664describe ( "nullable int" , ( t ) => {
632665 function test ( copy : boolean ) {
633666 let columnIndex = TEST_TABLE . schema . fields . findIndex (
0 commit comments