github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/event/query/parser_test.go (about) 1 package query 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 // TODO: fuzzy testing? 10 func TestParser(t *testing.T) { 11 cases := []struct { 12 query string 13 valid bool 14 }{ 15 {"tm.events.type='NewBlock'", true}, 16 {"tm.events.type = 'NewBlock'", true}, 17 {"tm.events.name = ''", true}, 18 {"tm.events.type='TIME'", true}, 19 {"tm.events.type='DATE'", true}, 20 {"tm.events.type='='", true}, 21 {"tm.events.type='TIME", false}, 22 {"tm.events.type=TIME'", false}, 23 {"tm.events.type==", false}, 24 {"tm.events.type=NewBlock", false}, 25 {">==", false}, 26 {"tm.events.type 'NewBlock' =", false}, 27 {"tm.events.type>'NewBlock'", false}, 28 {"", false}, 29 {"=", false}, 30 {"='NewBlock'", false}, 31 {"tm.events.type=", false}, 32 33 {"tm.events.typeNewBlock", false}, 34 {"tm.events.type'NewBlock'", false}, 35 {"'NewBlock'", false}, 36 {"NewBlock", false}, 37 {"", false}, 38 39 {"tm.events.type='NewBlock' AND abci.account.name='Igor'", true}, 40 {"tm.events.type='NewBlock' AND", false}, 41 {"tm.events.type='NewBlock' AN", false}, 42 {"tm.events.type='NewBlock' AN tm.events.type='NewBlockHeader'", false}, 43 {"AND tm.events.type='NewBlock' ", false}, 44 45 {"abci.account.name CONTAINS 'Igor'", true}, 46 47 {"tx.date > DATE 2013-05-03", true}, 48 {"tx.date < DATE 2013-05-03", true}, 49 {"tx.date <= DATE 2013-05-03", true}, 50 {"tx.date >= DATE 2013-05-03", true}, 51 {"tx.date >= DAT 2013-05-03", false}, 52 {"tx.date <= DATE2013-05-03", false}, 53 {"tx.date <= DATE -05-03", false}, 54 {"tx.date >= DATE 20130503", false}, 55 {"tx.date >= DATE 2013+01-03", false}, 56 // incorrect year, month, day 57 {"tx.date >= DATE 0013-01-03", false}, 58 {"tx.date >= DATE 2013-31-03", false}, 59 {"tx.date >= DATE 2013-01-83", false}, 60 61 {"tx.date > TIME 2013-05-03T14:45:00+07:00", true}, 62 {"tx.date < TIME 2013-05-03T14:45:00-02:00", true}, 63 {"tx.date <= TIME 2013-05-03T14:45:00Z", true}, 64 {"tx.date >= TIME 2013-05-03T14:45:00Z", true}, 65 {"tx.date >= TIME2013-05-03T14:45:00Z", false}, 66 {"tx.date = IME 2013-05-03T14:45:00Z", false}, 67 {"tx.date = TIME 2013-05-:45:00Z", false}, 68 {"tx.date >= TIME 2013-05-03T14:45:00", false}, 69 {"tx.date >= TIME 0013-00-00T14:45:00Z", false}, 70 {"tx.date >= TIME 2013+05=03T14:45:00Z", false}, 71 72 {"account.balance=100", true}, 73 {"account.balance >= 200", true}, 74 {"account.balance >= -300", false}, 75 {"account.balance >>= 400", false}, 76 {"account.balance=33.22.1", false}, 77 78 {"hash='136E18F7E4C348B780CF873A0BF43922E5BAFA63'", true}, 79 {"hash=136E18F7E4C348B780CF873A0BF43922E5BAFA63", false}, 80 } 81 82 for _, c := range cases { 83 _, err := New(c.query) 84 if c.valid { 85 assert.NoErrorf(t, err, "Query was '%s'", c.query) 86 } else { 87 assert.Errorf(t, err, "Query was '%s'", c.query) 88 } 89 } 90 }