From 5758b6e22b8ce993151af0bbd670e4f027299ed2 Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Mon, 23 Apr 2018 20:31:02 -0700 Subject: [PATCH] Factor out the gold testing infrastructure so we can use it elsewhere. --- src/cryptonum/gold_tests.rs | 59 ++----------------------------------- src/lib.rs | 3 ++ src/testing.rs | 57 +++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 57 deletions(-) create mode 100644 src/testing.rs diff --git a/src/cryptonum/gold_tests.rs b/src/cryptonum/gold_tests.rs index add1dba..e5f3d43 100644 --- a/src/cryptonum/gold_tests.rs +++ b/src/cryptonum/gold_tests.rs @@ -1,60 +1,5 @@ -use std::collections::HashMap; -use std::fs::File; -use std::io::Read; -use std::str::Lines; - -use cryptonum::unsigned::{UCN,BarrettUCN}; -use cryptonum::signed::SCN; - -fn next_value_set(line: &str) -> (String, SCN) -{ - assert!(line.is_ascii()); - assert_eq!(": ", &line[1..3]); - let key = String::from(&line[0..1]); - let val = SCN::from_str(&line[3..]); - (key, val) -} - -fn next_test_case(contents: &mut Lines, lines: usize) -> - Option> -{ - let mut res = HashMap::new(); - let mut count = 0; - - while count < lines { - let line = contents.next()?; - let (key, val) = next_value_set(line); - res.insert(key, val); - count += 1; - } - - Some(res) -} - -fn make_unsigned(m: HashMap) -> HashMap -{ - let mut res: HashMap = HashMap::new(); - - for (key, sval) in m.iter() { - assert!(!sval.is_negative()); - res.insert(key.clone(), sval.clone().into()); - } - - res -} - -fn run_test(fname: &'static str, i: usize, f: F) - where F: Fn(HashMap) -{ - let mut file = File::open(fname).unwrap(); - let mut contents = String::new(); - file.read_to_string(&mut contents).unwrap(); - let mut iter = contents.lines(); - - while let Some(scase) = next_test_case(&mut iter, i) { - f(scase); - } -} +use cryptonum::unsigned::BarrettUCN; +use testing::{make_unsigned,run_test}; #[test] fn unsigned_sum_test() diff --git a/src/lib.rs b/src/lib.rs index ec602e8..a4ef65f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,6 +27,9 @@ pub mod cryptonum; /// key material there. pub mod rsa; +#[cfg(test)] +mod testing; + #[cfg(test)] mod test { } diff --git a/src/testing.rs b/src/testing.rs new file mode 100644 index 0000000..3caa9aa --- /dev/null +++ b/src/testing.rs @@ -0,0 +1,57 @@ +use cryptonum::{SCN,UCN}; +use std::collections::HashMap; +use std::fs::File; +use std::io::Read; +use std::str::Lines; + +fn next_value_set(line: &str) -> (String, SCN) +{ + assert!(line.is_ascii()); + assert_eq!(": ", &line[1..3]); + let key = String::from(&line[0..1]); + let val = SCN::from_str(&line[3..]); + (key, val) +} + +fn next_test_case(contents: &mut Lines, lines: usize) -> + Option> +{ + let mut res = HashMap::new(); + let mut count = 0; + + while count < lines { + let line = contents.next()?; + let (key, val) = next_value_set(line); + res.insert(key, val); + count += 1; + } + + Some(res) +} + +pub fn make_unsigned(m: HashMap) -> HashMap +{ + let mut res: HashMap = HashMap::new(); + + for (key, sval) in m.iter() { + assert!(!sval.is_negative()); + res.insert(key.clone(), sval.clone().into()); + } + + res +} + +pub fn run_test(fname: &'static str, i: usize, f: F) + where F: Fn(HashMap) +{ + let mut file = File::open(fname).unwrap(); + let mut contents = String::new(); + file.read_to_string(&mut contents).unwrap(); + let mut iter = contents.lines(); + + while let Some(scase) = next_test_case(&mut iter, i) { + f(scase); + } +} + +