Basic gas impl, quick testcase

This commit is contained in:
Christopher Goes 2018-05-07 20:40:33 +02:00
parent efc7843fb9
commit f0e4d24ea3
No known key found for this signature in database
GPG Key ID: E828D98232D328D3
3 changed files with 29 additions and 1 deletions

View File

@ -20,7 +20,7 @@ func TestPowHandler(t *testing.T) {
auth.RegisterBaseAccount(cdc)
am := auth.NewAccountMapper(cdc, capKey, &auth.BaseAccount{})
ctx := sdk.NewContext(ms, abci.Header{}, false, nil, log.NewNopLogger(), 0)
ctx := sdk.NewContext(ms, abci.Header{}, false, nil, log.NewNopLogger(), 1000)
config := NewConfig("pow", int64(1))
ck := bank.NewKeeper(am)
keeper := NewKeeper(capKey, config, ck, DefaultCodespace)

View File

@ -119,6 +119,9 @@ func getCoins(ctx sdk.Context, am sdk.AccountMapper, addr sdk.Address) (sdk.Coin
}
func setCoins(ctx sdk.Context, am sdk.AccountMapper, addr sdk.Address, amt sdk.Coins) sdk.Error {
if ctx.GasMeter().ConsumeGasOrFail(100) {
return sdk.ErrOutOfGas("out of gas in setCoins")
}
acc := am.GetAccount(ctx, addr)
if acc == nil {
acc = am.NewAccountWithAddress(ctx, addr)

View File

@ -135,6 +135,31 @@ func TestKeeper(t *testing.T) {
}
func TestKeeperGas(t *testing.T) {
ms, authKey := setupMultiStore()
cdc := wire.NewCodec()
auth.RegisterBaseAccount(cdc)
ctx := sdk.NewContext(ms, abci.Header{}, false, nil, log.NewNopLogger(), 10)
accountMapper := auth.NewAccountMapper(cdc, authKey, &auth.BaseAccount{})
coinKeeper := NewKeeper(accountMapper)
addr := sdk.Address([]byte("addr1"))
acc := accountMapper.NewAccountWithAddress(ctx, addr)
// Test GetCoins/SetCoins
accountMapper.SetAccount(ctx, acc)
coins, err := coinKeeper.GetCoins(ctx, addr)
assert.Nil(t, err)
assert.True(t, coins.IsEqual(sdk.Coins{}))
coinKeeper.SetCoins(ctx, addr, sdk.Coins{{"foocoin", 10}})
coins, err = coinKeeper.GetCoins(ctx, addr)
assert.NotNil(t, err)
assert.True(t, coins.IsEqual(sdk.Coins{}))
}
func TestSendKeeper(t *testing.T) {
ms, authKey := setupMultiStore()