pub mod bool;
mod chain;
pub mod char;
mod filter;
pub mod fixed;
mod float;
mod float_parts;
mod from_fn;
mod integer;
pub mod isize;
mod map;
mod mix;
mod of_size;
mod other_shrink;
mod pick;
pub mod sized;
pub mod string;
pub mod vec;
mod zip;
use crate::BoxGen;
use crate::Seed;
pub use chain::chain;
pub use filter::filter;
pub use from_fn::from_fn;
pub use from_fn::from_fn_boxed;
pub use map::map;
pub use mix::mix_evenly;
pub use mix::mix_with_ratio;
pub use of_size::of_size;
pub use other_shrink::other_shrinker;
pub use pick::pick_evenly;
pub use pick::pick_with_ratio;
pub use zip::zip;
pub fn seeds() -> BoxGen<Seed> {
crate::gens::u64::completely_random(..)
}
macro_rules! integer_module {
($name:ident) => {
pub mod $name {
use crate::BoxGen;
use std::ops::RangeBounds;
pub fn any() -> BoxGen<$name> {
ranged(..)
}
pub fn ranged<B>(bounds: B) -> BoxGen<$name>
where
B: RangeBounds<$name>,
{
super::integer::ranged(bounds)
}
pub fn completely_random<B>(bounds: B) -> BoxGen<$name>
where
B: RangeBounds<$name>,
{
super::integer::completely_random(bounds)
}
}
};
}
integer_module!(i8);
integer_module!(i16);
integer_module!(i32);
integer_module!(i64);
integer_module!(i128);
integer_module!(u8);
integer_module!(u16);
integer_module!(u32);
integer_module!(u64);
integer_module!(u128);
integer_module!(usize);
macro_rules! float_module {
($name:ident) => {
pub mod $name {
use crate::BoxGen;
use std::ops::RangeBounds;
pub fn any() -> BoxGen<$name> {
super::float::any()
}
pub fn number() -> BoxGen<$name> {
super::float::number()
}
pub fn positive() -> BoxGen<$name> {
super::float::positive()
}
pub fn negative() -> BoxGen<$name> {
super::float::negative()
}
pub fn finite() -> BoxGen<$name> {
super::float::finite()
}
pub fn zero_to_one() -> BoxGen<$name> {
super::float::zero_to_one()
}
pub fn ranged<B>(bounds: B) -> BoxGen<$name>
where
B: RangeBounds<$name>,
{
super::float::ranged(bounds)
}
pub fn completely_random<B>(bounds: B) -> BoxGen<$name>
where
B: RangeBounds<$name>,
{
super::float::completely_random_range(bounds)
}
}
};
}
float_module!(f32);
float_module!(f64);