[−][src]Struct un_algebra::tests::config::prop::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> Fuse<T> where
T: ValueTree,
[src]
T: ValueTree,
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> ValueTree for Fuse<T> where
T: ValueTree,
[src]
T: ValueTree,
type Value = <T as ValueTree>::Value
The type of the value produced by this ValueTree
.
fn current(&self) -> <T as ValueTree>::Value
[src]
fn simplify(&mut self) -> bool
[src]
fn complicate(&mut self) -> bool
[src]
impl<T> Debug for Fuse<T> where
T: Debug,
[src]
T: Debug,
impl<T> Strategy for Fuse<T> where
T: Strategy,
[src]
T: Strategy,
type Tree = Fuse<<T as Strategy>::Tree>
The value tree generated by this Strategy
.
type Value = <T as Strategy>::Value
The type of value used by functions under test generated by this Strategy. Read more
fn new_tree(
&self,
runner: &mut TestRunner
) -> Result<<Fuse<T> as Strategy>::Tree, Reason>
[src]
&self,
runner: &mut TestRunner
) -> Result<<Fuse<T> as Strategy>::Tree, Reason>
fn prop_map<O, F>(self, fun: F) -> Map<Self, F> where
F: Fn(Self::Value) -> O,
O: Debug,
[src]
F: Fn(Self::Value) -> O,
O: Debug,
fn prop_map_into<O>(self) -> MapInto<Self, O> where
O: Debug,
Self::Value: Into<O>,
[src]
O: Debug,
Self::Value: Into<O>,
fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F> where
F: Fn(Self::Value, TestRng) -> O,
O: Debug,
[src]
F: Fn(Self::Value, TestRng) -> O,
O: Debug,
fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>> where
F: Fn(Self::Value) -> S,
S: Strategy,
[src]
F: Fn(Self::Value) -> S,
S: Strategy,
fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>> where
F: Fn(Self::Value) -> S,
S: Strategy,
[src]
F: Fn(Self::Value) -> S,
S: Strategy,
fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F> where
F: Fn(Self::Value) -> S,
S: Strategy,
[src]
F: Fn(Self::Value) -> S,
S: Strategy,
fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F> where
F: Fn(&Self::Value) -> bool,
R: Into<Reason>,
[src]
F: Fn(&Self::Value) -> bool,
R: Into<Reason>,
fn prop_filter_map<F, O>(
self,
whence: impl Into<Reason>,
fun: F
) -> FilterMap<Self, F> where
F: Fn(Self::Value) -> Option<O>,
O: Debug,
[src]
self,
whence: impl Into<Reason>,
fun: F
) -> FilterMap<Self, F> where
F: Fn(Self::Value) -> Option<O>,
O: Debug,
fn prop_union(self, other: Self) -> Union<Self>
[src]
fn prop_recursive<R, F>(
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F
) -> Recursive<Self::Value, F> where
F: Fn(BoxedStrategy<Self::Value>) -> R,
R: 'static + Strategy<Value = Self::Value>,
Self: 'static,
[src]
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F
) -> Recursive<Self::Value, F> where
F: Fn(BoxedStrategy<Self::Value>) -> R,
R: 'static + Strategy<Value = Self::Value>,
Self: 'static,
fn prop_shuffle(self) -> Shuffle<Self> where
Self::Value: Shuffleable,
[src]
Self::Value: Shuffleable,
fn boxed(self) -> BoxedStrategy<Self::Value> where
Self: 'static,
[src]
Self: 'static,
fn sboxed(self) -> SBoxedStrategy<Self::Value> where
Self: Send + Sync + 'static,
[src]
Self: Send + Sync + 'static,
fn no_shrink(self) -> NoShrink<Self>
[src]
impl<T> Copy for Fuse<T> where
T: Copy,
[src]
T: Copy,
impl<T> Clone for Fuse<T> where
T: Clone,
[src]
T: Clone,
Auto Trait Implementations
impl<T> Send for Fuse<T> where
T: Send,
T: Send,
impl<T> Sync for Fuse<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Fuse<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for Fuse<T> where
T: UnwindSafe,
T: UnwindSafe,
impl<T> RefUnwindSafe for Fuse<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
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> 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<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,