Path: blob/main/crates/polars-arrow/src/array/struct_/proptest.rs
6939 views
use proptest::prelude::{Just, Strategy};1use proptest::prop_oneof;2use proptest::sample::SizeRange;34use super::StructArray;5use crate::bitmap::proptest::bitmap;6use crate::datatypes::{ArrowDataType, Field};78pub fn struct_array_with_fields(9size_range: impl Into<SizeRange>,10fields: Vec<Field>,11) -> impl Strategy<Value = StructArray> {12let size_range = size_range.into();13let (min, max) = size_range.start_end_incl();14(min..=max).prop_flat_map(move |length| {15let fields = fields.clone();1617let strategies: Vec<_> = fields18.iter()19.map(|field| crate::array::proptest::array_with_dtype(field.dtype.clone(), length))20.collect();2122(23strategies,24prop_oneof![Just(None), bitmap(length).prop_map(Some)],25)26.prop_map(move |(child_arrays, validity)| {27StructArray::new(28ArrowDataType::Struct(fields.clone()),29length,30child_arrays,31validity,32)33})34})35}363738