From e7619a4ca36cc67e7f00833aaab216599c986db8 Mon Sep 17 00:00:00 2001 From: Vitor Enes Date: Sat, 9 Mar 2019 18:24:38 +0000 Subject: [PATCH] Add arbitrary simple shrink tests --- src/arbitrary.rs | 30 ++++++++++++++++++++++++++++++ src/multiset.rs | 4 +++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/arbitrary.rs b/src/arbitrary.rs index 71828f1..90bf495 100644 --- a/src/arbitrary.rs +++ b/src/arbitrary.rs @@ -38,3 +38,33 @@ impl Arbitrary for VClock { Box::new(vec.shrink().map(|v| VClock::from_vec(v))) } } + +#[cfg(test)] +mod test { + use crate::*; + use quickcheck::{Arbitrary, StdThreadGen}; + + #[test] + fn multiset_shrink() { + let count = shrink_count::>(); + assert!(count > 0); + } + + #[test] + fn dot_shrink() { + let count = shrink_count::>(); + assert!(count == 0); + } + + #[test] + fn vclock_shrink() { + let count = shrink_count::>(); + assert!(count > 0); + } + + fn shrink_count() -> usize { + let mut g = StdThreadGen::new(100); + let instance: T = Arbitrary::arbitrary(&mut g); + instance.shrink().count() + } +} diff --git a/src/multiset.rs b/src/multiset.rs index 4bd13d8..19e42a6 100644 --- a/src/multiset.rs +++ b/src/multiset.rs @@ -45,7 +45,9 @@ impl MultiSet { /// assert_eq!(mset.count(&17), 1); /// ``` pub fn singleton(elem: T) -> Self { - Self::from_vec(vec![(elem, 1)]) + let mut mset = Self::new(); + mset.add_elem(elem); + mset } /// Creates a new `MultiSet` from a vector of tuples (elem, elem count).