summaryrefslogtreecommitdiffstats
path: root/vendor/proptest/src/arbitrary/_core/option.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/proptest/src/arbitrary/_core/option.rs')
-rw-r--r--vendor/proptest/src/arbitrary/_core/option.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/proptest/src/arbitrary/_core/option.rs b/vendor/proptest/src/arbitrary/_core/option.rs
new file mode 100644
index 000000000..8b93545c8
--- /dev/null
+++ b/vendor/proptest/src/arbitrary/_core/option.rs
@@ -0,0 +1,57 @@
+//-
+// Copyright 2017, 2018 The proptest developers
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Arbitrary implementations for `std::option`.
+
+use crate::std_facade::string;
+use core::ops::RangeInclusive;
+use core::option as opt;
+
+use crate::arbitrary::*;
+use crate::option::{weighted, OptionStrategy, Probability};
+use crate::strategy::statics::static_map;
+use crate::strategy::*;
+
+arbitrary!(Probability, MapInto<RangeInclusive<f64>, Self>;
+ (0.0..=1.0).prop_map_into()
+);
+
+// These are Option<AnUninhabitedType> impls:
+
+arbitrary!(Option<string::ParseError>; None);
+#[cfg(feature = "unstable")]
+arbitrary!(Option<!>; None);
+
+arbitrary!([A: Arbitrary] opt::Option<A>, OptionStrategy<A::Strategy>,
+ product_type![Probability, A::Parameters];
+ args => {
+ let product_unpack![prob, a] = args;
+ weighted(prob, any_with::<A>(a))
+ }
+);
+
+lift1!([] Option<A>, Probability; base, prob => weighted(prob, base));
+
+arbitrary!([A: Arbitrary] opt::IntoIter<A>, SMapped<Option<A>, Self>,
+ <Option<A> as Arbitrary>::Parameters;
+ args => static_map(any_with::<Option<A>>(args), Option::into_iter));
+
+lift1!(['static] opt::IntoIter<A>, Probability;
+ base, prob => weighted(prob, base).prop_map(Option::into_iter)
+);
+
+#[cfg(test)]
+mod test {
+ no_panic_test!(
+ probability => Probability,
+ option => Option<u8>,
+ option_iter => opt::IntoIter<u8>,
+ option_parse_error => Option<string::ParseError>
+ );
+}