Fixed mkdnode & added some tests
This commit is contained in:
12
trie/trie.go
12
trie/trie.go
@ -6,8 +6,8 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
)
|
||||
|
||||
func ParanoiaCheck(t1 *Trie, backend Backend) (bool, *Trie) {
|
||||
@ -305,11 +305,13 @@ func (self *Trie) mknode(value *common.Value) Node {
|
||||
return NewShortNode(self, CompactDecode(string(value.Get(0).Bytes())), self.mknode(value.Get(1)))
|
||||
}
|
||||
case 17:
|
||||
fnode := NewFullNode(self)
|
||||
for i := 0; i < l; i++ {
|
||||
fnode.set(byte(i), self.mknode(value.Get(i)))
|
||||
if len(value.Bytes()) != 17 {
|
||||
fnode := NewFullNode(self)
|
||||
for i := 0; i < l; i++ {
|
||||
fnode.set(byte(i), self.mknode(value.Get(i)))
|
||||
}
|
||||
return fnode
|
||||
}
|
||||
return fnode
|
||||
case 32:
|
||||
return &HashNode{value.Bytes(), self}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
)
|
||||
|
||||
type Db map[string][]byte
|
||||
@ -32,6 +32,15 @@ func TestEmptyTrie(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestNull(t *testing.T) {
|
||||
trie := NewEmpty()
|
||||
|
||||
key := make([]byte, 32)
|
||||
value := common.FromHex("0x823140710bf13990e4500136726d8b55")
|
||||
trie.Update(key, value)
|
||||
value = trie.Get(key)
|
||||
}
|
||||
|
||||
func TestInsert(t *testing.T) {
|
||||
trie := NewEmpty()
|
||||
|
||||
|
Reference in New Issue
Block a user