| 123 | |
| 124 | #[test] |
| 125 | fn index_max_pq() { |
| 126 | fn queue(i: &str) -> Queue<&str> { |
| 127 | let mut queue = Queue::default(); |
| 128 | for s in i.split_whitespace() { |
| 129 | queue.enqueue(s); |
| 130 | } |
| 131 | queue |
| 132 | } |
| 133 | let mut inputs = vec![ |
| 134 | queue("A B C F G I I Z"), |
| 135 | queue("B D H P Q Q"), |
| 136 | queue("A B E F J N"), |
| 137 | ]; |
| 138 | |
| 139 | // init |
| 140 | let mut pq = IndexPQ::new_max_pq(inputs.len()); |
| 141 | for i in 0..inputs.len() { |
| 142 | if let Some(v) = inputs[i].dequeue() { |
| 143 | let _ = pq.enqueue(i, v); |
| 144 | } |
| 145 | } |
| 146 | |
| 147 | let mut vec = Vec::new(); |
| 148 | while !pq.is_empty() { |
| 149 | vec.push(pq.peek_key().unwrap().to_string()); |
| 150 | let i = pq.dequeue().unwrap(); |
| 151 | if let Some(v) = inputs[i as usize].dequeue() { |
| 152 | let _ = pq.enqueue(i as usize, v); |
| 153 | } |
| 154 | } |
| 155 | assert_eq!("B D H P Q Q A B E F J N A B C F G I I Z", vec.join(" ")); |
| 156 | } |
| 157 | |
| 158 | #[test] |
| 159 | fn quick_find_uf() { |