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) {
|
||||
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