use vortex_buffer::buffer;
use crate::IntoArray;
use crate::arrays::BoolArray;
use crate::arrays::ListViewArray;
use crate::arrays::PrimitiveArray;
use crate::validity::Validity;
pub fn create_basic_listview() -> ListViewArray {
let elements = buffer![0i32, 1, 2, 3, 4, 5, 6, 7, 8, 9].into_array();
let offsets = buffer![0u32, 3, 5, 7].into_array();
let sizes = buffer![3u32, 2, 2, 3].into_array();
unsafe {
ListViewArray::new_unchecked(elements, offsets, sizes, Validity::NonNullable)
.with_zero_copy_to_list(true)
}
}
pub fn create_nullable_listview() -> ListViewArray {
let elements = buffer![10i32, 20, 30, 40, 50].into_array();
let offsets = buffer![0u32, 2, 4].into_array();
let sizes = buffer![2u32, 2, 1].into_array();
let validity = Validity::Array(BoolArray::from_iter(vec![true, false, true]).into_array());
unsafe {
ListViewArray::new_unchecked(elements, offsets, sizes, validity)
.with_zero_copy_to_list(true)
}
}
pub fn create_empty_lists_listview() -> ListViewArray {
let elements = buffer![99i32].into_array();
let offsets = buffer![0u32, 0, 0, 0].into_array();
let sizes = buffer![0u32, 0, 0, 0].into_array();
unsafe {
ListViewArray::new_unchecked(elements, offsets, sizes, Validity::NonNullable)
.with_zero_copy_to_list(true)
}
}
pub fn create_overlapping_listview() -> ListViewArray {
let elements = buffer![0i32, 1, 2, 3, 4, 5, 6, 7, 8, 9].into_array();
let offsets = buffer![5u32, 2, 8, 0, 1].into_array();
let sizes = buffer![3u32, 2, 2, 2, 4].into_array();
ListViewArray::new(elements, offsets, sizes, Validity::NonNullable)
}
pub fn create_large_listview() -> ListViewArray {
let elements = PrimitiveArray::from_iter(0i32..1000).into_array();
let offsets = buffer![0u32, 100, 200, 300, 400, 500, 600, 700, 800, 900].into_array();
let sizes = buffer![50u32, 50, 50, 50, 50, 50, 50, 50, 50, 50].into_array();
ListViewArray::new(elements, offsets, sizes, Validity::NonNullable)
}