mirror of
https://github.com/taigrr/yq
synced 2025-01-18 04:53:17 -08:00
83 lines
1.5 KiB
Go
83 lines
1.5 KiB
Go
package yqlib
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mikefarah/yq/v3/test"
|
|
)
|
|
|
|
// var tokeniser = NewPathTokeniser()
|
|
var postFixer = NewPathPostFixer()
|
|
|
|
func testExpression(expression string) (string, error) {
|
|
tokens, err := tokeniser.Tokenise(expression)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
results, errorP := postFixer.ConvertToPostfix(tokens)
|
|
if errorP != nil {
|
|
return "", errorP
|
|
}
|
|
formatted := ""
|
|
for _, path := range results {
|
|
formatted = formatted + path.toString() + "--------\n"
|
|
}
|
|
return formatted, nil
|
|
}
|
|
|
|
func TestPostFixSimple(t *testing.T) {
|
|
var infix = "a"
|
|
var expectedOutput = "Type: PathKey - a\n"
|
|
|
|
actual, err := testExpression(infix)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
test.AssertResultComplex(t, expectedOutput, actual)
|
|
}
|
|
|
|
func TestPostFixOr(t *testing.T) {
|
|
var infix = "a OR b"
|
|
var expectedOutput = `Type: PathKey - a
|
|
--------
|
|
Type: PathKey - b
|
|
--------
|
|
Type: Operation - OR
|
|
--------
|
|
`
|
|
|
|
actual, err := testExpression(infix)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
test.AssertResultComplex(t, expectedOutput, actual)
|
|
}
|
|
|
|
func TestPostFixOrWithEquals(t *testing.T) {
|
|
var infix = "a==thing OR b==thongs"
|
|
var expectedOutput = `Type: PathKey - a
|
|
--------
|
|
Type: PathKey - thing
|
|
--------
|
|
Type: Operation - EQUALS
|
|
--------
|
|
Type: PathKey - b
|
|
--------
|
|
Type: PathKey - thongs
|
|
--------
|
|
Type: Operation - EQUALS
|
|
--------
|
|
Type: Operation - OR
|
|
--------
|
|
`
|
|
|
|
actual, err := testExpression(infix)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
test.AssertResultComplex(t, expectedOutput, actual)
|
|
}
|