{
  "tests": [
    {
      "name": "count function",
      "selector": "$[?count(@..*)>2]",
      "document": [
        {
          "a": [
            1,
            2,
            3
          ]
        },
        {
          "a": [
            1
          ],
          "d": "f"
        },
        {
          "a": 1,
          "d": "f"
        }
      ],
      "result": [
        {
          "a": [
            1,
            2,
            3
          ]
        },
        {
          "a": [
            1
          ],
          "d": "f"
        }
      ],
      "result_paths": [
        "$[0]",
        "$[1]"
      ],
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "single-node arg",
      "selector": "$[?count(@.a)>1]",
      "document": [
        {
          "a": [
            1,
            2,
            3
          ]
        },
        {
          "a": [
            1
          ],
          "d": "f"
        },
        {
          "a": 1,
          "d": "f"
        }
      ],
      "result": [],
      "result_paths": [],
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "multiple-selector arg",
      "selector": "$[?count(@['a','d'])>1]",
      "document": [
        {
          "a": [
            1,
            2,
            3
          ]
        },
        {
          "a": [
            1
          ],
          "d": "f"
        },
        {
          "a": 1,
          "d": "f"
        }
      ],
      "result": [
        {
          "a": [
            1
          ],
          "d": "f"
        },
        {
          "a": 1,
          "d": "f"
        }
      ],
      "result_paths": [
        "$[1]",
        "$[2]"
      ],
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "non-query arg, number",
      "selector": "$[?count(1)>2]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "non-query arg, string",
      "selector": "$[?count('string')>2]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "non-query arg, true",
      "selector": "$[?count(true)>2]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "non-query arg, false",
      "selector": "$[?count(false)>2]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "non-query arg, null",
      "selector": "$[?count(null)>2]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "result must be compared",
      "selector": "$[?count(@..*)]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "no params",
      "selector": "$[?count()==1]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    },
    {
      "name": "too many params",
      "selector": "$[?count(@.a,@.b)==1]",
      "invalid_selector": true,
      "tags": [
        "function",
        "count"
      ]
    }
  ]
}