From adc3f3b5ff5854ece947fe4dbee33e8d8cf5fff6 Mon Sep 17 00:00:00 2001 From: Matthijs Brobbel Date: Wed, 26 Jul 2023 23:52:54 +0200 Subject: [PATCH] test: `FromIterator` for `VariableSizeListArray` with nullable child array --- Cargo.toml | 2 +- src/array/variable_size_list.rs | 47 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index da39af05..c54d50fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ members = ["narrow-derive"] [package] name = "narrow" -version= "0.2.2" +version= "0.2.3" authors.workspace = true edition.workspace = true rust-version.workspace = true diff --git a/src/array/variable_size_list.rs b/src/array/variable_size_list.rs index 6761b8e1..62b8bad7 100644 --- a/src/array/variable_size_list.rs +++ b/src/array/variable_size_list.rs @@ -164,5 +164,52 @@ mod tests { assert_eq!(array.0.data.0.data.is_valid(1), Some(true)); assert_eq!(array.0.data.0.data.0.is_null(0), Some(true)); assert_eq!(array.0.data.0.data.0.is_valid(1), Some(true)); + + let input = vec![ + None, + Some(vec![ + None, + Some(vec![ + None, + Some(vec![None, Some(2), Some(3)]), + Some(vec![None, Some(2), Some(3)]), + ]), + Some(vec![None, Some(vec![None, Some(5), Some(6)])]), + ]), + ]; + let array = input.into_iter().collect::, true>, + true, + >, + true, + >>(); + assert_eq!( + array.0.data.0.data.0.data.0.as_ref(), + &[ + u8::default(), + 2, + 3, + u8::default(), + 2, + 3, + u8::default(), + 5, + 6 + ] + ); + assert_eq!(array.0.offsets.as_ref(), &[0, 0, 3]); + assert_eq!(array.0.data.0.offsets.as_ref(), &[0, 0, 3, 5]); + assert_eq!(array.0.data.0.data.0.offsets.as_ref(), &[0, 0, 3, 6, 6, 9]); + assert_eq!(array.is_null(0), Some(true)); + assert_eq!(array.is_valid(1), Some(true)); + assert_eq!(array.0.data.is_null(0), Some(true)); + assert_eq!(array.0.data.is_valid(1), Some(true)); + assert_eq!(array.0.data.0.data.is_null(0), Some(true)); + assert_eq!(array.0.data.0.data.is_valid(1), Some(true)); + assert_eq!(array.0.data.0.data.0.is_null(0), Some(true)); + assert_eq!(array.0.data.0.data.0.is_valid(1), Some(true)); + assert_eq!(array.0.data.0.data.0.data.0.is_null(0), Some(true)); + assert_eq!(array.0.data.0.data.0.data.0.is_valid(1), Some(true)); } }