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 }