sample-arrow2 0.17.2

Samplers for arrow2 for use with sample-test
Documentation
use arrow2::{
    array::Array,
    datatypes::{DataType, Field},
};
use sample_arrow2::{array::FromDataType, AlwaysValid, FixedLenSampler};
use sample_std::Sample;
use sample_test::sample_test;
use std::boxed::Box;

pub type ArraySampler = Box<dyn Sample<Output = Box<dyn Array>>>;

fn fixed(len: usize, count: usize) -> ArraySampler {
    let data_type = DataType::FixedSizeList(
        Box::new(Field::new("inner".to_string(), DataType::UInt8, false)),
        count,
    );

    let any = FromDataType {
        validity: AlwaysValid,
        branch: 0..10,
    };

    Box::new(FixedLenSampler {
        len,
        array: any.from_data_type(&data_type),
    })
}

#[sample_test]
fn fixed_size_list_equality(#[sample(fixed(10, 30))] mut array: Box<dyn Array>) {
    assert_eq!(array.len(), 10);
    assert_eq!(array, array);
    if array.len() > 2 {
        let before = array.clone();
        array.slice(0, array.len() / 2);
        assert_ne!(before, array);
    }
}