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}