Skip to content

Commit 81933ed

Browse files
author
blake2-ppc
committed
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.
1 parent 5a37cf8 commit 81933ed

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

src/libextra/deque.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ mod tests {
256256
use std::cmp::Eq;
257257
use std::kinds::Copy;
258258
use std::int;
259+
use extra::test;
259260

260261
#[test]
261262
fn test_simple() {
@@ -369,6 +370,61 @@ mod tests {
369370
assert_eq!(copy *deq.get(3), copy d);
370371
}
371372

373+
#[test]
374+
fn test_add_front_grow() {
375+
let mut deq = Deque::new();
376+
for int::range(0, 66) |i| {
377+
deq.add_front(i);
378+
}
379+
assert_eq!(deq.len(), 66);
380+
381+
for int::range(0, 66) |i| {
382+
assert_eq!(*deq.get(i), 65 - i);
383+
}
384+
385+
let mut deq = Deque::new();
386+
for int::range(0, 66) |i| {
387+
deq.add_back(i);
388+
}
389+
390+
for int::range(0, 66) |i| {
391+
assert_eq!(*deq.get(i), i);
392+
}
393+
}
394+
395+
#[bench]
396+
fn bench_new(b: &mut test::BenchHarness) {
397+
do b.iter {
398+
let _ = Deque::new::<u64>();
399+
}
400+
}
401+
402+
#[bench]
403+
fn bench_add_back(b: &mut test::BenchHarness) {
404+
let mut deq = Deque::new();
405+
do b.iter {
406+
deq.add_back(0);
407+
}
408+
}
409+
410+
#[bench]
411+
fn bench_add_front(b: &mut test::BenchHarness) {
412+
let mut deq = Deque::new();
413+
do b.iter {
414+
deq.add_front(0);
415+
}
416+
}
417+
418+
#[bench]
419+
fn bench_grow(b: &mut test::BenchHarness) {
420+
let mut deq = Deque::new();
421+
do b.iter {
422+
for 65.times {
423+
deq.add_front(1);
424+
}
425+
}
426+
}
427+
372428
#[deriving(Eq)]
373429
enum Taggy { One(int), Two(int, int), Three(int, int, int), }
374430

0 commit comments

Comments
 (0)