github.com/datachainlab/burrow@v0.25.0/execution/exec/event_test.go (about)

     1  package exec
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hyperledger/burrow/binary"
     7  	"github.com/hyperledger/burrow/crypto"
     8  	"github.com/hyperledger/burrow/event"
     9  	"github.com/hyperledger/burrow/event/query"
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  	hex "github.com/tmthrgd/go-hex"
    13  )
    14  
    15  func TestEventTagQueries(t *testing.T) {
    16  	addressHex := "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF"
    17  	address, err := crypto.AddressFromHexString(addressHex)
    18  	require.NoError(t, err)
    19  	ev := &Event{
    20  		Header: &Header{
    21  			EventType: TypeLog,
    22  			EventID:   "foo/bar",
    23  			TxHash:    []byte{2, 3, 4},
    24  			Height:    34,
    25  			Index:     2,
    26  		},
    27  		Log: &LogEvent{
    28  			Address: address,
    29  			Topics:  []binary.Word256{binary.RightPadWord256([]byte("marmot"))},
    30  		},
    31  	}
    32  
    33  	tev := ev.Tagged()
    34  
    35  	qb := query.NewBuilder().AndEquals(event.EventTypeKey, TypeLog.String())
    36  	qry, err := qb.Query()
    37  	require.NoError(t, err)
    38  	assert.True(t, qry.Matches(tev))
    39  
    40  	qb = qb.AndContains(event.EventIDKey, "bar")
    41  	qry, err = qb.Query()
    42  	require.NoError(t, err)
    43  	assert.True(t, qry.Matches(tev))
    44  
    45  	qb = qb.AndEquals(event.TxHashKey, hex.EncodeUpperToString(tev.Header.TxHash))
    46  	qry, err = qb.Query()
    47  	require.NoError(t, err)
    48  	assert.True(t, qry.Matches(tev))
    49  
    50  	qb = qb.AndGreaterThanOrEqual(event.HeightKey, tev.Header.Height)
    51  	qry, err = qb.Query()
    52  	require.NoError(t, err)
    53  	assert.True(t, qry.Matches(tev))
    54  
    55  	qb = qb.AndStrictlyLessThan(event.IndexKey, tev.Header.Index+1)
    56  	qry, err = qb.Query()
    57  	require.NoError(t, err)
    58  	assert.True(t, qry.Matches(tev))
    59  
    60  	qb = qb.AndEquals(event.AddressKey, addressHex)
    61  	qry, err = qb.Query()
    62  	require.NoError(t, err)
    63  	assert.True(t, qry.Matches(tev))
    64  
    65  	qb = qb.AndEquals(LogNTextKey(0), "marmot")
    66  	qry, err = qb.Query()
    67  	require.NoError(t, err)
    68  	assert.True(t, qry.Matches(tev))
    69  
    70  	t.Logf("Query: %v", qry)
    71  	t.Logf("Keys: %v", tev.Keys())
    72  }