add node.go unit test file node_test.go

This commit is contained in:
me020523 2019-09-03 21:48:38 +08:00
parent 1611815b8d
commit 40ca6ae267
2 changed files with 78 additions and 13 deletions

78
trie/node_test.go Normal file
View file

@ -0,0 +1,78 @@
package trie
import (
"bytes"
"testing"
"github.com/ethereum/go-ethereum/rlp"
)
func newFullNode(v []byte) []interface{} {
fullNodeData := []interface{}{}
for i := 0; i < 16; i++ {
k := bytes.Repeat([]byte{byte(i + 1)}, 32)
fullNodeData = append(fullNodeData, k)
}
fullNodeData = append(fullNodeData, []byte("value1"))
return fullNodeData
}
func TestDecodeNestedNode(t *testing.T) {
fullNodeData := newFullNode([]byte("fullnode"))
data := [][]byte{}
for i := 0; i < 16; i++ {
data = append(data, nil)
}
data = append(data, []byte("subnode"))
fullNodeData[15] = data
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
if _, err := decodeNode([]byte("testdecode"), buf.Bytes()); err != nil {
t.Fatalf("decode nested full node err: %v", err)
}
}
func TestDecodeFullNodeWrongSizeChild(t *testing.T) {
fullNodeData := newFullNode([]byte("wrongsizechild"))
fullNodeData[0] = []byte("00")
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
if _, ok := err.(*decodeError); !ok {
t.Fatalf("decodeNode returned wrong err: %v", err)
}
}
func TestDecodeFullNodeWrongNestedFullNode(t *testing.T) {
fullNodeData := newFullNode([]byte("fullnode"))
data := [][]byte{}
for i := 0; i < 16; i++ {
data = append(data, []byte("123456"))
}
data = append(data, []byte("subnode"))
fullNodeData[15] = data
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
if _, ok := err.(*decodeError); !ok {
t.Fatalf("decodeNode returned wrong err: %v", err)
}
}
func TestDecodeNode(t *testing.T) {
fullNodeData := newFullNode([]byte("decodefullnode"))
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
if err != nil {
t.Fatalf("decode full node err: %v", err)
}
}

View file

@ -546,16 +546,3 @@ func updateString(trie *Trie, k, v string) {
func deleteString(trie *Trie, k string) { func deleteString(trie *Trie, k string) {
trie.Delete([]byte(k)) trie.Delete([]byte(k))
} }
func TestDecodeNode(t *testing.T) {
t.Parallel()
var (
hash = make([]byte, 20)
elems = make([]byte, 20)
)
for i := 0; i < 5000000; i++ {
rand.Read(hash)
rand.Read(elems)
decodeNode(hash, elems)
}
}