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  }