- package types
-
- import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- abci "github.com/tendermint/tendermint/abci/types"
- )
-
- func TestABCIResults(t *testing.T) {
- a := ABCIResult{Code: 0, Data: nil}
- b := ABCIResult{Code: 0, Data: []byte{}}
- c := ABCIResult{Code: 0, Data: []byte("one")}
- d := ABCIResult{Code: 14, Data: nil}
- e := ABCIResult{Code: 14, Data: []byte("foo")}
- f := ABCIResult{Code: 14, Data: []byte("bar")}
-
- // Nil and []byte{} should produce the same hash.
- require.Equal(t, a.Hash(), a.Hash())
- require.Equal(t, b.Hash(), b.Hash())
- require.Equal(t, a.Hash(), b.Hash())
-
- // a and b should be the same, don't go in results.
- results := ABCIResults{a, c, d, e, f}
-
- // Make sure each result hashes properly.
- var last []byte
- for i, res := range results {
- h := res.Hash()
- assert.NotEqual(t, last, h, "%d", i)
- last = h
- }
-
- // Make sure that we can get a root hash from results and verify proofs.
- root := results.Hash()
- assert.NotEmpty(t, root)
-
- for i, res := range results {
- proof := results.ProveResult(i)
- valid := proof.Verify(i, len(results), res.Hash(), root)
- assert.True(t, valid, "%d", i)
- }
- }
-
- func TestABCIBytes(t *testing.T) {
- results := NewResults([]*abci.ResponseDeliverTx{
- {Code: 0, Data: []byte{}},
- {Code: 0, Data: []byte("one")},
- {Code: 14, Data: nil},
- {Code: 14, Data: []byte("foo")},
- {Code: 14, Data: []byte("bar")},
- })
- assert.NotNil(t, results.Bytes())
- }
|