Skip to content

Commit fa78809

Browse files
committed
test: cover CUDA e2e null-mask export
Make the cuDF e2e fixture export nullable primitive and date columns and validate that the host Arrow round-trip preserves their nulls. Keep decimal and string non-nullable while we add nullable coverage one supported type at a time. Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
1 parent 25c0ff3 commit fa78809

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

  • vortex-test/e2e-cuda/src

vortex-test/e2e-cuda/src/lib.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ pub unsafe extern "C" fn export_array(
6868
) -> i32 {
6969
let mut ctx = CudaSession::create_execution_ctx(&SESSION).unwrap();
7070

71-
let primitive = PrimitiveArray::from_iter(0u32..5);
71+
let primitive = PrimitiveArray::from_option_iter([Some(0u32), None, Some(2), Some(3), None]);
7272
let decimal = DecimalArray::from_iter(0i128..5, DecimalDType::new(38, 2));
7373
let strings = VarBinViewArray::from_iter_str([
7474
"one",
@@ -78,7 +78,8 @@ pub unsafe extern "C" fn export_array(
7878
"this string is long five",
7979
]);
8080
let dates = TemporalArray::new_date(
81-
PrimitiveArray::from_iter([100i32, 200, 300, 400, 500]).into_array(),
81+
PrimitiveArray::from_option_iter([Some(100i32), None, Some(300), Some(400), None])
82+
.into_array(),
8283
TimeUnit::Days,
8384
);
8485

@@ -124,7 +125,7 @@ pub unsafe extern "C" fn validate_array(
124125
let array = make_array(array_data);
125126
let struct_array = array.as_struct();
126127

127-
let primitive = UInt32Array::from_iter(0..5);
128+
let primitive = UInt32Array::from_iter([Some(0), None, Some(2), Some(3), None]);
128129
let decimal = Decimal128Array::from_iter_values(0..5)
129130
.with_precision_and_scale(38, 2)
130131
.expect("with_precision_and_scale");
@@ -135,13 +136,13 @@ pub unsafe extern "C" fn validate_array(
135136
"four",
136137
"this string is long five",
137138
]);
138-
let date = Date32Array::from(vec![100i32, 200, 300, 400, 500]);
139+
let date = Date32Array::from(vec![Some(100i32), None, Some(300), Some(400), None]);
139140

140141
let expected_fields = Fields::from_iter([
141-
Field::new("prims", primitive.data_type().clone(), false),
142+
Field::new("prims", primitive.data_type().clone(), true),
142143
Field::new("decimals", decimal.data_type().clone(), false),
143144
Field::new("strings", string.data_type().clone(), false),
144-
Field::new("dates", date.data_type().clone(), false),
145+
Field::new("dates", date.data_type().clone(), true),
145146
]);
146147

147148
assert_eq!(

0 commit comments

Comments
 (0)