[go: up one dir, main page]

imbl/
quickcheck.rs

1use crate::{
2    shared_ptr::SharedPointerKind, GenericHashMap, GenericHashSet, GenericOrdMap, GenericOrdSet,
3    GenericVector,
4};
5use ::quickcheck::{Arbitrary, Gen};
6use std::hash::{BuildHasher, Hash};
7use std::iter::FromIterator;
8
9impl<A: Arbitrary + Sync + Clone, P: SharedPointerKind + 'static> Arbitrary
10    for GenericVector<A, P>
11{
12    fn arbitrary(g: &mut Gen) -> Self {
13        GenericVector::from_iter(Vec::<A>::arbitrary(g))
14    }
15}
16
17impl<
18        K: Ord + Clone + Arbitrary + Sync,
19        V: Clone + Arbitrary + Sync,
20        P: SharedPointerKind + 'static,
21    > Arbitrary for GenericOrdMap<K, V, P>
22{
23    fn arbitrary(g: &mut Gen) -> Self {
24        GenericOrdMap::from_iter(Vec::<(K, V)>::arbitrary(g))
25    }
26}
27
28impl<A: Ord + Clone + Arbitrary + Sync, P: SharedPointerKind + 'static> Arbitrary
29    for GenericOrdSet<A, P>
30{
31    fn arbitrary(g: &mut Gen) -> Self {
32        GenericOrdSet::from_iter(Vec::<A>::arbitrary(g))
33    }
34}
35
36impl<A, S, P> Arbitrary for GenericHashSet<A, S, P>
37where
38    A: Hash + Eq + Arbitrary + Sync,
39    S: BuildHasher + Clone + Default + Send + Sync + 'static,
40    P: SharedPointerKind + 'static,
41{
42    fn arbitrary(g: &mut Gen) -> Self {
43        GenericHashSet::from_iter(Vec::<A>::arbitrary(g))
44    }
45}
46
47impl<K, V, S, P> Arbitrary for GenericHashMap<K, V, S, P>
48where
49    K: Hash + Eq + Arbitrary + Sync,
50    V: Arbitrary + Sync,
51    S: BuildHasher + Clone + Default + Send + Sync + 'static,
52    P: SharedPointerKind + 'static,
53{
54    fn arbitrary(g: &mut Gen) -> Self {
55        GenericHashMap::from(Vec::<(K, V)>::arbitrary(g))
56    }
57}