Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-arrow/src/array/struct_/proptest.rs
6939 views
1
use proptest::prelude::{Just, Strategy};
2
use proptest::prop_oneof;
3
use proptest::sample::SizeRange;
4
5
use super::StructArray;
6
use crate::bitmap::proptest::bitmap;
7
use crate::datatypes::{ArrowDataType, Field};
8
9
pub fn struct_array_with_fields(
10
size_range: impl Into<SizeRange>,
11
fields: Vec<Field>,
12
) -> impl Strategy<Value = StructArray> {
13
let size_range = size_range.into();
14
let (min, max) = size_range.start_end_incl();
15
(min..=max).prop_flat_map(move |length| {
16
let fields = fields.clone();
17
18
let strategies: Vec<_> = fields
19
.iter()
20
.map(|field| crate::array::proptest::array_with_dtype(field.dtype.clone(), length))
21
.collect();
22
23
(
24
strategies,
25
prop_oneof![Just(None), bitmap(length).prop_map(Some)],
26
)
27
.prop_map(move |(child_arrays, validity)| {
28
StructArray::new(
29
ArrowDataType::Struct(fields.clone()),
30
length,
31
child_arrays,
32
validity,
33
)
34
})
35
})
36
}
37
38