From 81933edf92afda59ea41ec3692ab43759285b731 Mon Sep 17 00:00:00 2001 From: blake2-ppc Date: Sat, 6 Jul 2013 05:42:45 +0200 Subject: [PATCH] deque: Add tests and bench tests Add a test that excercises deque growing. Add bench tests for grow, new, add_back, add_front, to expose how slow these functions are. --- src/libextra/deque.rs | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/libextra/deque.rs b/src/libextra/deque.rs index bc4d365e4488..a07d9e6fd22a 100644 --- a/src/libextra/deque.rs +++ b/src/libextra/deque.rs @@ -256,6 +256,7 @@ mod tests { use std::cmp::Eq; use std::kinds::Copy; use std::int; + use extra::test; #[test] fn test_simple() { @@ -369,6 +370,61 @@ mod tests { assert_eq!(copy *deq.get(3), copy d); } + #[test] + fn test_add_front_grow() { + let mut deq = Deque::new(); + for int::range(0, 66) |i| { + deq.add_front(i); + } + assert_eq!(deq.len(), 66); + + for int::range(0, 66) |i| { + assert_eq!(*deq.get(i), 65 - i); + } + + let mut deq = Deque::new(); + for int::range(0, 66) |i| { + deq.add_back(i); + } + + for int::range(0, 66) |i| { + assert_eq!(*deq.get(i), i); + } + } + + #[bench] + fn bench_new(b: &mut test::BenchHarness) { + do b.iter { + let _ = Deque::new::(); + } + } + + #[bench] + fn bench_add_back(b: &mut test::BenchHarness) { + let mut deq = Deque::new(); + do b.iter { + deq.add_back(0); + } + } + + #[bench] + fn bench_add_front(b: &mut test::BenchHarness) { + let mut deq = Deque::new(); + do b.iter { + deq.add_front(0); + } + } + + #[bench] + fn bench_grow(b: &mut test::BenchHarness) { + let mut deq = Deque::new(); + do b.iter { + for 65.times { + deq.add_front(1); + } + } + } + #[deriving(Eq)] enum Taggy { One(int), Two(int, int), Three(int, int, int), }