Struct proptest::strategy::Fuse [−][src]
#[must_use = "strategies do nothing unless used"]pub struct Fuse<T> { /* fields omitted */ }
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 returnedfalseand no calls tocomplicate()returnedtruedoes nothing and returnsfalse. -
Calling
complicate()after it has returnedfalseand no calls tosimplify()returnedtruedoes 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> Fuse<T>impl<T: ValueTree> Fuse<T>[src]
impl<T: ValueTree> Fuse<T>pub fn may_simplify(&self) -> bool[src]
pub fn may_simplify(&self) -> boolReturn 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]
pub fn disallow_simplify(&mut self)Disallow any further calls to simplify() until a call to
complicate() returns true.
pub fn may_complicate(&self) -> bool[src]
pub fn may_complicate(&self) -> boolReturn 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]
pub fn disallow_complicate(&mut self)Disallow any further calls to complicate() until a call to
simplify() returns true.
pub fn freeze(&mut self)[src]
pub fn freeze(&mut self)Prevent any further shrinking operations from occurring.
Trait Implementations
impl<T: Debug> Debug for Fuse<T>[src]
impl<T: Debug> Debug for Fuse<T>fn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl<T: Clone> Clone for Fuse<T>[src]
impl<T: Clone> Clone for Fuse<T>fn clone(&self) -> Fuse<T>[src]
fn clone(&self) -> Fuse<T>Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)Performs copy-assignment from source. Read more
impl<T: Copy> Copy for Fuse<T>[src]
impl<T: Copy> Copy for Fuse<T>impl<T: Strategy> Strategy for Fuse<T>[src]
impl<T: Strategy> Strategy for Fuse<T>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 new_tree(&self, runner: &mut TestRunner) -> NewTree<Self>Generate a new value tree from the given runner. Read more
fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F> where
Self: Sized, [src]
fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F> where
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]
fn prop_map_into<O: Debug>(self) -> MapInto<Self, O> where
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]
fn prop_perturb<O: Debug, F: Fn(Self::Value, TestRng) -> O>(
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]
fn prop_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
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]
fn prop_ind_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
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]
fn prop_ind_flat_map2<S: Strategy, F: Fn(Self::Value) -> S>(
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]
fn prop_filter<R: Into<Reason>, F: Fn(&Self::Value) -> bool>(
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]
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, 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]
fn prop_union(self, other: Self) -> Union<Self> where
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]
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, Generate a recursive structure with self items as leaves. Read more
fn prop_shuffle(self) -> Shuffle<Self> where
Self: Sized,
Self::Value: Shuffleable, [src]
fn prop_shuffle(self) -> Shuffle<Self> where
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]
fn boxed(self) -> BoxedStrategy<Self::Value> where
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]
fn sboxed(self) -> SBoxedStrategy<Self::Value> where
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]
fn no_shrink(self) -> NoShrink<Self> where
Self: Sized, Wraps this strategy to prevent values from being subject to shrinking. Read more
impl<T: ValueTree> ValueTree for Fuse<T>[src]
impl<T: ValueTree> ValueTree for Fuse<T>type Value = T::Value
The type of the value produced by this ValueTree.
fn current(&self) -> T::Value[src]
fn current(&self) -> T::ValueReturns the current value.
fn simplify(&mut self) -> bool[src]
fn simplify(&mut self) -> boolAttempts to simplify the current value. Notionally, this sets the "high" value to the current value, and the current value to a "halfway point" between high and low, rounding towards low. Read more
fn complicate(&mut self) -> bool[src]
fn complicate(&mut self) -> boolAttempts to partially undo the last simplification. Notionally, this sets the "low" value to one plus the current value, and the current value to a "halfway point" between high and the new low, rounding towards low. Read more