aboutsummaryrefslogtreecommitdiffstats
path: root/trie/iterator_test.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-09-28 18:40:44 +0800
committerGitHub <noreply@github.com>2016-09-28 18:40:44 +0800
commitf88bca7ba96a16e10b9feee453dbdb4f81962f34 (patch)
tree15f58419e13f75dc0dfa940be0b1a9f3930de34f /trie/iterator_test.go
parent7a5843de318f4bf0e41ddaab2d690fbe6fd04099 (diff)
parentd4608ae0d2fc76ea1ba1d3a97033e60bab1f0d59 (diff)
downloadgo-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.go51
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)
}
}
}