diff options
author | Péter Szilágyi <peterke@gmail.com> | 2016-09-28 18:40:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-28 18:40:44 +0800 |
commit | f88bca7ba96a16e10b9feee453dbdb4f81962f34 (patch) | |
tree | 15f58419e13f75dc0dfa940be0b1a9f3930de34f /trie/iterator_test.go | |
parent | 7a5843de318f4bf0e41ddaab2d690fbe6fd04099 (diff) | |
parent | d4608ae0d2fc76ea1ba1d3a97033e60bab1f0d59 (diff) | |
download | go-tangerine-1.4.14.tar go-tangerine-1.4.14.tar.gz go-tangerine-1.4.14.tar.bz2 go-tangerine-1.4.14.tar.lz go-tangerine-1.4.14.tar.xz go-tangerine-1.4.14.tar.zst go-tangerine-1.4.14.zip |
Merge pull request #3055 from karalabe/release/1.4v1.4.14
Geth 1.4.14: What else should we rewrite?
Diffstat (limited to 'trie/iterator_test.go')
-rw-r--r-- | trie/iterator_test.go | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/trie/iterator_test.go b/trie/iterator_test.go index dc8276116..2bcc3700e 100644 --- a/trie/iterator_test.go +++ b/trie/iterator_test.go @@ -34,21 +34,60 @@ func TestIterator(t *testing.T) { {"dog", "puppy"}, {"somethingveryoddindeedthis is", "myothernodedata"}, } - v := make(map[string]bool) + all := make(map[string]string) for _, val := range vals { - v[val.k] = false + all[val.k] = val.v trie.Update([]byte(val.k), []byte(val.v)) } trie.Commit() + found := make(map[string]string) it := NewIterator(trie) for it.Next() { - v[string(it.Key)] = true + found[string(it.Key)] = string(it.Value) } - for k, found := range v { - if !found { - t.Error("iterator didn't find", k) + for k, v := range all { + if found[k] != v { + t.Errorf("iterator value mismatch for %s: got %q want %q", k, found[k], v) + } + } +} + +type kv struct { + k, v []byte + t bool +} + +func TestIteratorLargeData(t *testing.T) { + trie := newEmpty() + vals := make(map[string]*kv) + + for i := byte(0); i < 255; i++ { + value := &kv{common.LeftPadBytes([]byte{i}, 32), []byte{i}, false} + value2 := &kv{common.LeftPadBytes([]byte{10, i}, 32), []byte{i}, false} + trie.Update(value.k, value.v) + trie.Update(value2.k, value2.v) + vals[string(value.k)] = value + vals[string(value2.k)] = value2 + } + + it := NewIterator(trie) + for it.Next() { + vals[string(it.Key)].t = true + } + + var untouched []*kv + for _, value := range vals { + if !value.t { + untouched = append(untouched, value) + } + } + + if len(untouched) > 0 { + t.Errorf("Missed %d nodes", len(untouched)) + for _, value := range untouched { + t.Error(value) } } } |