github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/event/query/expression_test.go (about) 1 package query 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestExpression(t *testing.T) { 10 t.Run("Basic OR AND", func(t *testing.T) { 11 qry, err := New("(something = 'awful' OR something = 'nice') AND another_thing = 'OKAY'") 12 require.NoError(t, err) 13 out := qry.parser.String() 14 require.Equal(t, "something, 'awful', =, something, 'nice', =, OR, another_thing, 'OKAY', =, AND", out) 15 16 getter := func(key string) (interface{}, bool) { 17 switch key { 18 case "something": 19 return "awful", true 20 21 case "another_thing": 22 return "OKAY", true 23 24 default: 25 return "", false 26 } 27 } 28 29 matches, err := qry.parser.Evaluate(getter) 30 require.NoError(t, err) 31 require.True(t, matches) 32 }) 33 }