4 use test::{black_box, Bencher};
7 fn len(&self) -> usize {
8 let (mut elem, mut count) = (self.head.as_ref(), 0);
9 while let Some(ref e) = elem {
11 elem = e.next.as_deref();
18 fn test_contains_and_insert() {
19 fn do_insert(i: u32) -> bool {
23 let mut list = TinyList::new();
28 assert!(list.contains(&j));
30 assert!(!list.contains(&j));
34 assert!(!list.contains(&i));
38 assert!(list.contains(&i));
44 fn test_remove_first() {
45 let mut list = TinyList::new();
50 assert_eq!(list.len(), 4);
52 assert!(list.remove(&4));
53 assert!(!list.contains(&4));
55 assert_eq!(list.len(), 3);
56 assert!(list.contains(&1));
57 assert!(list.contains(&2));
58 assert!(list.contains(&3));
62 fn test_remove_last() {
63 let mut list = TinyList::new();
68 assert_eq!(list.len(), 4);
70 assert!(list.remove(&1));
71 assert!(!list.contains(&1));
73 assert_eq!(list.len(), 3);
74 assert!(list.contains(&2));
75 assert!(list.contains(&3));
76 assert!(list.contains(&4));
80 fn test_remove_middle() {
81 let mut list = TinyList::new();
86 assert_eq!(list.len(), 4);
88 assert!(list.remove(&2));
89 assert!(!list.contains(&2));
91 assert_eq!(list.len(), 3);
92 assert!(list.contains(&1));
93 assert!(list.contains(&3));
94 assert!(list.contains(&4));
98 fn test_remove_single() {
99 let mut list = TinyList::new();
101 assert_eq!(list.len(), 1);
103 assert!(list.remove(&1));
104 assert!(!list.contains(&1));
106 assert_eq!(list.len(), 0);
110 fn bench_insert_empty(b: &mut Bencher) {
112 let mut list = black_box(TinyList::new());
119 fn bench_insert_one(b: &mut Bencher) {
121 let mut list = black_box(TinyList::new_single(0));
128 fn bench_contains_empty(b: &mut Bencher) {
129 b.iter(|| black_box(TinyList::new()).contains(&1));
133 fn bench_contains_unknown(b: &mut Bencher) {
134 b.iter(|| black_box(TinyList::new_single(0)).contains(&1));
138 fn bench_contains_one(b: &mut Bencher) {
139 b.iter(|| black_box(TinyList::new_single(1)).contains(&1));
143 fn bench_remove_empty(b: &mut Bencher) {
144 b.iter(|| black_box(TinyList::new()).remove(&1));
148 fn bench_remove_unknown(b: &mut Bencher) {
149 b.iter(|| black_box(TinyList::new_single(0)).remove(&1));
153 fn bench_remove_one(b: &mut Bencher) {
154 b.iter(|| black_box(TinyList::new_single(1)).remove(&1));