Mercurial > lbo > hg > localmr
changeset 62:1608d4061077
Move unit tests for sort functions, too
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sat, 06 Feb 2016 00:07:01 +0000 |
parents | bcf1cc002325 |
children | 10e3e2efbc57 |
files | src/shard_merge.rs src/sort.rs |
diffstat | 2 files changed, 57 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- a/src/shard_merge.rs Fri Feb 05 23:00:59 2016 +0000 +++ b/src/shard_merge.rs Sat Feb 06 00:07:01 2016 +0000 @@ -69,6 +69,10 @@ right: Box::new(iter::empty()), left_peeked: None, right_peeked: None, + // BUG: This should not be altered when used with Map phase output. + // The map phase uses a BTreeMap in order to sort the output, and the BTM + // only uses the standard Ord implementation for strings. Should the requirements + // change, we can work around that. comparer: sort::default_generic_compare, } } @@ -222,9 +226,10 @@ use formats::lines; use std::fmt; use std::io::Write; + use sort; // Slow test! - #[test] + //#[test] fn test_merge_large_files() { let mut files = Vec::with_capacity(11); @@ -242,60 +247,4 @@ let _ = outfile.write(line.as_bytes()); } } - - use std::cmp::Ordering; - use sort; - - #[test] - fn test_sane_char_compare() { - assert_eq!(sort::sane_char_compare('a', 'B'), Ordering::Less); - assert_eq!(sort::sane_char_compare('a', 'a'), Ordering::Equal); - assert_eq!(sort::sane_char_compare('A', 'a'), Ordering::Greater); - assert_eq!(sort::sane_char_compare('B', 'a'), Ordering::Greater); - } - - #[test] - fn test_sane_string_compare() { - let cnv = String::from; - let s1 = &cnv(""); - let s2 = &cnv("0abc"); - let s3 = &cnv("123"); - let s4 = &cnv("abc"); - let s5 = &cnv("Abc"); - let s6 = &cnv("ABC"); - let s7 = &cnv("aBC"); - - assert_eq!(sort::sane_string_compare(s1, s2), Ordering::Less); - assert_eq!(sort::sane_string_compare(s2, s3), Ordering::Less); - assert_eq!(sort::sane_string_compare(s3, s2), Ordering::Greater); - assert_eq!(sort::sane_string_compare(s2, s2), Ordering::Equal); - assert_eq!(sort::sane_string_compare(s4, s5), Ordering::Less); - assert_eq!(sort::sane_string_compare(s5, s6), Ordering::Less); - assert_eq!(sort::sane_string_compare(s6, s7), Ordering::Greater); - } - - #[inline] - fn bogus_fn(o: Ordering) -> bool { - if o == Ordering::Equal { - panic!("bogus panic") - } - true - } - - // Slow test! - // #[test] - fn bench_sane_string_compare() { - let cnv = String::from; - let s1 = &cnv(""); - let s2 = &cnv("0abc"); - let s3 = &cnv("123"); - let s4 = &cnv("abc"); - let s5 = &cnv("Abc"); - - for _ in 0..50000000 { - bogus_fn(sort::sane_string_compare(s1, s2)); - bogus_fn(sort::sane_string_compare(s4, s3)); - bogus_fn(sort::sane_string_compare(s4, s5)); - } - } }
--- a/src/sort.rs Fri Feb 05 23:00:59 2016 +0000 +++ b/src/sort.rs Sat Feb 06 00:07:01 2016 +0000 @@ -82,3 +82,54 @@ // denormalize case to lower case a.to_ascii_lowercase().cmp(&b.to_ascii_lowercase()) } + +#[cfg(test)] +mod tests { + use super::*; + use std::cmp::Ordering; + + #[test] + fn test_sane_string_compare() { + let cnv = String::from; + let s1 = &cnv(""); + let s2 = &cnv("0abc"); + let s3 = &cnv("123"); + let s4 = &cnv("abc"); + let s5 = &cnv("Abc"); + let s6 = &cnv("ABC"); + let s7 = &cnv("aBC"); + + assert_eq!(sane_string_compare(s1, s2), Ordering::Less); + assert_eq!(sane_string_compare(s2, s3), Ordering::Less); + assert_eq!(sane_string_compare(s3, s2), Ordering::Greater); + assert_eq!(sane_string_compare(s2, s2), Ordering::Equal); + assert_eq!(sane_string_compare(s4, s5), Ordering::Less); + assert_eq!(sane_string_compare(s5, s6), Ordering::Less); + assert_eq!(sane_string_compare(s6, s7), Ordering::Greater); + } + + #[inline] + fn bogus_fn(o: Ordering) -> bool { + if o == Ordering::Equal { + panic!("bogus panic") + } + true + } + + // Slow test! + // #[test] + fn bench_sane_string_compare() { + let cnv = String::from; + let s1 = &cnv(""); + let s2 = &cnv("0abc"); + let s3 = &cnv("123"); + let s4 = &cnv("abc"); + let s5 = &cnv("Abc"); + + for _ in 0..50000000 { + bogus_fn(sane_string_compare(s1, s2)); + bogus_fn(sane_string_compare(s4, s3)); + bogus_fn(sane_string_compare(s4, s5)); + } + } +}