From 31f6d1cc094f2eaace069a1f1fbd8d87b3edf3fd Mon Sep 17 00:00:00 2001 From: "Jorge C. Leitao" Date: Tue, 19 Oct 2021 19:09:57 +0000 Subject: [PATCH] Added more tests. --- tests/it/array/utf8/mod.rs | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/tests/it/array/utf8/mod.rs b/tests/it/array/utf8/mod.rs index a81961dc817..928ef64ae8f 100644 --- a/tests/it/array/utf8/mod.rs +++ b/tests/it/array/utf8/mod.rs @@ -116,6 +116,14 @@ fn not_utf8() { Utf8Array::::from_data(DataType::Utf8, offsets, values, None); } +#[test] +#[should_panic] +fn not_utf8_individually() { + let offsets = Buffer::from(&[0, 1, 2]); + let values = Buffer::from([207, 128]); // each is invalid utf8, but together is valid + Utf8Array::::from_data(DataType::Utf8, offsets, values, None); +} + #[test] #[should_panic] fn wrong_offsets() { @@ -134,15 +142,27 @@ fn wrong_data_type() { #[test] #[should_panic] -fn value_with_wrong_offsets_panics() { - let offsets = Buffer::from(&[0, 10, 11, 4]); +fn value_with_out_of_bounds_offsets_panics() { + // the 10-11 is out of bounds + let offsets = Buffer::from(&[0, 10, 4]); let values = Buffer::from(b"abbb"); - // the 10-11 is not checked - let array = Utf8Array::::from_data(DataType::Utf8, offsets, values, None); + let _ = Utf8Array::::from_data(DataType::Utf8, offsets, values, None); +} - // but access is still checked (and panics) - // without checks, this would result in reading beyond bounds - array.value(0); +#[test] +#[should_panic] +fn value_with_wrong_decreasing_offset_panics() { + let offsets = Buffer::from(&[0, 2, 1]); + let values = Buffer::from(b"abbb"); + let _ = Utf8Array::::from_data(DataType::Utf8, offsets, values, None); +} + +#[test] +#[should_panic] +fn value_with_wrong_decreasing_offset_and_utf8_panics() { + let offsets = Buffer::from(&[0, 4, 2]); // not increasing + let values = Buffer::from([207, 128, 207, 128, 207, 128]); // valid utf8 + let _ = Utf8Array::::from_data(DataType::Utf8, offsets, values, None); } #[test]