proptest_arbitrary/_std/
option.rs

1//! Arbitrary implementations for `std::option`.
2
3use super::*;
4use std::option as opt;
5use proptest::option::{self, OptionStrategy};
6
7arbitrary!(
8    [A: Arbitrary<'a>] opt::Option<A>,
9    OptionStrategy<A::Strategy>,
10    product_type![Probability, A::Parameters];
11    args => {
12        let product_unpack![prob, a] = args;
13        option::weighted(prob.into(), any_with::<A>(a))
14    }
15);
16
17arbitrary!([A: Arbitrary<'a>] opt::IntoIter<A>,
18    SMapped<'a, opt::Option<A>, Self>,
19    <opt::Option<A> as Arbitrary<'a>>::Parameters;
20    args => any_with_smap(args, Option::into_iter));
21
22#[cfg(feature = "unstable")]
23arbitrary!(opt::NoneError; opt::NoneError);
24
25#[cfg(test)]
26mod test {
27    no_panic_test!(
28        option      => Option<u8>,
29        option_iter => opt::IntoIter<u8>
30    );
31
32    #[cfg(feature = "unstable")]
33    no_panic_test!(
34        none_error => opt::NoneError
35    );
36}