benchlib/
lib.rs

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}