pub struct UniformArrayStrategy<S, T> { /* private fields */ }
Expand description
A Strategy
which generates fixed-size arrays containing values drawn from
an inner strategy.
T
must be an array type of length 1 to 32 whose values are produced by
strategy S
. Instances of this type are normally created by the various
uniformXX
functions in this module.
This is mainly useful when the inner strategy is not Copy
, precluding
expressing the strategy as [myStrategy; 32]
, for example.
§Example
use proptest::prelude::*;
proptest! {
#[test]
fn test_something(a in prop::array::uniform32(1u32..)) {
let unexpected = [0u32;32];
// `a` is also a [u32;32], so we can compare them directly
assert_ne!(unexpected, a);
}
}
Implementations§
Source§impl<S, T> UniformArrayStrategy<S, T>
impl<S, T> UniformArrayStrategy<S, T>
Sourcepub fn new(strategy: S) -> Self
pub fn new(strategy: S) -> Self
Directly create a UniformArrayStrategy
.
This is only intended for advanced use, since the only way to specify the array size is with the turbofish operator and explicitly naming the type of the values in the array and the strategy itself.
Prefer the uniformXX
functions at module-level unless something
precludes their use.
Trait Implementations§
Source§impl<S: Clone, T: Clone> Clone for UniformArrayStrategy<S, T>
impl<S: Clone, T: Clone> Clone for UniformArrayStrategy<S, T>
Source§fn clone(&self) -> UniformArrayStrategy<S, T>
fn clone(&self) -> UniformArrayStrategy<S, T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<S: Strategy, const N: usize> Strategy for UniformArrayStrategy<S, [S::Value; N]>
impl<S: Strategy, const N: usize> Strategy for UniformArrayStrategy<S, [S::Value; N]>
Source§type Tree = ArrayValueTree<[<S as Strategy>::Tree; N]>
type Tree = ArrayValueTree<[<S as Strategy>::Tree; N]>
Strategy
.Source§type Value = [<S as Strategy>::Value; N]
type Value = [<S as Strategy>::Value; N]
Source§fn new_tree(&self, runner: &mut TestRunner) -> NewTree<Self>
fn new_tree(&self, runner: &mut TestRunner) -> NewTree<Self>
Source§fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F>where
Self: Sized,
fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F>where
Self: Sized,
fun
. Read moreSource§fn prop_map_into<O: Debug>(self) -> MapInto<Self, O>
fn prop_map_into<O: Debug>(self) -> MapInto<Self, O>
Source§fn prop_perturb<O: Debug, F: Fn(Self::Value, TestRng) -> O>(
self,
fun: F,
) -> Perturb<Self, F>where
Self: Sized,
fn prop_perturb<O: Debug, F: Fn(Self::Value, TestRng) -> O>(
self,
fun: F,
) -> Perturb<Self, F>where
Self: Sized,
fun
, which is additionally given a random number generator. Read moreSource§fn prop_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> Flatten<Map<Self, F>>where
Self: Sized,
fn prop_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> Flatten<Map<Self, F>>where
Self: Sized,
Source§fn prop_ind_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlatten<Map<Self, F>>where
Self: Sized,
fn prop_ind_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlatten<Map<Self, F>>where
Self: Sized,
Source§fn prop_ind_flat_map2<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlattenMap<Self, F>where
Self: Sized,
fn prop_ind_flat_map2<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlattenMap<Self, F>where
Self: Sized,
prop_ind_flat_map()
, but produces 2-tuples with the input
generated from self
in slot 0 and the derived strategy in slot 1. Read moreSource§fn prop_filter<R: Into<Reason>, F: Fn(&Self::Value) -> bool>(
self,
whence: R,
fun: F,
) -> Filter<Self, F>where
Self: Sized,
fn prop_filter<R: Into<Reason>, F: Fn(&Self::Value) -> bool>(
self,
whence: R,
fun: F,
) -> Filter<Self, F>where
Self: Sized,
fun
. Read moreSource§fn prop_filter_map<F: Fn(Self::Value) -> Option<O>, O: Debug>(
self,
whence: impl Into<Reason>,
fun: F,
) -> FilterMap<Self, F>where
Self: Sized,
fn prop_filter_map<F: Fn(Self::Value) -> Option<O>, O: Debug>(
self,
whence: impl Into<Reason>,
fun: F,
) -> FilterMap<Self, F>where
Self: Sized,
fun
returns Some(value)
and rejects those where fun
returns None
. Read moreSource§fn prop_union(self, other: Self) -> Union<Self>where
Self: Sized,
fn prop_union(self, other: Self) -> Union<Self>where
Self: Sized,
Source§fn prop_recursive<R: Strategy<Value = Self::Value> + 'static, F: Fn(BoxedStrategy<Self::Value>) -> R>(
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F,
) -> Recursive<Self::Value, F>where
Self: Sized + 'static,
fn prop_recursive<R: Strategy<Value = Self::Value> + 'static, F: Fn(BoxedStrategy<Self::Value>) -> R>(
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F,
) -> Recursive<Self::Value, F>where
Self: Sized + 'static,
self
items as leaves. Read moreSource§fn prop_shuffle(self) -> Shuffle<Self>
fn prop_shuffle(self) -> Shuffle<Self>
Source§fn boxed(self) -> BoxedStrategy<Self::Value>where
Self: Sized + 'static,
fn boxed(self) -> BoxedStrategy<Self::Value>where
Self: Sized + 'static,
Strategy
so it can be passed around as a
simple trait object. Read moreimpl<S: Copy, T: Copy> Copy for UniformArrayStrategy<S, T>
Auto Trait Implementations§
impl<S, T> Freeze for UniformArrayStrategy<S, T>where
S: Freeze,
impl<S, T> RefUnwindSafe for UniformArrayStrategy<S, T>where
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<S, T> Send for UniformArrayStrategy<S, T>
impl<S, T> Sync for UniformArrayStrategy<S, T>
impl<S, T> Unpin for UniformArrayStrategy<S, T>
impl<S, T> UnwindSafe for UniformArrayStrategy<S, T>where
S: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.