MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / arb_array

Function arb_array

src/repr/src/scalar.rs:5516–5543  ·  view source on GitHub ↗
(element_strategy: BoxedStrategy<PropDatum>)

Source from the content-addressed store, hash-verified

5514
5515#[cfg(any(test, feature = "proptest"))]
5516fn arb_array(element_strategy: BoxedStrategy<PropDatum>) -> BoxedStrategy<PropArray> {
5517 // Elements in Arrays can always be Null.
5518 let element_strategy = Union::new_weighted(vec![
5519 (20, element_strategy),
5520 (1, Just(PropDatum::Null).boxed()),
5521 ]);
5522
5523 prop::collection::vec(
5524 arb_array_dimension(),
5525 1..usize::from(crate::adt::array::MAX_ARRAY_DIMENSIONS),
5526 )
5527 .prop_flat_map(move |dimensions| {
5528 let n_elts: usize = dimensions.iter().map(|d| d.length).product();
5529 (
5530 Just(dimensions),
5531 prop::collection::vec(element_strategy.clone(), n_elts),
5532 )
5533 })
5534 .prop_map(|(dimensions, elements)| {
5535 let element_datums: Vec<Datum<'_>> = elements.iter().map(|pd| pd.into()).collect();
5536 let mut row = Row::default();
5537 row.packer()
5538 .try_push_array(&dimensions, element_datums)
5539 .unwrap();
5540 PropArray(row, elements)
5541 })
5542 .boxed()
5543}
5544
5545#[derive(Debug, PartialEq, Clone)]
5546#[cfg(any(test, feature = "proptest"))]

Callers 1

arb_datum_for_scalarFunction · 0.85

Calls 11

PropArrayClass · 0.85
boxedMethod · 0.80
unwrapMethod · 0.80
try_push_arrayMethod · 0.80
packerMethod · 0.80
arb_array_dimensionFunction · 0.70
productMethod · 0.45
mapMethod · 0.45
iterMethod · 0.45
cloneMethod · 0.45
collectMethod · 0.45

Tested by

no test coverage detected