# Invalid definite jsonpaths

---
test case: Compile fail ""
in:
  path: ""
out:
  result: FAIL
---
test case: Compile fail $
in:
  path: $
out:
  result: FAIL
---
test case: Compile fail "$." 
in:
  path: $.
out:
  result: FAIL
---
test case: Compile fail "$['a'"
in:
  path: $['a'
out:
  result: FAIL
---
test case: Compile fail "$[a']"
in:
  path: $[a']
out:
  result: FAIL
---
test case: Compile fail "$['']"
in:
  path: $['']
out:
  result: FAIL
---
test case: Compile fail "$.a[]" 
in:
  path: $.a[]
out:
  result: FAIL
---
test case: Compile fail "$.a[1"
in:
  path: $.a[1
out:
  result: FAIL
---
test case: Compile fail "$['a'][]"
in:
  path: $['a'][]
out:
  result: FAIL
---
test case: Compile fail "$['a'][1"
in:
  path: $['a'][1
out:
  result: FAIL
---
test case: Compile fail "$.a."
in:
  path: $.a.
out:
  result: FAIL
---

# Valid definite jsonpaths
test case: Compile success "$.a" 
in:
  path: $.a
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'" 
---
test case: Compile success "$['a']"
in:
  path: $['a']
out:
  result: SUCCEED
  definite: 1 
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
---
test case: Compile success "$[ 'a' ]"
in:
  path: $[ 'a' ]
out:
  result: SUCCEED
  definite: 1 
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
---
test case: Compile success '$["a"]'
in:
  path: $["a"]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
---
test case: Compile success "$.a.b"
in:
  path: $.a.b
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
---
test case: Compile success "$['a'].b"
in:
  path: $['a'].b
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
---
test case: Compile success "$['a']['b']"
in:
  path: $['a']['b']
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
---
test case: Compile success $.a['b']
in:
  path: $.a['b']
out:
  result: SUCCEED
  definite: 1 
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
---
test case: Compile success $.a[0]
in:
  path: $.a[0]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 0
---
test case: Compile success $[-1]
in:
  path: $[-1]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: -1
---
test case: Compile success $.a[0].b[1] 
in:
  path: $.a[0].b[1]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 0
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1
---
test case: Compile success $.a[1000]
in:
  path: $.a[1000]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1000
---
test case: Compile success $.a[ 1 ]
in:
  path: $.a[ 1 ]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1
---
test case: Compile success $['a'][2]
in:
  path: $['a'][2]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 2
---
test case: Compile success $['a'][2]['b'][3]
in:
  path: $['a'][2]['b'][3]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 2
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 3
---
test case: Compile success $[1][2]
in:
  path: $[1][2]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 2
---
test case: Compile success $.['a'].['b']
in:
  path: $.['a'].['b']
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
---
# Invalid list based json filters

test case: Compile fail $...a
in:
  path: $...a
out:
  result: FAIL 
---
test case: 'Compile fail $.**.a'
in:
  path: '$.**.a'
out:
  result: FAIL 
---
test case: Compile fail $[,1]
in:
  path: $[,1]
out:
  result: FAIL 
---
test case: Compile fail $[1,]
in:
  path: $[1,]
out:
  result: FAIL 
---
test case: Compile fail $[1,,2]
in:
  path: $[1,,2]
out:
  result: FAIL 
---
test case: Compile fail $[1,*,2]
in:
  path: $[1,*,2]
out:
  result: FAIL 
---
test case: Compile fail $[--1]
in:
  path: $[--1]
out:
  result: FAIL 
---
test case: Compile fail $[a]
in:
  path: $[a]
out:
  result: FAIL 
---
test case: Compile fail $[$a$]
in:
  path: $[$a$]
out:
  result: FAIL 
---
test case: Compile fail $[,'a']
in:
  path: $[,'a']
out:
  result: FAIL 
---
test case: Compile fail $['a',]
in:
  path: $['a',]
out:
  result: FAIL 
---
test case: Compile fail $['a',,'b']
in:
  path: $['a',,2]
out:
  result: FAIL 
---
test case: Compile fail $['a',*,'b']
in:
  path: $['a',*,2]
out:
  result: FAIL 
---
test case: Compile fail $[--'a']
in:
  path: $[--'a']
out:
  result: FAIL 
---
test case: Compile fail $[1,'a']
in:
  path: $[1,'a']
out:
  result: FAIL 
---
test case: Compile fail $['a\a']
in:
  path: $['a\a']
out:
  result: FAIL 
---
test case: Compile fail $['a\']
in:
  path: $['a\']
out:
  result: FAIL 
---
test case: Compile fail $['a\"']
in:
  path: $['a\"']
out:
  result: FAIL 
---
test case: Compile fail $['a\]
in:
  path: $['a\]
out:
  result: FAIL 
---
test case: Compile fail $['a\
in:
  path: $['a\
out:
  result: FAIL 
---
test case: Compile fail $["a\'"]
in:
  path: $["a\'"]
out:
  result: FAIL 
---
# Valid list based json filters

test case: Compile success $[ 1 ]
in:
  path: $[ 1 ]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1
---
test case: Compile success $[1,2]
in:
  path: $[1,2]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1,2
---
test case: Compile success $[ 1 , 2 ]
in:
  path: $[ 1 , 2 ]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: 1,2
---
test case: Compile success $[ -1 ]
in:
  path: $[ -1 ]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: -1
---
test case: Compile success $[ -1, 2, 3 ]
in:
  path: $[ -1, 2, 3 ]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: -1,2,3
---
test case: Compile success $[ ' a ' ]
in:
  path: $[ ' a ' ]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "' a '"
---
test case: Compile success $[ ' a ', "b" ]
in:
  path: $[ ' a ', "b" ]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "' a ','b'"
---
test case: Compile success $['a \'b\' \\/']
in:
  path: $['a \'b\' \\/']
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a 'b' \\/'"
---
test case: Compile success $["a \"b\""]
in:
  path: $["a \"b\""]
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a \"b\"'"
---
test case: Compile success $.*.a
in:
  path: $.*.a
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_ALL
      data: "*"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
---
test case: Compile success $.*
in:
  path: $.*
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_ALL
      data: "*"
---
test case: Compile success $[*]
in:
  path: $[*]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_ALL
      data: "*"
---
test case: Compile success $..a.b..c
in:
  path: $..a.b..c
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'a'"
      detached: 1
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'b'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'c'"
      detached: 1
---
# Slice based json filters

test case: Compile fail $[1:2:3]
in:
  path: $[1:2:3]
out:
  result: FAIL 
---
test case: Compile success $[:]
in:
  path: "$[:]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: ":"
---
test case: Compile success $[1:]
in:
  path: "$[1:]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: "1:"
---
test case: Compile success $[:1]
in:
  path: "$[:1]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: ":1"
---
test case: Compile success $[1:2]
in:
  path: "$[1:2]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: "1:2"
---
test case: "Compile success $[-1:-1]"
in:
  path: "$[-1:-1]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: "-1:-1"
---
test case: "Compile success $[ 1 : 2 ]"
in:
  path: "$[ 1 : 2 ]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: "1:2"
---
test case: "Compile success $[  : 1 ]"
in:
  path: "$[  : 1 ]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: ":1"
---
test case: "Compile success $[ 1 :  ]"
in:
  path: "$[ 1 :  ]"
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_SLICE
      data: "1:"
---
test case: Compile fail $.min(
in:
  path: $.min(
out:
  result: FAIL 
---
test case: Compile fail $.min(1)
in:
  path: $.min(1)
out:
  result: FAIL 
---
test case: Compile fail $.div()
in:
  path: $.div()
out:
  result: FAIL 
---
test case: Compile fail $.avg().data
in:
  path: $.avg().data
out:
  result: FAIL 
---
test case: Compile fail $.len()
in:
  path: $.len()
out:
  result: FAIL
---
test case: Compile success $.min()
in:
  path: $.min()
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "min()"
---
test case: Compile success $.max()
in:
  path: $.max()
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "max()"
---
test case: Compile success $.avg()
in:
  path: $.avg()
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "avg()"
---
test case: Compile success $.length()
in:
  path: $.length()
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "length()"
---
test case: Compile success $.first().max()
in:
  path: $.first().max()
out:
  result: SUCCEED 
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "first()"
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "max()"
---
test case: Compile fail $[?]
in:
  path: $[?]
out:
  result: FAIL
---
test case: Compile fail $[?(]
in:
  path: $[?(]
out:
  result: FAIL
---
test case: Compile fail $[?()]
in:
  path: $[?()]
out:
  result: FAIL
---
test case: Compile fail $[?(+)]
in:
  path: $[?(+)]
out:
  result: FAIL
---
test case: Compile fail $[?(==)]
in:
  path: $[?(==)]
out:
  result: FAIL
---
test case: Compile fail $[?(()]
in:
  path: $[?(()]
out:
  result: FAIL
---
test case: Compile fail $[?(+1)]
in:
  path: $[?(+1)]
out:
  result: FAIL
---
test case: Compile fail $[?(!)]
in:
  path: $[?(!)]
out:
  result: FAIL
---
test case: Compile fail $[?(a)]
in:
  path: $[?(a)]
out:
  result: FAIL
---
test case: Compile fail $[?(())]
in:
  path: $[?(())]
out:
  result: FAIL
---
test case: Compile fail $[?(1++1)]
in:
  path: $[?(1++1)]
out:
  result: FAIL
---
test case: Compile fail $[?(1 - - 1)]
in:
  path: $[?(1 - - 1)]
out:
  result: FAIL
---
test case: Compile fail $[?(1 + + 1)]
in:
  path: $[?(1 +  + 1)]
out:
  result: FAIL
---
test case: Compile fail $[?((1+1)+)]
in:
  path: $[?((1+1)+)]
out:
  result: FAIL
---
test case: Compile fail $[?((1 + 1) + ())]
in:
  path: $[?((1 + 1) + ())]
out:
  result: FAIL
---
test case: Compile fail $[?(a + 1)]
in:
  path: $[?(a + 1)]
out:
  result: FAIL
---
test case: Compile fail $[?(1 + 'a)]
in:
  path: $[?(1 + 'a)]
out:
  result: FAIL
---
test case: Compile fail $[?($..b + 1)]
in:
  path: $[?($..b + 1)]
out:
  result: FAIL
---
test case: Compile fail $[?($['a])]
in:
  path: $[?($['a])]
out:
  result: FAIL
---
test case: Compile fail $[?($[1,2])]
in:
  path: $[?($[1,2])]
out:
  result: FAIL
---
test case: Compile fail $[?($.a.)]
in:
  path: $[?($.a.)]
out:
  result: FAIL
---
test case: Compile success $[?(1)]
in:
  path: $[?(1)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1"
---
test case: Compile success $[?(-1)]
in:
  path: $[?(-1)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "-1"
---
test case: Compile success $[?($.a)]
in:
  path: $[?($.a)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "$.a"
---
test case: Compile success $[?(@.b)]
in:
  path: $[?(@.b)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "@.b"
---
test case: Compile success $[?(!1)]
in:
  path: $[?(!1)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , !"
---
test case: Compile success $[?(1 + 2)]
in:
  path: $[?(1 + 2)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , +"
---
test case: Compile success $[?(1 + 2 * 3)]
in:
  path: $[?(1 + 2 * 3)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , 3 , * , +"
---
test case: Compile success $[?(1 - 2 / 3)]
in:
  path: $[?(1 - 2 / 3)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , 3 , / , -"
---
test case: Compile success $[?((1 + 2) * 3)]
in:
  path: $[?((1 + 2) * 3)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , + , 3 , *"
---
test case: Compile success $[?($.a + 2 == 3)]
in:
  path: $[?($.a + 2 == 3)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "$.a , 2 , + , 3 , =="
---
test case: Compile success $[?((1 + 2) * (3 - 4))]
in:
  path: $[?((1 + 2) * (3 - 4))]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , + , 3 , 4 , - , *"
---
test case: Compile success $[?(1 == 2 || !3*5)]
in:
  path: $[?(1 == 2 || !3*5)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , == , 3 , ! , 5 , * , ||"
---
test case: Compile success $[?(1 == 2 || !(3*5))]
in:
  path: $[?(1 == 2 || !(3*5))]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , == , 3 , 5 , * , ! , ||"
---
test case: Compile success $[?(1 == 2 * @.a)]
in:
  path: $[?(1 == 2 * @.a)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , @.a , * , =="
---
test case: Compile success $[?((1)+(2))]
in:
  path: $[?((1)+(2))]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , +"
---
test case: Compile success $[?(1 + 2 - 3 + 4)]
in:
  path: $[?(1 + 2 - 3 + 4)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , + , 3 , - , 4 , +"
---
test case: Compile success $[?(1 == 2 == 3)]
in:
  path: $[?(1 == 2 == 3)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "1 , 2 , == , 3 , =="
---
test case: Compile fail $[?(1 == 2 == 3]
in:
  path: $[?(1 == 2 == 3]
out:
  result: FAIL 
---
test case: Compile success $..[?(@.id)]
in:
  path: $..[?(@.id)]
out:
  result: SUCCEED 
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "@.id"
      detached: 1
---
test case: Compile success $['cn=snmp,cn=monitor']['connections']
in:
  path: "$['cn=snmp,cn=monitor']['connections']"
out:
  result: SUCCEED
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'cn=snmp,cn=monitor'"
      detached: 0
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'connections'"
      detached: 0
---
test case: Compile success $.f$o
in:
  path: $.f$o
out:
  result: SUCCEED
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'f$o'"
---
test case: Compile success $[?(@.$)]
in:
  path: $[?(@.$)]
out:
  result: SUCCEED
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "@.$"
---
test case: Compile success $.$.$[?(@.$ < $.$)]
in:
  path: $.$.$[?(@.$ < $.$)]
out:
  result: SUCCEED
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'$'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_LIST
      data: "'$'"
    - type: ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION
      data: "@.$ , $.$ , <"
---
test case: Compile success $.sum()
in:
  path: $.sum()
out:
  result: SUCCEED
  definite: 1
  segments:
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "sum()"
---
test case: Compile success $.*~
in:
  path: $.*~
out:
  result: SUCCEED
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_ALL
      data: "*"
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "~"
---
test case: Compile success $.*~.first()
in:
  path: $.*~.first()
out:
  result: SUCCEED
  definite: 0
  segments:
    - type: ZBX_JSONPATH_SEGMENT_MATCH_ALL
      data: "*"
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "~"
    - type: ZBX_JSONPATH_SEGMENT_FUNCTION
      data: "first()"
...