Trie fixes
This commit is contained in:
@ -1,17 +1,17 @@
|
||||
package ethtrie
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
_ "bytes"
|
||||
_ "encoding/hex"
|
||||
_ "encoding/json"
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"reflect"
|
||||
_ "io/ioutil"
|
||||
_ "math/rand"
|
||||
_ "net/http"
|
||||
_ "reflect"
|
||||
"testing"
|
||||
"time"
|
||||
_ "time"
|
||||
)
|
||||
|
||||
const LONG_WORD = "1234567890abcdefghijklmnopqrstuvwxxzABCEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
@ -43,6 +43,7 @@ func New() (*MemDatabase, *Trie) {
|
||||
return db, NewTrie(db, "")
|
||||
}
|
||||
|
||||
/*
|
||||
func TestTrieSync(t *testing.T) {
|
||||
db, trie := New()
|
||||
|
||||
@ -365,3 +366,55 @@ func TestDelete(t *testing.T) {
|
||||
|
||||
fmt.Printf("o: %x\nc: %x\n", a, b)
|
||||
}
|
||||
*/
|
||||
|
||||
func TestRndCase(t *testing.T) {
|
||||
_, trie := New()
|
||||
|
||||
data := []struct{ k, v string }{
|
||||
{"0000000000000000000000000000000000000000000000000000000000000001", "a07573657264617461000000000000000000000000000000000000000000000000"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000003", "8453bb5b31"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000004", "850218711a00"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000005", "9462d7705bd0b3ecbc51a8026a25597cb28a650c79"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000010", "947e70f9460402290a3e487dae01f610a1a8218fda"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000111", "01"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000112", "a053656e6174650000000000000000000000000000000000000000000000000000"},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000113", "a053656e6174650000000000000000000000000000000000000000000000000000"},
|
||||
{"53656e6174650000000000000000000000000000000000000000000000000000", "94977e3f62f5e1ed7953697430303a3cfa2b5b736e"},
|
||||
}
|
||||
for _, e := range data {
|
||||
trie.Update(string(ethutil.Hex2Bytes(e.k)), string(ethutil.Hex2Bytes(e.v)))
|
||||
}
|
||||
|
||||
fmt.Printf("root after update %x\n", trie.Root)
|
||||
trie.NewIterator().Each(func(k string, v *ethutil.Value) {
|
||||
fmt.Printf("%x %x\n", k, v.Bytes())
|
||||
})
|
||||
|
||||
data = []struct{ k, v string }{
|
||||
{"0000000000000000000000000000000000000000000000000000000000000112", ""},
|
||||
{"436974697a656e73000000000000000000000000000000000000000000000001", ""},
|
||||
{"436f757274000000000000000000000000000000000000000000000000000002", ""},
|
||||
{"53656e6174650000000000000000000000000000000000000000000000000000", ""},
|
||||
{"436f757274000000000000000000000000000000000000000000000000000000", ""},
|
||||
{"53656e6174650000000000000000000000000000000000000000000000000001", ""},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000113", ""},
|
||||
{"436974697a656e73000000000000000000000000000000000000000000000000", ""},
|
||||
{"436974697a656e73000000000000000000000000000000000000000000000002", ""},
|
||||
{"436f757274000000000000000000000000000000000000000000000000000001", ""},
|
||||
{"0000000000000000000000000000000000000000000000000000000000000111", ""},
|
||||
{"53656e6174650000000000000000000000000000000000000000000000000002", ""},
|
||||
}
|
||||
|
||||
for _, e := range data {
|
||||
trie.Delete(string(ethutil.Hex2Bytes(e.k)))
|
||||
}
|
||||
|
||||
fmt.Printf("root after delete %x\n", trie.Root)
|
||||
|
||||
trie.NewIterator().Each(func(k string, v *ethutil.Value) {
|
||||
fmt.Printf("%x %x\n", k, v.Bytes())
|
||||
})
|
||||
|
||||
fmt.Printf("%x\n", trie.Get(string(ethutil.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001"))))
|
||||
}
|
||||
|
Reference in New Issue
Block a user