github.com/lino-network/lino@v0.6.11/testsuites/ctx.go (about)

     1  package testsuites
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/cosmos/cosmos-sdk/store"
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  	"github.com/stretchr/testify/suite"
     9  	abci "github.com/tendermint/tendermint/abci/types"
    10  	"github.com/tendermint/tendermint/libs/log"
    11  	dbm "github.com/tendermint/tm-db"
    12  )
    13  
    14  type CtxTestSuite struct {
    15  	suite.Suite
    16  	ms     sdk.CommitMultiStore
    17  	height int64
    18  	time   time.Time
    19  	Ctx    sdk.Context
    20  }
    21  
    22  func (suite *CtxTestSuite) SetupCtx(height int64, t time.Time, keys ...*sdk.KVStoreKey) {
    23  	db := dbm.NewMemDB()
    24  	ms := store.NewCommitMultiStore(db)
    25  	for _, key := range keys {
    26  		ms.MountStoreWithDB(key, sdk.StoreTypeIAVL, db)
    27  	}
    28  	err := ms.LoadLatestVersion()
    29  	suite.Require().Nil(err)
    30  	suite.ms = ms
    31  	suite.Ctx = sdk.NewContext(
    32  		ms, abci.Header{ChainID: "Lino", Height: height, Time: t}, false, log.NewNopLogger())
    33  	suite.height = height
    34  	suite.time = t
    35  }
    36  
    37  func (suite *CtxTestSuite) NextBlock(t time.Time) {
    38  	suite.Ctx = sdk.NewContext(
    39  		suite.ms, abci.Header{
    40  			ChainID: "Lino", Height: suite.height + 1, Time: t}, false, log.NewNopLogger())
    41  	suite.time = t
    42  }