diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-03-05 09:35:45 -0500 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-03-05 09:35:45 -0500 |
| commit | f7ae9b1759501c38e80bc912f9c39bf6660fd15d (patch) | |
| tree | 311509755dff998abf320a0a191c9968dfe959e3 /src | |
| parent | 65986ba0c0b20803dd02a5b0b71e269cbeb8336d (diff) | |
trie: fix each_reverse
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/trie.rs | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/libcore/trie.rs b/src/libcore/trie.rs index c8faccf28f2..33062dd97c9 100644 --- a/src/libcore/trie.rs +++ b/src/libcore/trie.rs @@ -230,7 +230,7 @@ impl<T> TrieNode<T> { pure fn each_reverse(&self, f: fn(&(uint, &self/T)) -> bool) { for uint::range_rev(self.children.len(), 0) |idx| { match self.children[idx - 1] { - Internal(ref x) => x.each(f), + Internal(ref x) => x.each_reverse(f), External(k, ref v) => if !f(&(k, v)) { return }, Nothing => () } @@ -366,4 +366,40 @@ mod tests { check_integrity(&trie.root); } } + + #[test] + fn test_each() { + let mut m = TrieMap::new(); + + assert m.insert(3, 6); + assert m.insert(0, 0); + assert m.insert(4, 8); + assert m.insert(2, 4); + assert m.insert(1, 2); + + let mut n = 0; + for m.each |&(k, v)| { + assert k == n; + assert *v == n * 2; + n += 1; + } + } + + #[test] + fn test_each_reverse() { + let mut m = TrieMap::new(); + + assert m.insert(3, 6); + assert m.insert(0, 0); + assert m.insert(4, 8); + assert m.insert(2, 4); + assert m.insert(1, 2); + + let mut n = 4; + for m.each_reverse |&(k, v)| { + assert k == n; + assert *v == n * 2; + n -= 1; + } + } } |
