@@ -803,6 +803,39 @@ mod tests {
803803 Ok ( ( ) )
804804 }
805805
806+ #[ crate :: test]
807+ fn test_dict_mismatched_ptypes_rejected ( ) -> VortexResult < ( ) > {
808+ let dict_values: Vec < u32 > = vec ! [ 100 , 200 , 300 , 400 ] ;
809+ let len = 3000 ;
810+ let codes: Vec < u8 > = ( 0 ..len) . map ( |i| ( i % dict_values. len ( ) ) as u8 ) . collect ( ) ;
811+
812+ let codes_prim = PrimitiveArray :: new ( Buffer :: from ( codes) , NonNullable ) ;
813+ let values_prim = PrimitiveArray :: new ( Buffer :: from ( dict_values) , NonNullable ) ;
814+ let dict = DictArray :: try_new ( codes_prim. into_array ( ) , values_prim. into_array ( ) ) ?;
815+
816+ let cuda_ctx = CudaSession :: create_execution_ctx ( & VortexSession :: empty ( ) ) ?;
817+ // build_plan should fail because u8 codes != u32 values in byte width.
818+ assert ! ( build_plan( & dict. into_array( ) , & cuda_ctx) . is_err( ) ) ;
819+
820+ Ok ( ( ) )
821+ }
822+
823+ #[ crate :: test]
824+ fn test_runend_mismatched_ptypes_rejected ( ) -> VortexResult < ( ) > {
825+ let ends: Vec < u64 > = vec ! [ 1000 , 2000 , 3000 ] ;
826+ let values: Vec < i32 > = vec ! [ 10 , 20 , 30 ] ;
827+
828+ let ends_arr = PrimitiveArray :: new ( Buffer :: from ( ends) , NonNullable ) . into_array ( ) ;
829+ let values_arr = PrimitiveArray :: new ( Buffer :: from ( values) , NonNullable ) . into_array ( ) ;
830+ let re = RunEndArray :: new ( ends_arr, values_arr) ;
831+
832+ let cuda_ctx = CudaSession :: create_execution_ctx ( & VortexSession :: empty ( ) ) ?;
833+ // build_plan should fail because u64 ends != i32 values in byte width.
834+ assert ! ( build_plan( & re. into_array( ) , & cuda_ctx) . is_err( ) ) ;
835+
836+ Ok ( ( ) )
837+ }
838+
806839 #[ rstest]
807840 #[ case( 0 , 1024 ) ]
808841 #[ case( 0 , 3000 ) ]
0 commit comments