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 }