Tests of the JSONSelect matcher

Types
$ JSONSelect.match("null", null);
[null]
$ JSONSelect.match("array", { 1: [], 2: [] });
[[], []]
$ JSONSelect.match("object", [ {}, {} ]);
[{}, {}]
$ JSONSelect.match("string", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
["a", "b", "c"]
$ JSONSelect.match("boolean", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
[true, false]
$ JSONSelect.match("number", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
[1, 3.1415]
IDs
$ JSONSelect.match(".foo", {foo: "aMatch", bar: [ { foo: "anotherMatch" } ] });
["aMatch", "anotherMatch"]
Descendants
$ JSONSelect.match(".foo .bar", {foo: { baz: 1, bar: 2 }, bar: 3});
[2]
$ JSONSelect.match(".foo > .bar", {foo: { baz: 1, bar: 2 }, bar: 3});
[2]
$ JSONSelect.match(".foo > .bar", {foo: { baz: { bar: 4 }, bar: 2 }, bar: 3});
[2]
$ JSONSelect.match(".foo .bar", {foo: { baz: { bar: 4 }, bar: 2 }, bar: 3});
[4, 2]
Grouping
$ JSONSelect.match("number,boolean", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
[1, true, false, 3.1415]
$ JSONSelect.match("number,boolean,null", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
[1, true, null, false, 3.1415]