checkito 5.0.0

A safe, efficient and simple QuickCheck-inspired library to generate shrinkable random data mainly oriented towards generative/property/exploratory testing.
Documentation
pub mod common;
use common::*;
use std::{
    collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList, VecDeque},
    rc::Rc,
    sync::Arc,
};

#[test]
fn collections_have_full_generate() {
    assert!(Box::<[u8]>::generator().check(|_| true).is_none());
    assert!(Rc::<[u8]>::generator().check(|_| true).is_none());
    assert!(Arc::<[u8]>::generator().check(|_| true).is_none());
    assert!(Vec::<u8>::generator().check(|_| true).is_none());
    assert!(VecDeque::<u8>::generator().check(|_| true).is_none());
    assert!(LinkedList::<u8>::generator().check(|_| true).is_none());
    assert!(BinaryHeap::<u8>::generator().check(|_| true).is_none());
    assert!(HashSet::<u8>::generator().check(|_| true).is_none());
    assert!(BTreeSet::<u8>::generator().check(|_| true).is_none());
    assert!(HashMap::<u8, u8>::generator().check(|_| true).is_none());
    assert!(BTreeMap::<u8, u8>::generator().check(|_| true).is_none());
}

#[cfg(feature = "check")]
mod check {
    use super::*;

    #[check(0usize..=100)]
    fn vec_collect_has_requested_count(count: usize) {
        let vec = (0u8..=u8::MAX).collect_with::<_, Vec<_>>(count).sample(1.0);
        assert_eq!(vec.len(), count);
    }

    #[check(0usize..=100)]
    fn vecdeque_collect_has_requested_count(count: usize) {
        let deque = (0u8..=u8::MAX)
            .collect_with::<_, VecDeque<_>>(count)
            .sample(1.0);
        assert_eq!(deque.len(), count);
    }

    #[check(0usize..=100)]
    fn hashset_collect_has_at_most_requested_count(count: usize) {
        let set = (0u8..=u8::MAX)
            .collect_with::<_, HashSet<_>>(count)
            .sample(1.0);
        assert!(set.len() <= count);
    }
}