packages feed

jsonlogic-hs-0.1.0.0: test/community/array/all.json

[
    "Basic Operations",
    {
        "description": "All elements are positive",
        "rule": {
            "all": [
                {"var": "numbers"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {"numbers": [1, 2, 3, 4]},
        "result": true
    },
    {
        "description": "Not all elements are positive",
        "rule": {
            "all": [
                {"var": "numbers"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {"numbers": [-1, 0, 1, 2]},
        "result": false
    },
    "Object Operations",
    {
        "description": "All objects meet age requirement",
        "rule": {
            "all": [
                {"var": "people"},
                {">=": [{"var": "age"}, 21]}
            ]
        },
        "data": {
            "people": [
                {"name": "John", "age": 25},
                {"name": "Jane", "age": 22},
                {"name": "Bob", "age": 30}
            ]
        },
        "result": true
    },
    {
        "description": "Not all objects meet criteria",
        "rule": {
            "all": [
                {"var": "items"},
                {">=": [{"var": "stock"}, 10]}
            ]
        },
        "data": {
            "items": [
                {"id": 1, "stock": 15},
                {"id": 2, "stock": 8},
                {"id": 3, "stock": 12}
            ]
        },
        "result": false
    },
    "Edge Cases",
    {
        "description": "Empty array returns false",
        "rule": {
            "all": [
                {"var": "empty"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {"empty": []},
        "result": false
    },
    {
        "description": "Null array should throw",
        "rule": {
            "all": [
                null,
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": null,
        "error": {"type": "Invalid Arguments"}
    },
    {
        "description": "Missing array returns error",
        "rule": {
            "all": [
                {"var": "missing"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {},
        "error": {"type": "Invalid Arguments"}
    },
    {
        "description": "Null predicate returns false",
        "rule": {
            "all": [
                {"var": "numbers"},
                null
            ]
        },
        "data": {"numbers": [1, 2, 3]},
        "result": false
    },
    "Complex Predicates",
    {
        "description": "All with compound conditions",
        "rule": {
            "all": [
                {"var": "data"},
                {"and": [
                    {">=": [{"var": "score"}, 0]},
                    {"<=": [{"var": "score"}, 100]}
                ]}
            ]
        },
        "data": {
            "data": [
                {"score": 75},
                {"score": 82},
                {"score": 95}
            ]
        },
        "result": true
    },
    {
        "description": "All with nested array operations",
        "rule": {
            "all": [
                {"var": "classes"},
                {"all": [
                    {"var": "students"},
                    {">=": [{"var": "grade"}, 60]}
                ]}
            ]
        },
        "data": {
            "classes": [
                {"students": [{"grade": 80}, {"grade": 75}]},
                {"students": [{"grade": 90}, {"grade": 85}]}
            ]
        },
        "result": true
    },
    "Type Coercion",
    {
        "description": "All with mixed types coercion to boolean",
        "rule": {
            "all": [
                {"var": "values"},
                {"!!": [{"var": ""}]}
            ]
        },
        "data": {"values": [1, "hello", true, [1], {"x": 1}]},
        "result": true
    },
    {
        "description": "All with string comparison",
        "rule": {
            "all": [
                {"var": "words"},
                {">": [{"var": "length"}, 3]}
            ]
        },
        "data": {
            "words": [
                {"text": "hello", "length": 5},
                {"text": "world", "length": 5},
                {"text": "test", "length": 4}
            ]
        },
        "result": true
    }
]