tree/
quickcheck.rs

1extern crate quickcheck;
2
3use compare::Compare;
4use self::quickcheck::{Arbitrary, Gen};
5use super::{Map, Set};
6
7impl<K, V, C> Arbitrary for Map<K, V, C>
8    where K: Arbitrary, V: Arbitrary, C: 'static + Clone + Compare<K> + Default + Send {
9
10    fn arbitrary<G: Gen>(gen: &mut G) -> Self {
11        Vec::<(K, V)>::arbitrary(gen).into_iter().collect()
12    }
13
14    fn shrink(&self) -> Box<Iterator<Item=Self>> {
15        let vec: Vec<(K, V)> = self.clone().into_iter().collect();
16        Box::new(vec.shrink().map(|vec| vec.into_iter().collect()))
17    }
18}
19
20impl<T, C> Arbitrary for Set<T, C>
21    where T: Arbitrary, C: 'static + Clone + Compare<T> + Default + Send {
22
23    fn arbitrary<G: Gen>(gen: &mut G) -> Self { Vec::<T>::arbitrary(gen).into_iter().collect() }
24
25    fn shrink(&self) -> Box<Iterator<Item=Self>> {
26        let vec: Vec<T> = self.clone().into_iter().collect();
27        Box::new(vec.shrink().map(|vec| vec.into_iter().collect()))
28    }
29}