{
  "tests": [
    {
      "name": "space between root and bracket",
      "selector": "$ ['a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between root and bracket",
      "selector": "$\n['a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between root and bracket",
      "selector": "$\t['a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between root and bracket",
      "selector": "$\r['a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between bracket and bracket",
      "selector": "$['a'] ['b']",
      "document": {
        "a": {
          "b": "ab"
        }
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between bracket and bracket",
      "selector": "$['a'] \n['b']",
      "document": {
        "a": {
          "b": "ab"
        }
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between bracket and bracket",
      "selector": "$['a'] \t['b']",
      "document": {
        "a": {
          "b": "ab"
        }
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between bracket and bracket",
      "selector": "$['a'] \r['b']",
      "document": {
        "a": {
          "b": "ab"
        }
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between root and dot",
      "selector": "$ .a",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between root and dot",
      "selector": "$\n.a",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between root and dot",
      "selector": "$\t.a",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between root and dot",
      "selector": "$\r.a",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between dot and name",
      "selector": "$. a",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between dot and name",
      "selector": "$.\na",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between dot and name",
      "selector": "$.\ta",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between dot and name",
      "selector": "$.\ra",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between recursive descent and name",
      "selector": "$.. a",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between recursive descent and name",
      "selector": "$..\na",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between recursive descent and name",
      "selector": "$..\ta",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between recursive descent and name",
      "selector": "$..\ra",
      "invalid_selector": true,
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between bracket and selector",
      "selector": "$[ 'a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between bracket and selector",
      "selector": "$[\n'a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between bracket and selector",
      "selector": "$[\t'a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between bracket and selector",
      "selector": "$[\r'a']",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between selector and bracket",
      "selector": "$['a' ]",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between selector and bracket",
      "selector": "$['a'\n]",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between selector and bracket",
      "selector": "$['a'\t]",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between selector and bracket",
      "selector": "$['a'\r]",
      "document": {
        "a": "ab"
      },
      "result": [
        "ab"
      ],
      "result_paths": [
        "$['a']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between selector and comma",
      "selector": "$['a' ,'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between selector and comma",
      "selector": "$['a'\n,'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between selector and comma",
      "selector": "$['a'\t,'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between selector and comma",
      "selector": "$['a'\r,'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "space between comma and selector",
      "selector": "$['a', 'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "newline between comma and selector",
      "selector": "$['a',\n'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "tab between comma and selector",
      "selector": "$['a',\t'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    },
    {
      "name": "return between comma and selector",
      "selector": "$['a',\r'b']",
      "document": {
        "a": "ab",
        "b": "bc"
      },
      "result": [
        "ab",
        "bc"
      ],
      "result_paths": [
        "$['a']",
        "$['b']"
      ],
      "tags": [
        "whitespace"
      ]
    }
  ]
}