1pub mod benching;
2
3#[cfg(test)]
4mod tests {
5 use super::benching::Bencher;
6 use crate::benching::BENCH_FILE_HEAD;
7 use std::fs::{read_to_string, remove_file, File};
8 use std::io::BufWriter;
9
10 #[test]
11 fn it_works() {
12 let mut bencher = Bencher::new();
13 let mut executed = false;
14 bencher.bench("lol", || executed = true);
15 assert!(executed)
16 }
17
18 #[test]
19 fn it_benches_specifically() {
20 let mut bencher = Bencher::new();
21 let mut count = 0;
22 bencher.set_iterations(243);
23 bencher.bench("lol", || count += 1);
24 assert_eq!(count, 243);
25 }
26
27 #[test]
28 fn it_benches_automatically() {
29 let mut bencher = Bencher::new();
30 let mut count = 0;
31 bencher.set_iterations(0).set_max_iterations(1000);
32 bencher.bench("lol", || count += 1);
33 assert!(count > 1);
34 }
35
36 #[test]
37 fn it_reports_differences() {
38 let mut bencher = Bencher::new();
39 bencher.bench("lol", || 3 * 4);
40 bencher.bench("lol2", || 35 * 4);
41 bencher.compare();
42 }
43
44 #[test]
45 fn it_prints_settings() {
46 let mut bencher = Bencher::new();
47 bencher.print_settings();
48 bencher.set_iterations(0);
49 bencher.print_settings();
50 }
51
52 #[test]
53 fn it_writes_into_files() {
54 let mut bencher = Bencher::new();
55 let file = File::create("test.tsv").unwrap();
56 bencher
57 .write_output_to(BufWriter::new(file))
58 .bench("closure", || {})
59 .flush()
60 .unwrap();
61 let contents = read_to_string("test.tsv").unwrap();
62 assert!(contents.contains(BENCH_FILE_HEAD));
63 assert!(contents.len() > BENCH_FILE_HEAD.len());
64 remove_file("test.tsv").unwrap();
65 }
66}