Test the handlers and fix type byte for no conflicts

This commit is contained in:
Ethan Frey 2017-08-06 22:34:27 +02:00
parent 4c663d5551
commit 464ea226f5
2 changed files with 63 additions and 2 deletions

View File

@ -0,0 +1,61 @@
package etc
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tendermint/basecoin/stack"
"github.com/tendermint/basecoin/state"
wire "github.com/tendermint/go-wire"
)
func TestHandler(t *testing.T) {
assert, require := assert.New(t), require.New(t)
key := []byte("one")
val := []byte("foo")
var height uint64 = 123
h := NewHandler()
ctx := stack.MockContext("role-chain", height)
store := state.NewMemKVStore()
set := SetTx{Key: key, Value: val}.Wrap()
remove := RemoveTx{Key: key}.Wrap()
invalid := SetTx{}.Wrap()
// make sure pricing makes sense
cres, err := h.CheckTx(ctx, store, set)
require.Nil(err, "%+v", err)
require.True(cres.GasAllocated > 5, "%#v", cres)
// set the value, no error
dres, err := h.DeliverTx(ctx, store, set)
require.Nil(err, "%+v", err)
// get the data
var data Data
bs := store.Get(key)
require.NotEmpty(bs)
err = wire.ReadBinaryBytes(bs, &data)
require.Nil(err, "%+v", err)
assert.Equal(height, data.SetAt)
assert.EqualValues(val, data.Value)
// make sure pricing makes sense
cres, err = h.CheckTx(ctx, store, remove)
require.Nil(err, "%+v", err)
require.True(cres.GasAllocated > 5, "%#v", cres)
// remove the data returns the same as the above query
dres, err = h.DeliverTx(ctx, store, remove)
require.Nil(err, "%+v", err)
require.EqualValues(bs, dres.Data)
// make sure invalid fails both ways
_, err = h.CheckTx(ctx, store, invalid)
require.NotNil(err)
_, err = h.DeliverTx(ctx, store, invalid)
require.NotNil(err)
}

View File

@ -10,8 +10,8 @@ const (
TypeSet = Name + "/set"
TypeRemove = Name + "/remove"
ByteSet = 0xF0
ByteRemove = 0xF2
ByteSet = 0xF4
ByteRemove = 0xF5
)
func init() {