MCPcopy Create free account
hub / github.com/SeldonIO/goven / TestBasicParser

Function TestBasicParser

parser/parser_test.go:10–232  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

8)
9
10func TestBasicParser(t *testing.T) {
11 g := NewGomegaWithT(t)
12 t.Run("parse expression succeeds", func(t *testing.T) {
13 s := "name=max"
14 parser := NewParser(s)
15 expr, err := parser.parseExpression()
16 g.Expect(err).To(BeNil())
17 g.Expect(expr).To(Equal(&Expression{
18 Field: "name",
19 Comparator: "=",
20 Value: "max",
21 }))
22 })
23 t.Run("parse expression succeeds with whitespace", func(t *testing.T) {
24 s := "name= max "
25 parser := NewParser(s)
26 expr, err := parser.parseExpression()
27 g.Expect(err).To(BeNil())
28 g.Expect(expr).To(Equal(&Expression{
29 Field: "name",
30 Comparator: "=",
31 Value: "max",
32 }))
33 })
34 t.Run("parse expression fails invalid", func(t *testing.T) {
35 s := "name==dog"
36 parser := NewParser(s)
37 _, err := parser.parseExpression()
38 g.Expect(err).ToNot(BeNil())
39 })
40 t.Run("parse operations badly formatted return errors", func(t *testing.T) {
41 tests := []string{
42 "name=max AND AND artifact=wow",
43 "name=max artifact=wow",
44 ")(name = max)",
45 }
46 for _, test := range tests {
47 parser := NewParser(test)
48 _, err := parser.parseOperation()
49 g.Expect(err).ToNot(BeNil(), fmt.Sprintf("failed case: `%s`", test))
50 }
51 })
52 t.Run("parse operations correctly formatted succeeds", func(t *testing.T) {
53 test := "name=max AND artifact%art1"
54 parser := NewParser(test)
55 expected := &Operation{
56 LeftNode: &Expression{
57 Field: "name",
58 Comparator: "=",
59 Value: "max",
60 },
61 Gate: "AND",
62 RightNode: &Expression{
63 Field: "artifact",
64 Comparator: "%",
65 Value: "art1",
66 },
67 }

Callers

nothing calls this directly

Calls 4

parseExpressionMethod · 0.95
parseOperationMethod · 0.95
ParseMethod · 0.95
NewParserFunction · 0.85

Tested by

no test coverage detected