75 lines
2 KiB
Go
75 lines
2 KiB
Go
package trie
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
|
)
|
|
|
|
func TestTrie_Update(t *testing.T) {
|
|
mt := buildTrie(New(), pairs1())
|
|
m := buildMap(newMap(), pairs1())
|
|
|
|
for k := range m {
|
|
v, _ := mt.Get(Key(k))
|
|
if m[k] != v {
|
|
t.Errorf("exp %s got %s", m[k], v)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestTrie_Hash(t *testing.T) {
|
|
tr1 := buildTrie(New(), pairs1())
|
|
// tr2 := func() *MerkleTrie {
|
|
// p1 := wire.OutPoint{Hash: *newHashFromStr("627ecfee2110b28fbc4b012944cadf66a72f394ad9fa9bb18fec30789e26c9ac"), Index: 0}
|
|
// p2 := wire.OutPoint{Hash: *newHashFromStr("c31bd469112abf04930879c6b6007d2b23224e042785d404bbeff1932dd94880"), Index: 0}
|
|
|
|
// n1 := claim.NewNode(&claim.Claim{OutPoint: p1, ClaimID: nil, Amount: 50, Height: 100, ValidAtHeight: 200})
|
|
// n2 := claim.NewNode(&claim.Claim{OutPoint: p2, ClaimID: nil, Amount: 50, Height: 100, ValidAtHeight: 200})
|
|
|
|
// pairs := []pair{
|
|
// {"test", n1},
|
|
// {"test2", n2},
|
|
// }
|
|
// return buildTrie(New(), pairs)
|
|
// }()
|
|
tests := []struct {
|
|
name string
|
|
mt *MerkleTrie
|
|
want chainhash.Hash
|
|
}{
|
|
{"empty", New(), *newHashFromStr("0000000000000000000000000000000000000000000000000000000000000001")},
|
|
{"test1", tr1, *newHashFromStr("c2fdce68a30e3cabf6efb3b7ebfd32afdaf09f9ebd062743fe91e181f682252b")},
|
|
// {"test2", tr2, *newHashFromStr("71c7b8d35b9a3d7ad9a1272b68972979bbd18589f1efe6f27b0bf260a6ba78fa")},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
mt := tt.mt
|
|
if got := mt.MerkleHash(); !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("trie.MerkleHash() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestTrie_Size(t *testing.T) {
|
|
mt1 := buildTrie(New(), pairs1())
|
|
map1 := buildMap(newMap(), pairs1())
|
|
|
|
tests := []struct {
|
|
name string
|
|
mt *MerkleTrie
|
|
want int
|
|
}{
|
|
{"test1", mt1, len(map1)},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
mt := tt.mt
|
|
if got := mt.Size(); got != tt.want {
|
|
t.Errorf("trie.Size() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|