(element_strategy: BoxedStrategy<PropDatum>)
| 5514 | |
| 5515 | #[cfg(any(test, feature = "proptest"))] |
| 5516 | fn 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"))] |
no test coverage detected