mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
add node.go unit test file node_test.go
This commit is contained in:
parent
1611815b8d
commit
40ca6ae267
2 changed files with 78 additions and 13 deletions
78
trie/node_test.go
Normal file
78
trie/node_test.go
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue