packages feed

jsonlogic-hs-0.1.0.0: test/community/compatible.json

[
    "# Non-rules get passed through",
    {"description": "true", "rule": true, "result": true},
    {"description": "false", "rule": false, "result": false},
    {"description": "17", "rule": 17, "result": 17},
    {"description": "3.14", "rule": 3.14, "result": 3.14},
    {"description": "\"apple\"", "rule": "apple", "result": "apple"},
    {"description": "null", "rule": null, "result": null},
    { "description": "[\"a\",\"b\"]", "rule": ["a", "b"], "result": ["a", "b"] },
    "# Single operator tests",
    {
        "description": "{\"==\":[1,1]}",
        "rule": { "==": [1, 1] },
        "result": true
    },
    {
        "description": "{\"==\":[1,\"1\"]}",
        "rule": { "==": [1, "1"] },
        "result": true
    },
    {
        "description": "{\"==\":[1,2]}",
        "rule": { "==": [1, 2] },
        "result": false
    },
    {
        "description": "{\"===\":[1,1]}",
        "rule": { "===": [1, 1] },
        "result": true
    },
    {
        "description": "{\"===\":[1,\"1\"]}",
        "rule": { "===": [1, "1"] },
        "result": false
    },
    {
        "description": "{\"===\":[1,2]}",
        "rule": { "===": [1, 2] },
        "result": false
    },
    {
        "description": "{\"!=\":[1,2]}",
        "rule": { "!=": [1, 2] },
        "result": true
    },
    {
        "description": "{\"!=\":[1,1]}",
        "rule": { "!=": [1, 1] },
        "result": false
    },
    {
        "description": "{\"!=\":[1,\"1\"]}",
        "rule": { "!=": [1, "1"] },
        "result": false
    },
    {
        "description": "{\"!==\":[1,2]}",
        "rule": { "!==": [1, 2] },
        "result": true
    },
    {
        "description": "{\"!==\":[1,1]}",
        "rule": { "!==": [1, 1] },
        "result": false
    },
    {
        "description": "{\"!==\":[1,\"1\"]}",
        "rule": { "!==": [1, "1"] },
        "result": true
    },
    {
        "description": "{\">\":[2,1]}",
        "rule": { ">": [2, 1] },
        "result": true
    },
    {
        "description": "{\">\":[1,1]}",
        "rule": { ">": [1, 1] },
        "result": false
    },
    {
        "description": "{\">\":[1,2]}",
        "rule": { ">": [1, 2] },
        "result": false
    },
    {
        "description": "{\">\":[\"2\",1]}",
        "rule": { ">": ["2", 1] },
        "result": true
    },
    {
        "description": "{\">=\":[2,1]}",
        "rule": { ">=": [2, 1] },
        "result": true
    },
    {
        "description": "{\">=\":[1,1]}",
        "rule": { ">=": [1, 1] },
        "result": true
    },
    {
        "description": "{\">=\":[1,2]}",
        "rule": { ">=": [1, 2] },
        "result": false
    },
    {
        "description": "{\">=\":[\"2\",1]}",
        "rule": { ">=": ["2", 1] },
        "result": true
    },
    {
        "description": "{\"<\":[2,1]}",
        "rule": { "<": [2, 1] },
        "result": false
    },
    {
        "description": "{\"<\":[1,1]}",
        "rule": { "<": [1, 1] },
        "result": false
    },
    {
        "description": "{\"<\":[1,2]}",
        "rule": { "<": [1, 2] },
        "result": true
    },
    {
        "description": "{\"<\":[\"1\",2]}",
        "rule": { "<": ["1", 2] },
        "result": true
    },
    {
        "description": "{\"<\":[1,2,3]}",
        "rule": { "<": [1, 2, 3] },
        "result": true
    },
    {
        "description": "{\"<\":[1,1,3]}",
        "rule": { "<": [1, 1, 3] },
        "result": false
    },
    {
        "description": "{\"<\":[1,4,3]}",
        "rule": { "<": [1, 4, 3] },
        "result": false
    },
    {
        "description": "{\"<=\":[2,1]}",
        "rule": { "<=": [2, 1] },
        "result": false
    },
    {
        "description": "{\"<=\":[1,1]}",
        "rule": { "<=": [1, 1] },
        "result": true
    },
    {
        "description": "{\"<=\":[1,2]}",
        "rule": { "<=": [1, 2] },
        "result": true
    },
    {
        "description": "{\"<=\":[\"1\",2]}",
        "rule": { "<=": ["1", 2] },
        "result": true
    },
    {
        "description": "{\"<=\":[1,2,3]}",
        "rule": { "<=": [1, 2, 3] },
        "result": true
    },
    {
        "description": "{\"<=\":[1,4,3]}",
        "rule": { "<=": [1, 4, 3] },
        "result": false
    },
    {
        "description": "{\"!\":[false]}",
        "rule": { "!": [false] },
        "result": true
    },
    { "description": "{\"!\":false}", "rule": {"!": false}, "result": true },
    {
        "description": "{\"!\":[true]}",
        "rule": { "!": [true] },
        "result": false
    },
    { "description": "{\"!\":true}", "rule": {"!": true}, "result": false },
    { "description": "{\"!\":0}", "rule": {"!": 0}, "result": true },
    { "description": "{\"!\":1}", "rule": {"!": 1}, "result": false },
    {
        "description": "{\"or\":[true,true]}",
        "rule": { "or": [true, true] },
        "result": true
    },
    {
        "description": "{\"or\":[false,true]}",
        "rule": { "or": [false, true] },
        "result": true
    },
    {
        "description": "{\"or\":[true,false]}",
        "rule": { "or": [true, false] },
        "result": true
    },
    {
        "description": "{\"or\":[false,false]}",
        "rule": { "or": [false, false] },
        "result": false
    },
    {
        "description": "{\"or\":[false,false,true]}",
        "rule": { "or": [false, false, true] },
        "result": true
    },
    {
        "description": "{\"or\":[false,false,false]}",
        "rule": { "or": [false, false, false] },
        "result": false
    },
    {
        "description": "{\"or\":[false]}",
        "rule": { "or": [false] },
        "result": false
    },
    {
        "description": "{\"or\":[true]}",
        "rule": { "or": [true] },
        "result": true
    },
    {
        "description": "{\"or\":[1,3]}",
        "rule": { "or": [1, 3] },
        "result": 1
    },
    {
        "description": "{\"or\":[3,false]}",
        "rule": { "or": [3, false] },
        "result": 3
    },
    {
        "description": "{\"or\":[false,3]}",
        "rule": { "or": [false, 3] },
        "result": 3
    },
    {
        "description": "{\"and\":[true,true]}",
        "rule": { "and": [true, true] },
        "result": true
    },
    {
        "description": "{\"and\":[false,true]}",
        "rule": { "and": [false, true] },
        "result": false
    },
    {
        "description": "{\"and\":[true,false]}",
        "rule": { "and": [true, false] },
        "result": false
    },
    {
        "description": "{\"and\":[false,false]}",
        "rule": { "and": [false, false] },
        "result": false
    },
    {
        "description": "{\"and\":[true,true,true]}",
        "rule": { "and": [true, true, true] },
        "result": true
    },
    {
        "description": "{\"and\":[true,true,false]}",
        "rule": { "and": [true, true, false] },
        "result": false
    },
    {
        "description": "{\"and\":[false]}",
        "rule": { "and": [false] },
        "result": false
    },
    {
        "description": "{\"and\":[true]}",
        "rule": { "and": [true] },
        "result": true
    },
    {
        "description": "{\"and\":[1,3]}",
        "rule": { "and": [1, 3] },
        "result": 3
    },
    {
        "description": "{\"and\":[3,false]}",
        "rule": { "and": [3, false] },
        "result": false
    },
    {
        "description": "{\"and\":[false,3]}",
        "rule": { "and": [false, 3] },
        "result": false
    },
    {
        "description": "{\"?:\":[true,1,2]}",
        "rule": { "?:": [true, 1, 2] },
        "result": 1
    },
    {
        "description": "{\"?:\":[false,1,2]}",
        "rule": { "?:": [false, 1, 2] },
        "result": 2
    },
    {
        "description": "{\"in\":[\"Bart\",[\"Bart\",\"Homer\",\"Lisa\",\"Marge\",\"Maggie\"]]}",
        "rule": {
            "in": [ "Bart", ["Bart", "Homer", "Lisa", "Marge", "Maggie"] ]
        },
        "result": true
    },
    {
        "description": "{\"in\":[\"Milhouse\",[\"Bart\",\"Homer\",\"Lisa\",\"Marge\",\"Maggie\"]]}",
        "rule": {
            "in": [ "Milhouse", ["Bart", "Homer", "Lisa", "Marge", "Maggie"] ]
        },
        "result": false
    },
    {
        "description": "{\"in\":[\"Spring\",\"Springfield\"]}",
        "rule": { "in": ["Spring", "Springfield"] },
        "result": true
    },
    {
        "description": "{\"in\":[\"i\",\"team\"]}",
        "rule": { "in": ["i", "team"] },
        "result": false
    },
    { "description": "{\"cat\":\"ice\"}", "rule": {"cat": "ice"}, "result": "ice" },
    {
        "description": "{\"cat\":[\"ice\"]}",
        "rule": { "cat": ["ice"] },
        "result": "ice"
    },
    {
        "description": "{\"cat\":[\"ice\",\"cream\"]}",
        "rule": { "cat": ["ice", "cream"] },
        "result": "icecream"
    },
    {
        "description": "{\"cat\":[1,2]}",
        "rule": { "cat": [1, 2] },
        "result": "12"
    },
    {
        "description": "{\"cat\":[\"Robocop\",2]}",
        "rule": { "cat": ["Robocop", 2] },
        "result": "Robocop2"
    },
    {
        "description": "{\"cat\":[\"we all scream for \",\"ice\",\"cream\"]}",
        "rule": { "cat": ["we all scream for ", "ice", "cream"] },
        "result": "we all scream for icecream"
    },
    {
        "description": "{\"%\":[1,2]}",
        "rule": { "%": [1, 2] },
        "result": 1
    },
    {
        "description": "{\"%\":[2,2]}",
        "rule": { "%": [2, 2] },
        "result": 0
    },
    {
        "description": "{\"%\":[3,2]}",
        "rule": { "%": [3, 2] },
        "result": 1
    },
    {
        "description": "{\"max\":[1,2,3]}",
        "rule": { "max": [1, 2, 3] },
        "result": 3
    },
    {
        "description": "{\"max\":[1,3,3]}",
        "rule": { "max": [1, 3, 3] },
        "result": 3
    },
    {
        "description": "{\"max\":[3,2,1]}",
        "rule": { "max": [3, 2, 1] },
        "result": 3
    },
    {
        "description": "{\"max\":[1]}",
        "rule": { "max": [1] },
        "result": 1
    },
    {
        "description": "{\"min\":[1,2,3]}",
        "rule": { "min": [1, 2, 3] },
        "result": 1
    },
    {
        "description": "{\"min\":[1,1,3]}",
        "rule": { "min": [1, 1, 3] },
        "result": 1
    },
    {
        "description": "{\"min\":[3,2,1]}",
        "rule": { "min": [3, 2, 1] },
        "result": 1
    },
    {
        "description": "{\"min\":[1]}",
        "rule": { "min": [1] },
        "result": 1
    },
    {
        "description": "{\"+\":[1,2]}",
        "rule": { "+": [1, 2] },
        "result": 3
    },
    {
        "description": "{\"+\":[2,2,2]}",
        "rule": { "+": [2, 2, 2] },
        "result": 6
    },
    {
        "description": "{\"+\":[1]}",
        "rule": { "+": [1] },
        "result": 1
    },
    {
        "description": "{\"+\":[\"1\",1]}",
        "rule": { "+": ["1", 1] },
        "result": 2
    },
    {
        "description": "{\"*\":[3,2]}",
        "rule": { "*": [3, 2] },
        "result": 6
    },
    {
        "description": "{\"*\":[2,2,2]}",
        "rule": { "*": [2, 2, 2] },
        "result": 8
    },
    {
        "description": "{\"*\":[1]}",
        "rule": { "*": [1] },
        "result": 1
    },
    {
        "description": "{\"*\":[\"1\",1]}",
        "rule": { "*": ["1", 1] },
        "result": 1
    },
    {
        "description": "{\"-\":[2,3]}",
        "rule": { "-": [2, 3] },
        "result": -1
    },
    {
        "description": "{\"-\":[3,2]}",
        "rule": { "-": [3, 2] },
        "result": 1
    },
    {
        "description": "{\"-\":[3]}",
        "rule": { "-": [3] },
        "result": -3
    },
    {
        "description": "{\"-\":[\"1\",1]}",
        "rule": { "-": ["1", 1] },
        "result": 0
    },
    {
        "description": "{\"/\":[4,2]}",
        "rule": { "/": [4, 2] },
        "result": 2
    },
    {
        "description": "{\"/\":[2,4]}",
        "rule": { "/": [2, 4] },
        "result": 0.5
    },
    {
        "description": "{\"/\":[\"1\",1]}",
        "rule": { "/": ["1", 1] },
        "result": 1
    },
    "Substring",
    {
        "description": "{\"substr\":[\"jsonlogic\",4]}",
        "rule": { "substr": ["jsonlogic", 4] },
        "data": null,
        "result": "logic"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",-5]}",
        "rule": { "substr": ["jsonlogic", -5] },
        "data": null,
        "result": "logic"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",0,1]}",
        "rule": { "substr": ["jsonlogic", 0, 1] },
        "data": null,
        "result": "j"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",-1,1]}",
        "rule": { "substr": ["jsonlogic", -1, 1] },
        "data": null,
        "result": "c"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",4,5]}",
        "rule": { "substr": ["jsonlogic", 4, 5] },
        "data": null,
        "result": "logic"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",-5,5]}",
        "rule": { "substr": ["jsonlogic", -5, 5] },
        "data": null,
        "result": "logic"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",-5,-2]}",
        "rule": { "substr": ["jsonlogic", -5, -2] },
        "data": null,
        "result": "log"
    },
    {
        "description": "{\"substr\":[\"jsonlogic\",1,-5]}",
        "rule": { "substr": ["jsonlogic", 1, -5] },
        "data": null,
        "result": "son"
    },
    "Merge arrays",
    { "description": "{\"merge\":[]}", "rule": {"merge": []}, "data": null, "result": [] },
    {
        "description": "{\"merge\":[[1]]}",
        "rule": {
            "merge": [ [1] ]
        },
        "data": null,
        "result": [1]
    },
    {
        "description": "{\"merge\":[[1],[]]}",
        "rule": {
            "merge": [ [1], [] ]
        },
        "data": null,
        "result": [1]
    },
    {
        "description": "{\"merge\":[[1],[2]]}",
        "rule": {
            "merge": [ [1], [2] ]
        },
        "data": null,
        "result": [1, 2]
    },
    {
        "description": "{\"merge\":[[1],[2],[3]]}",
        "rule": {
            "merge": [ [1], [2], [3] ]
        },
        "data": null,
        "result": [1, 2, 3]
    },
    {
        "description": "{\"merge\":[[1,2],[3]]}",
        "rule": {
            "merge": [ [1, 2], [3] ]
        },
        "data": null,
        "result": [1, 2, 3]
    },
    {
        "description": "{\"merge\":[[1],[2,3]]}",
        "rule": {
            "merge": [ [1], [2, 3] ]
        },
        "data": null,
        "result": [1, 2, 3]
    },
    "Given non-array arguments, merge converts them to arrays",
    { "description": "{\"merge\":1}", "rule": {"merge": 1}, "data": null, "result": [1] },
    {
        "description": "{\"merge\":[1,2]}",
        "rule": { "merge": [1, 2] },
        "data": null,
        "result": [1, 2]
    },
    {
        "description": "{\"merge\":[1,[2]]}",
        "rule": {
            "merge": [ 1, [2] ]
        },
        "data": null,
        "result": [1, 2]
    },
    "Too few args",
    { "description": "{\"if\":[]}", "rule": {"if": []}, "data": null, "result": null },
    {
        "description": "{\"if\":[true]}",
        "rule": { "if": [true] },
        "data": null,
        "result": true
    },
    {
        "description": "{\"if\":[false]}",
        "rule": { "if": [false] },
        "data": null,
        "result": false
    },
    {
        "description": "{\"if\":[\"apple\"]}",
        "rule": { "if": ["apple"] },
        "data": null,
        "result": "apple"
    },
    "Simple if/then/else cases",
    {
        "description": "{\"if\":[true,\"apple\"]}",
        "rule": { "if": [true, "apple"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[false,\"apple\"]}",
        "rule": { "if": [false, "apple"] },
        "data": null,
        "result": null
    },
    {
        "description": "{\"if\":[true,\"apple\",\"banana\"]}",
        "rule": { "if": [true, "apple", "banana"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[false,\"apple\",\"banana\"]}",
        "rule": { "if": [false, "apple", "banana"] },
        "data": null,
        "result": "banana"
    },
    "Empty arrays are falsey",
    {
        "description": "{\"if\":[[],\"apple\",\"banana\"]}",
        "rule": { "if": [[], "apple", "banana"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[[1],\"apple\",\"banana\"]}",
        "rule": {
            "if": [ [1], "apple", "banana" ]
        },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[[1,2,3,4],\"apple\",\"banana\"]}",
        "rule": {
            "if": [ [1, 2, 3, 4], "apple", "banana" ]
        },
        "data": null,
        "result": "apple"
    },
    "Empty strings are falsey, all other strings are truthy",
    {
        "description": "{\"if\":[\"\",\"apple\",\"banana\"]}",
        "rule": { "if": ["", "apple", "banana"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[\"zucchini\",\"apple\",\"banana\"]}",
        "rule": { "if": ["zucchini", "apple", "banana"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[\"0\",\"apple\",\"banana\"]}",
        "rule": { "if": ["0", "apple", "banana"] },
        "data": null,
        "result": "apple"
    },
    "You can cast a string to numeric with a unary + ",
    {
        "description": "{\"===\":[0,\"0\"]}",
        "rule": { "===": [0, "0"] },
        "data": null,
        "result": false
    },
    {
        "description": "{\"===\":[0,{\"+\":\"0\"}]}",
        "rule": {
            "===": [ 0, {"+": "0"} ]
        },
        "data": null,
        "result": true
    },
    {
        "description": "{\"if\":[{\"+\":\"0\"},\"apple\",\"banana\"]}",
        "rule": {
            "if": [ {"+": "0"}, "apple", "banana" ]
        },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[{\"+\":\"1\"},\"apple\",\"banana\"]}",
        "rule": {
            "if": [ {"+": "1"}, "apple", "banana" ]
        },
        "data": null,
        "result": "apple"
    },
    "Zero is falsy, all other numbers are truthy",
    {
        "description": "{\"if\":[0,\"apple\",\"banana\"]}",
        "rule": { "if": [0, "apple", "banana"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[1,\"apple\",\"banana\"]}",
        "rule": { "if": [1, "apple", "banana"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[3.1416,\"apple\",\"banana\"]}",
        "rule": { "if": [3.1416, "apple", "banana"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[-1,\"apple\",\"banana\"]}",
        "rule": { "if": [-1, "apple", "banana"] },
        "data": null,
        "result": "apple"
    },
    "Truthy and falsy definitions matter in Boolean operations",
    {
        "description": "{\"!\":[[]]}",
        "rule": { "!": [[]] },
        "result": true
    },
    {
        "description": "{\"!!\":[[]]}",
        "rule": { "!!": [[]] },
        "result": false
    },
    {
        "description": "{\"and\":[[],true]}",
        "rule": { "and": [[], true] },
        "result": []
    },
    {
        "description": "{\"or\":[[],true]}",
        "rule": { "or": [[], true] },
        "result": true
    },
    {
        "description": "{\"!\":[0]}",
        "rule": { "!": [0] },
        "result": true
    },
    {
        "description": "{\"!!\":[0]}",
        "rule": { "!!": [0] },
        "result": false
    },
    {
        "description": "{\"and\":[0,true]}",
        "rule": { "and": [0, true] },
        "result": 0
    },
    {
        "description": "{\"or\":[0,true]}",
        "rule": { "or": [0, true] },
        "result": true
    },
    {
        "description": "{\"!\":[\"\"]}",
        "rule": { "!": [""] },
        "result": true
    },
    {
        "description": "{\"!!\":[\"\"]}",
        "rule": { "!!": [""] },
        "result": false
    },
    {
        "description": "{\"and\":[\"\",true]}",
        "rule": { "and": ["", true] },
        "result": ""
    },
    {
        "description": "{\"or\":[\"\",true]}",
        "rule": { "or": ["", true] },
        "result": true
    },
    {
        "description": "{\"!\":[\"0\"]}",
        "rule": { "!": ["0"] },
        "result": false
    },
    {
        "description": "{\"!!\":[\"0\"]}",
        "rule": { "!!": ["0"] },
        "result": true
    },
    {
        "description": "{\"and\":[\"0\",true]}",
        "rule": { "and": ["0", true] },
        "result": true
    },
    {
        "description": "{\"or\":[\"0\",true]}",
        "rule": { "or": ["0", true] },
        "result": "0"
    },
    "If the conditional is logic, it gets evaluated",
    {
        "description": "{\"if\":[{\">\":[2,1]},\"apple\",\"banana\"]}",
        "rule": {
            "if": [
                { ">": [2, 1] },
                "apple",
                "banana"
            ]
        },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[{\">\":[1,2]},\"apple\",\"banana\"]}",
        "rule": {
            "if": [
                { ">": [1, 2] },
                "apple",
                "banana"
            ]
        },
        "data": null,
        "result": "banana"
    },
    "If the consequents are logic, they get evaluated",
    {
        "description": "{\"if\":[true,{\"cat\":[\"ap\",\"ple\"]},{\"cat\":[\"ba\",\"na\",\"na\"]}]}",
        "rule": {
            "if": [
                true,
                { "cat": ["ap", "ple"] },
                { "cat": ["ba", "na", "na"] }
            ]
        },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[false,{\"cat\":[\"ap\",\"ple\"]},{\"cat\":[\"ba\",\"na\",\"na\"]}]}",
        "rule": {
            "if": [
                false,
                { "cat": ["ap", "ple"] },
                { "cat": ["ba", "na", "na"] }
            ]
        },
        "data": null,
        "result": "banana"
    },
    "If/then/elseif/then cases",
    {
        "description": "{\"if\":[true,\"apple\",true,\"banana\"]}",
        "rule": { "if": [true, "apple", true, "banana"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[true,\"apple\",false,\"banana\"]}",
        "rule": { "if": [true, "apple", false, "banana"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[false,\"apple\",true,\"banana\"]}",
        "rule": { "if": [false, "apple", true, "banana"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[false,\"apple\",false,\"banana\"]}",
        "rule": { "if": [false, "apple", false, "banana"] },
        "data": null,
        "result": null
    },
    {
        "description": "{\"if\":[true,\"apple\",true,\"banana\",\"carrot\"]}",
        "rule": { "if": [true, "apple", true, "banana", "carrot"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[true,\"apple\",false,\"banana\",\"carrot\"]}",
        "rule": { "if": [true, "apple", false, "banana", "carrot"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[false,\"apple\",true,\"banana\",\"carrot\"]}",
        "rule": { "if": [false, "apple", true, "banana", "carrot"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[false,\"apple\",false,\"banana\",\"carrot\"]}",
        "rule": { "if": [false, "apple", false, "banana", "carrot"] },
        "data": null,
        "result": "carrot"
    },
    {
        "description": "{\"if\":[false,\"apple\",false,\"banana\",false,\"carrot\"]}",
        "rule": { "if": [false, "apple", false, "banana", false, "carrot"] },
        "data": null,
        "result": null
    },
    {
        "description": "{\"if\":[false,\"apple\",false,\"banana\",false,\"carrot\",\"date\"]}",
        "rule": { "if": [false, "apple", false, "banana", false, "carrot", "date"] },
        "data": null,
        "result": "date"
    },
    {
        "description": "{\"if\":[false,\"apple\",false,\"banana\",true,\"carrot\",\"date\"]}",
        "rule": { "if": [false, "apple", false, "banana", true, "carrot", "date"] },
        "data": null,
        "result": "carrot"
    },
    {
        "description": "{\"if\":[false,\"apple\",true,\"banana\",false,\"carrot\",\"date\"]}",
        "rule": { "if": [false, "apple", true, "banana", false, "carrot", "date"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[false,\"apple\",true,\"banana\",true,\"carrot\",\"date\"]}",
        "rule": { "if": [false, "apple", true, "banana", true, "carrot", "date"] },
        "data": null,
        "result": "banana"
    },
    {
        "description": "{\"if\":[true,\"apple\",false,\"banana\",false,\"carrot\",\"date\"]}",
        "rule": { "if": [true, "apple", false, "banana", false, "carrot", "date"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[true,\"apple\",false,\"banana\",true,\"carrot\",\"date\"]}",
        "rule": { "if": [true, "apple", false, "banana", true, "carrot", "date"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[true,\"apple\",true,\"banana\",false,\"carrot\",\"date\"]}",
        "rule": { "if": [true, "apple", true, "banana", false, "carrot", "date"] },
        "data": null,
        "result": "apple"
    },
    {
        "description": "{\"if\":[true,\"apple\",true,\"banana\",true,\"carrot\",\"date\"]}",
        "rule": { "if": [true, "apple", true, "banana", true, "carrot", "date"] },
        "data": null,
        "result": "apple"
    },
    "Arrays with logic",
    {
        "description": "[1,{\"var\":\"x\"},3]",
        "rule": [ 1, {"var": "x"}, 3 ],
        "data": {"x": 2},
        "result": [1, 2, 3]
    },
    {
        "description": "{\"if\":[{\"var\":\"x\"},[{\"var\":\"y\"}],99]}",
        "rule": {
            "if": [
                {"var": "x"},
                [ {"var": "y"} ],
                99
            ]
        },
        "data": {"x": true, "y": 42},
        "result": [42]
    },
    "# Compound Tests",
    {
        "description": "{\"and\":[{\">\":[3,1]},true]}",
        "rule": {
            "and": [
                { ">": [3, 1] },
                true
            ]
        },
        "result": true
    },
    {
        "description": "{\"and\":[{\">\":[3,1]},false]}",
        "rule": {
            "and": [
                { ">": [3, 1] },
                false
            ]
        },
        "result": false
    },
    {
        "description": "{\"and\":[{\">\":[3,1]},{\"!\":true}]}",
        "rule": {
            "and": [
                { ">": [3, 1]            },
                {              "!": true }
            ]
        },
        "result": false
    },
    {
        "description": "{\"and\":[{\">\":[3,1]},{\"<\":[1,3]}]}",
        "rule": {
            "and": [
                { ">": [3, 1]              },
                {              "<": [1, 3] }
            ]
        },
        "result": true
    },
    {
        "description": "{\"?:\":[{\">\":[3,1]},\"visible\",\"hidden\"]}",
        "rule": {
            "?:": [
                { ">": [3, 1] },
                "visible",
                "hidden"
            ]
        },
        "result": "visible"
    },
    "# Data-Driven",
    {
        "description": "{\"var\":[\"a\"]}",
        "rule": { "var": ["a"] },
        "data": {"a": 1},
        "result": 1
    },
    {
        "description": "{\"var\":[\"b\"]}",
        "rule": { "var": ["b"] },
        "data": {"a": 1},
        "result": null
    },
    {
        "description": "{\"var\":[\"a\"]}",
        "rule": { "var": ["a"] },
        "data": null,
        "result": null
    },
    { "description": "{\"var\":\"a\"}", "rule": {"var": "a"}, "data": {"a": 1}, "result": 1 },
    { "description": "{\"var\":\"b\"}", "rule": {"var": "b"}, "data": {"a": 1}, "result": null },
    { "description": "{\"var\":\"a\"}", "rule": {"var": "a"}, "data": null, "result": null },
    {
        "description": "{\"var\":[\"a\",1]}",
        "rule": { "var": ["a", 1] },
        "data": null,
        "result": 1
    },
    {
        "description": "{\"var\":[\"b\",2]}",
        "rule": { "var": ["b", 2] },
        "data": {"a": 1},
        "result": 2
    },
    {
        "description": "{\"var\":\"a.b\"}",
        "rule": {"var": "a.b"},
        "data": { "a": {"b": "c"} },
        "result": "c"
    },
    {
        "description": "{\"var\":\"a.q\"}",
        "rule": {"var": "a.q"},
        "data": { "a": {"b": "c"} },
        "result": null
    },
    {
        "description": "{\"var\":[\"a.q\",9]}",
        "rule": { "var": ["a.q", 9] },
        "data": { "a": {"b": "c"} },
        "result": 9
    },
    {
        "description": "{\"var\":1}",
        "rule": {"var": 1},
        "data": ["apple", "banana"],
        "result": "banana"
    },
    {
        "description": "{\"var\":\"1\"}",
        "rule": {"var": "1"},
        "data": ["apple", "banana"],
        "result": "banana"
    },
    {
        "description": "{\"var\":\"1.1\"}",
        "rule": {"var": "1.1"},
        "data": [ "apple", ["banana", "beer"] ],
        "result": "beer"
    },
    {
        "description": "{\"and\":[{\"<\":[{\"var\":\"temp\"},110]},{\"==\":[{\"var\":\"pie.filling\"},\"apple\"]}]}",
        "rule": {
            "and": [
                {
                    "<": [ {"var": "temp"}, 110 ]
                },
                {
                    "==": [ {"var": "pie.filling"}, "apple" ]
                }
            ]
        },
        "data": { "temp": 100, "pie": {"filling": "apple"} },
        "result": true
    },
    {
        "description": "{\"var\":[{\"?:\":[{\"<\":[{\"var\":\"temp\"},110]},\"pie.filling\",\"pie.eta\"]}]}",
        "rule": {
            "var": [
                {
                    "?:": [
                        {
                            "<": [ {"var": "temp"}, 110 ]
                        },
                        "pie.filling",
                        "pie.eta"
                    ]
                }
            ]
        },
        "data": { "temp": 100, "pie": {"filling": "apple", "eta": "60s"} },
        "result": "apple"
    },
    {
        "description": "{\"in\":[{\"var\":\"filling\"},[\"apple\",\"cherry\"]]}",
        "rule": {
            "in": [ {"var": "filling"}, ["apple", "cherry"] ]
        },
        "data": {"filling": "apple"},
        "result": true
    },
    {
        "description": "{\"var\":\"a.b.c\"}",
        "rule": {"var": "a.b.c"},
        "data": null,
        "result": null
    },
    {
        "description": "{\"var\":\"a.b.c\"}",
        "rule": {"var": "a.b.c"},
        "data": {"a": null},
        "result": null
    },
    {
        "description": "{\"var\":\"a.b.c\"}",
        "rule": {"var": "a.b.c"},
        "data": { "a": {"b": null} },
        "result": null
    },
    { "description": "{\"var\":\"\"}", "rule": {"var": ""}, "data": 1, "result": 1 },
    { "description": "{\"var\":null}", "rule": {"var": null}, "data": 1, "result": 1 },
    { "description": "{\"var\":[]}", "rule": {"var": []}, "data": 1, "result": 1 },
    "Missing",
    { "description": "{\"missing\":[]}", "rule": {"missing": []}, "data": null, "result": [] },
    {
        "description": "{\"missing\":[\"a\"]}",
        "rule": { "missing": ["a"] },
        "data": null,
        "result": ["a"]
    },
    {
        "description": "{\"missing\":\"a\"}",
        "rule": {"missing": "a"},
        "data": null,
        "result": ["a"]
    },
    {
        "description": "{\"missing\":\"a\"}",
        "rule": {"missing": "a"},
        "data": {"a": "apple"},
        "result": []
    },
    {
        "description": "{\"missing\":[\"a\"]}",
        "rule": { "missing": ["a"] },
        "data": {"a": "apple"},
        "result": []
    },
    {
        "description": "{\"missing\":[\"a\",\"b\"]}",
        "rule": { "missing": ["a", "b"] },
        "data": {"a": "apple"},
        "result": ["b"]
    },
    {
        "description": "{\"missing\":[\"a\",\"b\"]}",
        "rule": { "missing": ["a", "b"] },
        "data": {"b": "banana"},
        "result": ["a"]
    },
    {
        "description": "{\"missing\":[\"a\",\"b\"]}",
        "rule": { "missing": ["a", "b"] },
        "data": {"a": "apple", "b": "banana"},
        "result": []
    },
    {
        "description": "{\"missing\":[\"a\",\"b\"]}",
        "rule": { "missing": ["a", "b"] },
        "result": ["a", "b"]
    },
    {
        "description": "{\"missing\":[\"a\",\"b\"]}",
        "rule": { "missing": ["a", "b"] },
        "data": null,
        "result": ["a", "b"]
    },
    {
        "description": "{\"missing\":[\"a.b\"]}",
        "rule": { "missing": ["a.b"] },
        "data": null,
        "result": ["a.b"]
    },
    {
        "description": "{\"missing\":[\"a.b\"]}",
        "rule": { "missing": ["a.b"] },
        "data": {"a": "apple"},
        "result": ["a.b"]
    },
    {
        "description": "{\"missing\":[\"a.b\"]}",
        "rule": { "missing": ["a.b"] },
        "data": { "a": {"c": "apple cake"} },
        "result": ["a.b"]
    },
    {
        "description": "{\"missing\":[\"a.b\"]}",
        "rule": { "missing": ["a.b"] },
        "data": { "a": {"b": "apple brownie"} },
        "result": []
    },
    {
        "description": "{\"missing\":[\"a.b\",\"a.c\"]}",
        "rule": { "missing": ["a.b", "a.c"] },
        "data": { "a": {"b": "apple brownie"} },
        "result": ["a.c"]
    },
    "Missing some",
    {
        "description": "{\"missing_some\":[1,[\"a\",\"b\"]]}",
        "rule": {
            "missing_some": [ 1, ["a", "b"] ]
        },
        "data": {"a": "apple"},
        "result": []
    },
    {
        "description": "{\"missing_some\":[1,[\"a\",\"b\"]]}",
        "rule": {
            "missing_some": [ 1, ["a", "b"] ]
        },
        "data": {"b": "banana"},
        "result": []
    },
    {
        "description": "{\"missing_some\":[1,[\"a\",\"b\"]]}",
        "rule": {
            "missing_some": [ 1, ["a", "b"] ]
        },
        "data": {"a": "apple", "b": "banana"},
        "result": []
    },
    {
        "description": "{\"missing_some\":[1,[\"a\",\"b\"]]}",
        "rule": {
            "missing_some": [ 1, ["a", "b"] ]
        },
        "data": {"c": "carrot"},
        "result": ["a", "b"]
    },
    {
        "description": "{\"missing_some\":[2,[\"a\",\"b\",\"c\"]]}",
        "rule": {
            "missing_some": [ 2, ["a", "b", "c"] ]
        },
        "data": {"a": "apple", "b": "banana"},
        "result": []
    },
    {
        "description": "{\"missing_some\":[2,[\"a\",\"b\",\"c\"]]}",
        "rule": {
            "missing_some": [ 2, ["a", "b", "c"] ]
        },
        "data": {"a": "apple", "c": "carrot"},
        "result": []
    },
    {
        "description": "{\"missing_some\":[2,[\"a\",\"b\",\"c\"]]}",
        "rule": {
            "missing_some": [ 2, ["a", "b", "c"] ]
        },
        "data": {"a": "apple", "b": "banana", "c": "carrot"},
        "result": []
    },
    {
        "description": "{\"missing_some\":[2,[\"a\",\"b\",\"c\"]]}",
        "rule": {
            "missing_some": [ 2, ["a", "b", "c"] ]
        },
        "data": {"a": "apple", "d": "durian"},
        "result": ["b", "c"]
    },
    {
        "description": "{\"missing_some\":[2,[\"a\",\"b\",\"c\"]]}",
        "rule": {
            "missing_some": [ 2, ["a", "b", "c"] ]
        },
        "data": {"d": "durian", "e": "eggplant"},
        "result": ["a", "b", "c"]
    },
    "Missing and If are friends, because empty arrays are falsey in JsonLogic",
    {
        "description": "{\"if\":[{\"missing\":\"a\"},\"missed it\",\"found it\"]}",
        "rule": {
            "if": [ {"missing": "a"}, "missed it", "found it" ]
        },
        "data": {"a": "apple"},
        "result": "found it"
    },
    {
        "description": "{\"if\":[{\"missing\":\"a\"},\"missed it\",\"found it\"]}",
        "rule": {
            "if": [ {"missing": "a"}, "missed it", "found it" ]
        },
        "data": {"b": "banana"},
        "result": "missed it"
    },
    "Missing, Merge, and If are friends. VIN is always required, APR is only required if financing is true.",
    {
        "description": "{\"missing\":{\"merge\":[\"vin\",{\"if\":[{\"var\":\"financing\"},[\"apr\"],[]]}]}}",
        "rule": {
            "missing": {
                "merge": [
                    "vin",
                    {
                        "if": [ {"var": "financing"}, ["apr"], [] ]
                    }
                ]
            }
        },
        "data": {"financing": true},
        "result": ["vin", "apr"]
    },
    {
        "description": "{\"missing\":{\"merge\":[\"vin\",{\"if\":[{\"var\":\"financing\"},[\"apr\"],[]]}]}}",
        "rule": {
            "missing": {
                "merge": [
                    "vin",
                    {
                        "if": [ {"var": "financing"}, ["apr"], [] ]
                    }
                ]
            }
        },
        "data": {"financing": false},
        "result": ["vin"]
    },
    "Filter, map, all, none, and some",
    {
        "description": "{\"filter\":[{\"var\":\"integers\"},true]}",
        "rule": {
            "filter": [ {"var": "integers"}, true ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": [1, 2, 3]
    },
    {
        "description": "{\"filter\":[{\"var\":\"integers\"},false]}",
        "rule": {
            "filter": [ {"var": "integers"}, false ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": []
    },
    {
        "description": "{\"filter\":[{\"var\":\"integers\"},{\">=\":[{\"var\":\"\"},2]}]}",
        "rule": {
            "filter": [
                {"var": "integers"},
                {
                    ">=": [ {"var": ""}, 2 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": [2, 3]
    },
    {
        "description": "{\"filter\":[{\"var\":\"integers\"},{\"%\":[{\"var\":\"\"},2]}]}",
        "rule": {
            "filter": [
                {"var": "integers"},
                {
                    "%": [ {"var": ""}, 2 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": [1, 3]
    },
    {
        "description": "{\"map\":[{\"var\":\"integers\"},{\"*\":[{\"var\":\"\"},2]}]}",
        "rule": {
            "map": [
                {"var": "integers"},
                {
                    "*": [ {"var": ""}, 2 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": [2, 4, 6]
    },
    {
        "description": "{\"map\":[{\"var\":\"integers\"},{\"*\":[{\"var\":\"\"},2]}]}",
        "rule": {
            "map": [
                {"var": "integers"},
                {
                    "*": [ {"var": ""}, 2 ]
                }
            ]
        },
        "data": null,
        "result": []
    },
    {
        "description": "{\"map\":[{\"var\":\"desserts\"},{\"var\":\"qty\"}]}",
        "rule": {
            "map": [ {"var": "desserts"}, {"var": "qty"} ]
        },
        "data": {
            "desserts": [
                {"name": "apple"  , "qty": 1},
                {"name": "brownie", "qty": 2},
                {"name": "cupcake", "qty": 3}
            ]
        },
        "result": [1, 2, 3]
    },
    {
        "description": "{\"reduce\":[{\"var\":\"integers\"},{\"+\":[{\"var\":\"current\"},{\"var\":\"accumulator\"}]},0]}",
        "rule": {
            "reduce": [
                {"var": "integers"},
                {
                    "+": [ {"var": "current"}, {"var": "accumulator"} ]
                },
                0
            ]
        },
        "data": { "integers": [1, 2, 3, 4] },
        "result": 10
    },
    {
        "description": "{\"reduce\":[{\"var\":\"integers\"},{\"+\":[{\"var\":\"current\"},{\"var\":\"accumulator\"}]},{\"var\":\"start_with\"}]}",
        "rule": {
            "reduce": [
                {"var": "integers"},
                {
                    "+": [ {"var": "current"}, {"var": "accumulator"} ]
                },
                {"var": "start_with"}
            ]
        },
        "data": { "integers": [1, 2, 3, 4], "start_with": 59 },
        "result": 69
    },
    {
        "description": "{\"reduce\":[{\"var\":\"integers\"},{\"+\":[{\"var\":\"current\"},{\"var\":\"accumulator\"}]},0]}",
        "rule": {
            "reduce": [
                {"var": "integers"},
                {
                    "+": [ {"var": "current"}, {"var": "accumulator"} ]
                },
                0
            ]
        },
        "data": null,
        "result": 0
    },
    {
        "description": "{\"reduce\":[{\"var\":\"integers\"},{\"*\":[{\"var\":\"current\"},{\"var\":\"accumulator\"}]},1]}",
        "rule": {
            "reduce": [
                {"var": "integers"},
                {
                    "*": [ {"var": "current"}, {"var": "accumulator"} ]
                },
                1
            ]
        },
        "data": { "integers": [1, 2, 3, 4] },
        "result": 24
    },
    {
        "description": "{\"reduce\":[{\"var\":\"integers\"},{\"*\":[{\"var\":\"current\"},{\"var\":\"accumulator\"}]},0]}",
        "rule": {
            "reduce": [
                {"var": "integers"},
                {
                    "*": [ {"var": "current"}, {"var": "accumulator"} ]
                },
                0
            ]
        },
        "data": { "integers": [1, 2, 3, 4] },
        "result": 0
    },
    {
        "description": "{\"reduce\":[{\"var\":\"desserts\"},{\"+\":[{\"var\":\"accumulator\"},{\"var\":\"current.qty\"}]},0]}",
        "rule": {
            "reduce": [
                {"var": "desserts"},
                {
                    "+": [ {"var": "accumulator"}, {"var": "current.qty"} ]
                },
                0
            ]
        },
        "data": {
            "desserts": [
                {"name": "apple"  , "qty": 1},
                {"name": "brownie", "qty": 2},
                {"name": "cupcake", "qty": 3}
            ]
        },
        "result": 6
    },
    {
        "description": "{\"all\":[{\"var\":\"integers\"},{\">=\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "all": [
                {"var": "integers"},
                {
                    ">=": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": true
    },
    {
        "description": "{\"all\":[{\"var\":\"integers\"},{\"==\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "all": [
                {"var": "integers"},
                {
                    "==": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": false
    },
    {
        "description": "{\"all\":[{\"var\":\"integers\"},{\"<\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "all": [
                {"var": "integers"},
                {
                    "<": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": false
    },
    {
        "description": "{\"all\":[{\"var\":\"integers\"},{\"<\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "all": [
                {"var": "integers"},
                {
                    "<": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": {"integers": []},
        "result": false
    },
    {
        "description": "{\"all\":[{\"var\":\"items\"},{\">=\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "all": [
                {"var": "items"},
                {
                    ">=": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": true
    },
    {
        "description": "{\"all\":[{\"var\":\"items\"},{\">\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "all": [
                {"var": "items"},
                {
                    ">": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": false
    },
    {
        "description": "{\"all\":[{\"var\":\"items\"},{\"<\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "all": [
                {"var": "items"},
                {
                    "<": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": false
    },
    {
        "description": "{\"all\":[{\"var\":\"items\"},{\">=\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "all": [
                {"var": "items"},
                {
                    ">=": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {"items": []},
        "result": false
    },
    {
        "description": "{\"none\":[{\"var\":\"integers\"},{\">=\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "none": [
                {"var": "integers"},
                {
                    ">=": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": false
    },
    {
        "description": "{\"none\":[{\"var\":\"integers\"},{\"==\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "none": [
                {"var": "integers"},
                {
                    "==": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": false
    },
    {
        "description": "{\"none\":[{\"var\":\"integers\"},{\"<\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "none": [
                {"var": "integers"},
                {
                    "<": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": true
    },
    {
        "description": "{\"none\":[{\"var\":\"integers\"},{\"<\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "none": [
                {"var": "integers"},
                {
                    "<": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": {"integers": []},
        "result": true
    },
    {
        "description": "{\"none\":[{\"var\":\"items\"},{\">=\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "none": [
                {"var": "items"},
                {
                    ">=": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": false
    },
    {
        "description": "{\"none\":[{\"var\":\"items\"},{\">\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "none": [
                {"var": "items"},
                {
                    ">": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": false
    },
    {
        "description": "{\"none\":[{\"var\":\"items\"},{\"<\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "none": [
                {"var": "items"},
                {
                    "<": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": true
    },
    {
        "description": "{\"none\":[{\"var\":\"items\"},{\">=\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "none": [
                {"var": "items"},
                {
                    ">=": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {"items": []},
        "result": true
    },
    {
        "description": "{\"some\":[{\"var\":\"integers\"},{\">=\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "some": [
                {"var": "integers"},
                {
                    ">=": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": true
    },
    {
        "description": "{\"some\":[{\"var\":\"integers\"},{\"==\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "some": [
                {"var": "integers"},
                {
                    "==": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": true
    },
    {
        "description": "{\"some\":[{\"var\":\"integers\"},{\"<\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "some": [
                {"var": "integers"},
                {
                    "<": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": { "integers": [1, 2, 3] },
        "result": false
    },
    {
        "description": "{\"some\":[{\"var\":\"integers\"},{\"<\":[{\"var\":\"\"},1]}]}",
        "rule": {
            "some": [
                {"var": "integers"},
                {
                    "<": [ {"var": ""}, 1 ]
                }
            ]
        },
        "data": {"integers": []},
        "result": false
    },
    {
        "description": "{\"some\":[{\"var\":\"items\"},{\">=\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "some": [
                {"var": "items"},
                {
                    ">=": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": true
    },
    {
        "description": "{\"some\":[{\"var\":\"items\"},{\">\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "some": [
                {"var": "items"},
                {
                    ">": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": true
    },
    {
        "description": "{\"some\":[{\"var\":\"items\"},{\"<\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "some": [
                {"var": "items"},
                {
                    "<": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {
            "items": [ {"qty": 1, "sku": "apple"}, {"qty": 2, "sku": "banana"} ]
        },
        "result": false
    },
    {
        "description": "{\"some\":[{\"var\":\"items\"},{\">=\":[{\"var\":\"qty\"},1]}]}",
        "rule": {
            "some": [
                {"var": "items"},
                {
                    ">=": [ {"var": "qty"}, 1 ]
                }
            ]
        },
        "data": {"items": []},
        "result": false
    },
    "EOF"
]