Skip to content

Commit 4e9e069

Browse files
committed
wip
Signed-off-by: Joe Isaacs <[email protected]>
1 parent 737186c commit 4e9e069

File tree

12 files changed

+221
-131
lines changed

12 files changed

+221
-131
lines changed

encodings/fsst/src/tests.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use vortex_array::compute::take;
1212
use vortex_buffer::buffer;
1313
use vortex_dtype::DType;
1414
use vortex_dtype::Nullability;
15+
use vortex_error::VortexResult;
1516
use vortex_mask::Mask;
1617

1718
use crate::FSSTVTable;
@@ -39,7 +40,7 @@ pub(crate) fn build_fsst_array() -> ArrayRef {
3940
}
4041

4142
#[test]
42-
fn test_fsst_array_ops() {
43+
fn test_fsst_array_ops() -> VortexResult<()> {
4344
// first test the scalar_at values
4445
let fsst_array = build_fsst_array();
4546
assert_nth_scalar!(
@@ -75,7 +76,7 @@ fn test_fsst_array_ops() {
7576

7677
// test take
7778
let indices = buffer![0, 2].into_array();
78-
let fsst_taken = take(&fsst_array, &indices).unwrap();
79+
let fsst_taken = take(&fsst_array, &indices)?;
7980
assert!(fsst_taken.is::<FSSTVTable>());
8081
assert_eq!(fsst_taken.len(), 2);
8182
assert_nth_scalar!(
@@ -92,7 +93,7 @@ fn test_fsst_array_ops() {
9293
// test filter
9394
let mask = Mask::from_iter([false, true, true]);
9495

95-
let fsst_filtered = filter(&fsst_array, &mask).unwrap();
96+
let fsst_filtered = filter(&fsst_array, &mask)?;
9697
assert!(fsst_filtered.is::<FSSTVTable>());
9798
assert_eq!(fsst_filtered.len(), 2);
9899
assert_nth_scalar!(
@@ -102,7 +103,9 @@ fn test_fsst_array_ops() {
102103
);
103104

104105
// test to_canonical
105-
let canonical_array = fsst_array.to_varbinview().unwrap().into_array();
106+
let canonical_array = fsst_array.to_varbinview()?.into_array();
106107

107108
assert_arrays_eq!(fsst_array.to_array(), canonical_array);
109+
110+
Ok(())
108111
}

encodings/pco/src/test.rs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use vortex_buffer::BufferMut;
2020
use vortex_dtype::DType;
2121
use vortex_dtype::Nullability;
2222
use vortex_dtype::PType;
23+
use vortex_error::VortexResult;
2324
use vortex_mask::Mask;
2425

2526
use crate::PcoArray;
@@ -32,7 +33,7 @@ macro_rules! assert_nth_scalar {
3233
}
3334

3435
#[test]
35-
fn test_compress_decompress() {
36+
fn test_compress_decompress() -> VortexResult<()> {
3637
let data: Vec<i32> = (0..200).collect();
3738
let array = PrimitiveArray::from_iter(data.clone());
3839
let compressed = PcoArray::from_primitive(&array, 3, 0).unwrap();
@@ -48,15 +49,17 @@ fn test_compress_decompress() {
4849
for i in 0_i32..5 {
4950
assert_nth_scalar!(slice, i as usize, 100 + i);
5051
}
51-
let primitive = slice.to_primitive().unwrap();
52+
let primitive = slice.to_primitive()?;
5253
assert_arrays_eq!(
5354
primitive,
5455
PrimitiveArray::from_iter([100, 101, 102, 103, 104])
5556
);
5657

5758
let slice = compressed.slice(200..200);
58-
let primitive = slice.to_primitive().unwrap();
59+
let primitive = slice.to_primitive()?;
5960
assert_arrays_eq!(primitive, PrimitiveArray::from_iter(Vec::<i32>::new()));
61+
62+
Ok(())
6063
}
6164

6265
#[test]
@@ -81,7 +84,7 @@ fn test_empty() {
8184
}
8285

8386
#[test]
84-
fn test_validity_and_multiple_chunks_and_pages() {
87+
fn test_validity_and_multiple_chunks_and_pages() -> VortexResult<()> {
8588
let data: Vec<i32> = (0..200).collect();
8689
let mut validity: Vec<bool> = vec![true; 200];
8790
validity[7..15].fill(false);
@@ -115,15 +118,17 @@ fn test_validity_and_multiple_chunks_and_pages() {
115118
let slice = compressed.slice(100..103);
116119
assert_nth_scalar!(slice, 0, 100);
117120
assert_nth_scalar!(slice, 2, 102);
118-
let primitive = slice.to_primitive().unwrap();
121+
let primitive = slice.to_primitive()?;
119122
assert_eq!(
120123
primitive.validity(),
121124
&Validity::Array(BoolArray::from_iter(vec![true, false, true]).to_array())
122125
);
126+
127+
Ok(())
123128
}
124129

125130
#[test]
126-
fn test_validity_vtable() {
131+
fn test_validity_vtable() -> VortexResult<()> {
127132
let data: Vec<i32> = (0..5).collect();
128133
let mask_bools = vec![false, true, true, false, true];
129134
let array = PrimitiveArray::new(
@@ -132,13 +137,15 @@ fn test_validity_vtable() {
132137
);
133138
let compressed = PcoArray::from_primitive(&array, 3, 0).unwrap();
134139
assert_eq!(
135-
compressed.validity_mask().unwrap(),
140+
compressed.validity_mask()?,
136141
Mask::from_iter(mask_bools)
137142
);
138143
assert_eq!(
139-
compressed.slice(1..4).validity_mask().unwrap(),
144+
compressed.slice(1..4).validity_mask()?,
140145
Mask::from_iter(vec![true, true, false])
141146
);
147+
148+
Ok(())
142149
}
143150

144151
#[test]

encodings/zstd/src/test.rs

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use vortex_array::vtable::ValidityHelper;
1212
use vortex_buffer::Buffer;
1313
use vortex_dtype::DType;
1414
use vortex_dtype::Nullability;
15+
use vortex_error::VortexResult;
1516
use vortex_mask::Mask;
1617

1718
use crate::ZstdArray;
@@ -23,7 +24,7 @@ macro_rules! assert_nth_scalar {
2324
}
2425

2526
#[test]
26-
fn test_zstd_compress_decompress() {
27+
fn test_zstd_compress_decompress() -> VortexResult<()> {
2728
let data: Vec<i32> = (0..200).collect();
2829
let array = PrimitiveArray::from_iter(data.clone());
2930

@@ -33,27 +34,29 @@ fn test_zstd_compress_decompress() {
3334
assert!(compressed.dictionary.is_none());
3435

3536
// check full decompression works
36-
let decompressed = compressed.decompress().unwrap().to_primitive().unwrap();
37+
let decompressed = compressed.decompress()?.to_primitive()?;
3738
assert_arrays_eq!(decompressed, PrimitiveArray::from_iter(data));
3839

3940
// check slicing works
4041
let slice = compressed.slice(100..105);
4142
for i in 0_i32..5 {
4243
assert_nth_scalar!(slice, i as usize, 100 + i);
4344
}
44-
let primitive = slice.to_primitive().unwrap();
45+
let primitive = slice.to_primitive()?;
4546
assert_arrays_eq!(
4647
primitive,
4748
PrimitiveArray::from_iter([100, 101, 102, 103, 104])
4849
);
4950

5051
let slice = compressed.slice(200..200);
51-
let primitive = slice.to_primitive().unwrap();
52+
let primitive = slice.to_primitive()?;
5253
assert_arrays_eq!(primitive, PrimitiveArray::from_iter(Vec::<i32>::new()));
54+
55+
Ok(())
5356
}
5457

5558
#[test]
56-
fn test_zstd_empty() {
59+
fn test_zstd_empty() -> VortexResult<()> {
5760
let data: Vec<i32> = vec![];
5861
let array = PrimitiveArray::new(
5962
data.iter().cloned().collect::<Buffer<_>>(),
@@ -62,12 +65,14 @@ fn test_zstd_empty() {
6265

6366
let compressed = ZstdArray::from_primitive(&array, 3, 100).unwrap();
6467

65-
let primitive = compressed.to_primitive().unwrap();
68+
let primitive = compressed.to_primitive()?;
6669
assert_arrays_eq!(primitive, PrimitiveArray::from_iter(data));
70+
71+
Ok(())
6772
}
6873

6974
#[test]
70-
fn test_zstd_with_validity_and_multi_frame() {
75+
fn test_zstd_with_validity_and_multi_frame() -> VortexResult<()> {
7176
let data: Vec<i32> = (0..200).collect();
7277
let mut validity: Vec<bool> = vec![false; 200];
7378
validity[3] = true;
@@ -84,15 +89,15 @@ fn test_zstd_with_validity_and_multi_frame() {
8489
assert_nth_scalar!(compressed, 10, None::<i32>);
8590
assert_nth_scalar!(compressed, 177, 177);
8691

87-
let decompressed = compressed.decompress().unwrap().to_primitive().unwrap();
92+
let decompressed = compressed.decompress()?.to_primitive()?;
8893
let decompressed_values = decompressed.as_slice::<i32>();
8994
assert_eq!(decompressed_values[3], 3);
9095
assert_eq!(decompressed_values[177], 177);
9196
assert_eq!(decompressed.validity(), array.validity());
9297

9398
// check slicing works
9499
let slice = compressed.slice(176..179);
95-
let primitive = slice.to_primitive().unwrap();
100+
let primitive = slice.to_primitive()?;
96101
assert_eq!(
97102
TryInto::<i32>::try_into(primitive.scalar_at(1).as_ref())
98103
.ok()
@@ -103,10 +108,12 @@ fn test_zstd_with_validity_and_multi_frame() {
103108
primitive.validity(),
104109
&Validity::Array(BoolArray::from_iter(vec![false, true, false]).to_array())
105110
);
111+
112+
Ok(())
106113
}
107114

108115
#[test]
109-
fn test_zstd_with_dict() {
116+
fn test_zstd_with_dict() -> VortexResult<()> {
110117
let data: Vec<i32> = (0..200).collect();
111118
let array = PrimitiveArray::new(
112119
data.iter().cloned().collect::<Buffer<_>>(),
@@ -118,32 +125,36 @@ fn test_zstd_with_dict() {
118125
assert_nth_scalar!(compressed, 0, 0);
119126
assert_nth_scalar!(compressed, 199, 199);
120127

121-
let decompressed = compressed.decompress().unwrap().to_primitive().unwrap();
128+
let decompressed = compressed.decompress()?.to_primitive()?;
122129
assert_arrays_eq!(decompressed, PrimitiveArray::from_iter(data));
123130
assert_eq!(decompressed.validity(), array.validity());
124131

125132
// check slicing works
126133
let slice = compressed.slice(176..179);
127-
let primitive = slice.to_primitive().unwrap();
134+
let primitive = slice.to_primitive()?;
128135
assert_arrays_eq!(primitive, PrimitiveArray::from_iter([176, 177, 178]));
136+
137+
Ok(())
129138
}
130139

131140
#[test]
132-
fn test_validity_vtable() {
141+
fn test_validity_vtable() -> VortexResult<()> {
133142
let mask_bools = vec![false, true, true, false, true];
134143
let array = PrimitiveArray::new(
135144
(0..5).collect::<Buffer<_>>(),
136145
Validity::Array(BoolArray::from_iter(mask_bools.clone()).to_array()),
137146
);
138147
let compressed = ZstdArray::from_primitive(&array, 3, 0).unwrap();
139148
assert_eq!(
140-
compressed.validity_mask().unwrap(),
149+
compressed.validity_mask()?,
141150
Mask::from_iter(mask_bools)
142151
);
143152
assert_eq!(
144-
compressed.slice(1..4).validity_mask().unwrap(),
153+
compressed.slice(1..4).validity_mask()?,
145154
Mask::from_iter(vec![true, true, false])
146155
);
156+
157+
Ok(())
147158
}
148159

149160
#[test]
@@ -172,7 +183,7 @@ fn test_zstd_var_bin_view() {
172183
}
173184

174185
#[test]
175-
fn test_zstd_decompress_var_bin_view() {
186+
fn test_zstd_decompress_var_bin_view() -> VortexResult<()> {
176187
let data: [Option<&'static [u8]>; 5] = [
177188
Some(b"foo"),
178189
Some(b"bar"),
@@ -189,12 +200,14 @@ fn test_zstd_decompress_var_bin_view() {
189200
assert_nth_scalar!(compressed, 2, None::<String>);
190201
assert_nth_scalar!(compressed, 3, "Lorem ipsum dolor sit amet");
191202
assert_nth_scalar!(compressed, 4, "baz");
192-
let decompressed = compressed.decompress().unwrap().to_varbinview().unwrap();
203+
let decompressed = compressed.decompress()?.to_varbinview()?;
193204
assert_nth_scalar!(decompressed, 0, "foo");
194205
assert_nth_scalar!(decompressed, 1, "bar");
195206
assert_nth_scalar!(decompressed, 2, None::<String>);
196207
assert_nth_scalar!(decompressed, 3, "Lorem ipsum dolor sit amet");
197208
assert_nth_scalar!(decompressed, 4, "baz");
209+
210+
Ok(())
198211
}
199212

200213
#[test]

vortex-array/src/arrays/datetime/test.rs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use rstest::rstest;
55
use vortex_buffer::buffer;
66
use vortex_dtype::datetime::TemporalMetadata;
77
use vortex_dtype::datetime::TimeUnit;
8+
use vortex_error::VortexResult;
89

910
use crate::IntoArray;
1011
use crate::ToCanonical;
@@ -15,6 +16,18 @@ use crate::validity::Validity;
1516
use crate::vtable::ValidityHelper;
1617

1718
macro_rules! test_temporal_roundtrip {
19+
($prim:ty, $constructor:expr, $unit:expr) => {{
20+
let array = buffer![100 as $prim].into_array();
21+
let temporal: TemporalArray = $constructor(array, $unit);
22+
let prims = temporal.temporal_values().to_primitive()?;
23+
24+
assert_eq!(prims.as_slice::<$prim>(), vec![100 as $prim].as_slice(),);
25+
assert_eq!(temporal.temporal_metadata().time_unit(), $unit);
26+
Ok(())
27+
}};
28+
}
29+
30+
macro_rules! test_temporal_roundtrip_panic {
1831
($prim:ty, $constructor:expr, $unit:expr) => {{
1932
let array = buffer![100 as $prim].into_array();
2033
let temporal: TemporalArray = $constructor(array, $unit);
@@ -28,8 +41,8 @@ macro_rules! test_temporal_roundtrip {
2841
macro_rules! test_success_case {
2942
($name:ident, $prim:ty, $constructor:expr, $unit:expr) => {
3043
#[test]
31-
fn $name() {
32-
test_temporal_roundtrip!($prim, $constructor, $unit);
44+
fn $name() -> VortexResult<()> {
45+
test_temporal_roundtrip!($prim, $constructor, $unit)
3346
}
3447
};
3548
}
@@ -39,7 +52,7 @@ macro_rules! test_fail_case {
3952
#[test]
4053
#[should_panic]
4154
fn $name() {
42-
test_temporal_roundtrip!($prim, $constructor, $unit)
55+
test_temporal_roundtrip_panic!($prim, $constructor, $unit)
4356
}
4457
};
4558
}
@@ -132,7 +145,7 @@ test_fail_case!(
132145

133146
// We test Timestamp explicitly to avoid the macro getting too complex.
134147
#[test]
135-
fn test_timestamp() {
148+
fn test_timestamp() -> VortexResult<()> {
136149
let ts = buffer![100i64].into_array();
137150
let ts_array = ts.into_array();
138151

@@ -146,14 +159,15 @@ fn test_timestamp() {
146159
let temporal_array =
147160
TemporalArray::new_timestamp(ts_array.to_array(), unit, tz.clone());
148161

149-
let values = temporal_array.temporal_values().to_primitive().unwrap();
162+
let values = temporal_array.temporal_values().to_primitive()?;
150163
assert_eq!(values.as_slice::<i64>(), vec![100i64].as_slice());
151164
assert_eq!(
152165
temporal_array.temporal_metadata(),
153166
&TemporalMetadata::Timestamp(unit, tz)
154167
);
155168
}
156169
}
170+
Ok(())
157171
}
158172

159173
#[test]
@@ -170,7 +184,7 @@ fn test_timestamp_fails_i32() {
170184
#[case(Validity::AllValid)]
171185
#[case(Validity::AllInvalid)]
172186
#[case(Validity::from_iter([true, false, true]))]
173-
fn test_validity_preservation(#[case] validity: Validity) {
187+
fn test_validity_preservation(#[case] validity: Validity) -> VortexResult<()> {
174188
let milliseconds = PrimitiveArray::new(
175189
buffer![
176190
86_400i64, // element with only day component
@@ -188,9 +202,9 @@ fn test_validity_preservation(#[case] validity: Validity) {
188202
assert_eq!(
189203
temporal_array
190204
.temporal_values()
191-
.to_primitive()
192-
.unwrap()
205+
.to_primitive()?
193206
.validity(),
194207
&validity
195208
);
209+
Ok(())
196210
}

0 commit comments

Comments
 (0)