github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/store/mpt/instance_test.go (about)

     1  package mpt
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  
     9  	ethcmn "github.com/ethereum/go-ethereum/common"
    10  	"github.com/ethereum/go-ethereum/crypto"
    11  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags"
    12  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    13  	"github.com/spf13/viper"
    14  	"github.com/stretchr/testify/suite"
    15  )
    16  
    17  type InstanceTestSuite struct {
    18  	suite.Suite
    19  
    20  	mptStore *MptStore
    21  }
    22  
    23  func TestInstanceTestSuite(t *testing.T) {
    24  	suite.Run(t, new(InstanceTestSuite))
    25  }
    26  
    27  func (suite *InstanceTestSuite) SetupTest() {
    28  	// set fbchaind path
    29  	serverDir, err := ioutil.TempDir("", ".fbchaind")
    30  	if err != nil {
    31  		panic(err)
    32  	}
    33  	defer os.RemoveAll(serverDir)
    34  	viper.Set(flags.FlagHome, serverDir)
    35  
    36  	mptStore, err := NewMptStore(nil, types.CommitID{})
    37  	if err != nil {
    38  		panic(err)
    39  	}
    40  	suite.mptStore = mptStore
    41  }
    42  
    43  func (suite *InstanceTestSuite) TestLatestStoredBlockHeight() {
    44  	for i := uint64(1); i <= 1000; i++ {
    45  		suite.mptStore.SetLatestStoredBlockHeight(i)
    46  		height := suite.mptStore.GetLatestStoredBlockHeight()
    47  		suite.Require().Equal(i, height)
    48  	}
    49  }
    50  
    51  func (suite *InstanceTestSuite) TestMptRootHash() {
    52  	for i := uint64(1); i <= 1000; i++ {
    53  		suite.mptStore.SetMptRootHash(i, generateKeccakHash(i))
    54  	}
    55  	for i := uint64(1); i <= 1000; i++ {
    56  		hash := suite.mptStore.GetMptRootHash(i)
    57  		suite.Require().Equal(generateKeccakHash(i), hash)
    58  	}
    59  }
    60  
    61  func generateKeccakHash(height uint64) ethcmn.Hash {
    62  	return ethcmn.BytesToHash(crypto.Keccak256([]byte(fmt.Sprintf("height-%d", height))))
    63  }