bitxhub/internal/ledger/account_test.go

44 lines
1.2 KiB
Go

package ledger
import (
"io/ioutil"
"testing"
"github.com/meshplus/bitxhub-kit/bytesutil"
"github.com/meshplus/bitxhub-kit/crypto/asym"
"github.com/meshplus/bitxhub-kit/hexutil"
"github.com/meshplus/bitxhub-kit/log"
"github.com/meshplus/bitxhub-kit/types"
"github.com/meshplus/bitxhub/pkg/storage/leveldb"
"github.com/stretchr/testify/assert"
)
func TestAccount_GetState(t *testing.T) {
_, err := asym.GenerateKey(asym.ECDSASecp256r1)
assert.Nil(t, err)
repoRoot, err := ioutil.TempDir("", "ledger_commit")
assert.Nil(t, err)
blockStorage, err := leveldb.New(repoRoot)
assert.Nil(t, err)
ledger, err := New(repoRoot, blockStorage, log.NewWithModule("ChainLedger"))
assert.Nil(t, err)
h := hexutil.Encode(bytesutil.LeftPadBytes([]byte{11}, 20))
addr := types.String2Address(h)
account := newAccount(ledger.ldb, ledger.accountCache, addr)
account.SetState([]byte("a"), []byte("b"))
ok, v := account.GetState([]byte("a"))
assert.True(t, ok)
assert.Equal(t, []byte("b"), v)
ok, v = account.GetState([]byte("a"))
assert.True(t, ok)
assert.Equal(t, []byte("b"), v)
account.SetState([]byte("a"), nil)
ok, v = account.GetState([]byte("a"))
assert.False(t, ok)
assert.Nil(t, v)
}