Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-arrow/src/array/primitive/proptest.rs
6939 views
1
use proptest::prelude::{Arbitrary, Strategy, any_with};
2
use proptest::sample::SizeRange;
3
4
use super::PrimitiveArray;
5
use crate::bitmap::Bitmap;
6
use crate::types::NativeType;
7
8
pub fn primitive_array<T: NativeType + Arbitrary>(
9
size_range: impl Into<SizeRange>,
10
) -> impl Strategy<Value = PrimitiveArray<T>> {
11
let size_range = size_range.into();
12
proptest::prop_oneof![
13
any_with::<Vec<T>>(size_range.clone().lift()).prop_map(|v| PrimitiveArray::new(
14
T::PRIMITIVE.into(),
15
v.into(),
16
None
17
)),
18
any_with::<Vec<(bool, T)>>(size_range.lift()).prop_map(|v| {
19
let (validity, values): (Vec<bool>, Vec<T>) = v.into_iter().collect();
20
let validity = Bitmap::from_iter(validity);
21
PrimitiveArray::new(T::PRIMITIVE.into(), values.into(), Some(validity))
22
}),
23
]
24
}
25
26