[−][src]Struct proptest::strategy::Fuse
Adaptor for Strategy
and ValueTree
which guards simplify()
and
complicate()
to avoid contract violations.
This can be used as an intermediate when the caller would otherwise need
its own separate state tracking, or as a workaround for a broken
ValueTree
implementation.
This wrapper specifically has the following effects:
-
Calling
complicate()
beforesimplify()
was ever called does nothing and returnsfalse
. -
Calling
simplify()
after it has returnedfalse
and no calls tocomplicate()
returnedtrue
does nothing and returnsfalse
. -
Calling
complicate()
after it has returnedfalse
and no calls tosimplify()
returnedtrue
does nothing and returnsfalse
.
There is also limited functionality to alter the internal state to assist in its usage as a state tracker.
Wrapping a Strategy
in Fuse
simply causes its ValueTree
to also be
wrapped in Fuse
.
While this is similar to std::iter::Fuse
, it is not exposed as a method
on Strategy
since the vast majority of proptest should never need this
functionality; it mainly concerns implementors of strategies.
Methods
impl<T> Fuse<T>
[src]
impl<T: ValueTree> Fuse<T>
[src]
pub fn may_simplify(&self) -> bool
[src]
Return whether a call to simplify()
may be productive.
Formally, this is true if one of the following holds:
simplify()
has never been called.- The most recent call to
simplify()
returnedtrue
. complicate()
has been called more recently thansimplify()
and the last call returnedtrue
.
pub fn disallow_simplify(&mut self)
[src]
Disallow any further calls to simplify()
until a call to
complicate()
returns true
.
pub fn may_complicate(&self) -> bool
[src]
Return whether a call to complicate()
may be productive.
Formally, this is true if one of the following holds:
- The most recent call to
complicate()
returnedtrue
. simplify()
has been called more recently thancomplicate()
and the last call returnedtrue
.
pub fn disallow_complicate(&mut self)
[src]
Disallow any further calls to complicate()
until a call to
simplify()
returns true
.
pub fn freeze(&mut self)
[src]
Prevent any further shrinking operations from occurring.
Trait Implementations
impl<T: Strategy> Strategy for Fuse<T>
[src]
type Tree = Fuse<T::Tree>
The value tree generated by this Strategy
.
type Value = T::Value
The type of value used by functions under test generated by this Strategy. Read more
fn new_tree(&self, runner: &mut TestRunner) -> NewTree<Self>
[src]
fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F> where
Self: Sized,
[src]
Self: Sized,
Returns a strategy which produces values transformed by the function fun
. Read more
fn prop_map_into<O: Debug>(self) -> MapInto<Self, O> where
Self: Sized,
Self::Value: Into<O>,
[src]
Self: Sized,
Self::Value: Into<O>,
Returns a strategy which produces values of type O
by transforming Self
with Into<O>
. Read more
fn prop_perturb<O: Debug, F: Fn(Self::Value, TestRng) -> O>(
self,
fun: F
) -> Perturb<Self, F> where
Self: Sized,
[src]
self,
fun: F
) -> Perturb<Self, F> where
Self: Sized,
Returns a strategy which produces values transformed by the function fun
, which is additionally given a random number generator. Read more
fn prop_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F
) -> Flatten<Map<Self, F>> where
Self: Sized,
[src]
self,
fun: F
) -> Flatten<Map<Self, F>> where
Self: Sized,
Maps values produced by this strategy into new strategies and picks values from those strategies. Read more
fn prop_ind_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F
) -> IndFlatten<Map<Self, F>> where
Self: Sized,
[src]
self,
fun: F
) -> IndFlatten<Map<Self, F>> where
Self: Sized,
Maps values produced by this strategy into new strategies and picks values from those strategies while considering the new strategies to be independent. Read more
fn prop_ind_flat_map2<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F
) -> IndFlattenMap<Self, F> where
Self: Sized,
[src]
self,
fun: F
) -> IndFlattenMap<Self, F> where
Self: Sized,
Similar to 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 more
fn prop_filter<R: Into<Reason>, F: Fn(&Self::Value) -> bool>(
self,
whence: R,
fun: F
) -> Filter<Self, F> where
Self: Sized,
[src]
self,
whence: R,
fun: F
) -> Filter<Self, F> where
Self: Sized,
Returns a strategy which only produces values accepted by fun
. Read more
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,
[src]
self,
whence: impl Into<Reason>,
fun: F
) -> FilterMap<Self, F> where
Self: Sized,
Returns a strategy which only produces transformed values where fun
returns Some(value)
and rejects those where fun
returns None
. Read more
fn prop_union(self, other: Self) -> Union<Self> where
Self: Sized,
[src]
Self: Sized,
Returns a strategy which picks uniformly from self
and other
. Read more
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,
[src]
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F
) -> Recursive<Self::Value, F> where
Self: Sized + 'static,
Generate a recursive structure with self
items as leaves. Read more
fn prop_shuffle(self) -> Shuffle<Self> where
Self: Sized,
Self::Value: Shuffleable,
[src]
Self: Sized,
Self::Value: Shuffleable,
Shuffle the contents of the values produced by this strategy. Read more
fn boxed(self) -> BoxedStrategy<Self::Value> where
Self: Sized + 'static,
[src]
Self: Sized + 'static,
Erases the type of this Strategy
so it can be passed around as a simple trait object. Read more
fn sboxed(self) -> SBoxedStrategy<Self::Value> where
Self: Sized + Send + Sync + 'static,
[src]
Self: Sized + Send + Sync + 'static,
Erases the type of this Strategy
so it can be passed around as a simple trait object. Read more
fn no_shrink(self) -> NoShrink<Self> where
Self: Sized,
[src]
Self: Sized,
Wraps this strategy to prevent values from being subject to shrinking. Read more
impl<T: ValueTree> ValueTree for Fuse<T>
[src]
type Value = T::Value
The type of the value produced by this ValueTree
.
fn current(&self) -> T::Value
[src]
fn simplify(&mut self) -> bool
[src]
fn complicate(&mut self) -> bool
[src]
impl<T: Debug> Debug for Fuse<T>
[src]
impl<T: Copy> Copy for Fuse<T>
[src]
impl<T: Clone> Clone for Fuse<T>
[src]
Auto Trait Implementations
Blanket Implementations
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,