packages feed

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

[
    "Basic Operations",
    {
        "description": "None of the elements are negative",
        "rule": {
            "none": [
                {"var": "numbers"},
                {"<": [{"var": ""}, 0]}
            ]
        },
        "data": {"numbers": [1, 2, 3, 4]},
        "result": true
    },
    {
        "description": "Some elements are negative (none returns false)",
        "rule": {
            "none": [
                {"var": "numbers"},
                {"<": [{"var": ""}, 0]}
            ]
        },
        "data": {"numbers": [-1, 0, 1, 2]},
        "result": false
    },
    "Object Operations",
    {
        "description": "None of the objects are underage",
        "rule": {
            "none": [
                {"var": "people"},
                {"<": [{"var": "age"}, 18]}
            ]
        },
        "data": {
            "people": [
                {"name": "John", "age": 25},
                {"name": "Jane", "age": 22},
                {"name": "Bob", "age": 19}
            ]
        },
        "result": true
    },
    {
        "description": "None of items are out of stock",
        "rule": {
            "none": [
                {"var": "items"},
                {"==": [{"var": "stock"}, 0]}
            ]
        },
        "data": {
            "items": [
                {"id": 1, "stock": 5},
                {"id": 2, "stock": 15},
                {"id": 3, "stock": 3}
            ]
        },
        "result": true
    },
    "Edge Cases",
    {
        "description": "Empty array returns true",
        "rule": {
            "none": [
                {"var": "empty"},
                {"<": [{"var": ""}, 0]}
            ]
        },
        "data": {"empty": []},
        "result": true
    },
    {
        "description": "Null array should throw",
        "rule": {
            "none": [
                null,
                {"<": [{"var": ""}, 0]}
            ]
        },
        "data": null,
        "error": {"type": "Invalid Arguments"}
    },
    {
        "description": "Missing array returns error",
        "rule": {
            "none": [
                {"var": "missing"},
                {"<": [{"var": ""}, 0]}
            ]
        },
        "data": {},
        "error": {"type": "Invalid Arguments"}
    },
    {
        "description": "Null predicate returns true",
        "rule": {
            "none": [
                {"var": "numbers"},
                null
            ]
        },
        "data": {"numbers": [1, 2, 3]},
        "result": true
    },
    "Complex Predicates",
    {
        "description": "None with compound conditions",
        "rule": {
            "none": [
                {"var": "scores"},
                {"and": [
                    {"<": [{"var": ""}, 60]},
                    {">": [{"var": ""}, 0]}
                ]}
            ]
        },
        "data": {
            "scores": [75, 85, 95, 65]
        },
        "result": true
    },
    {
        "description": "None with nested array operations",
        "rule": {
            "none": [
                {"var": "classes"},
                {"none": [
                    {"var": "students"},
                    {"==": [{"var": "grade"}, "F"]}
                ]}
            ]
        },
        "data": {
            "classes": [
                {"students": [{"grade": "B"}, {"grade": "C"}]},
                {"students": [{"grade": "A"}, {"grade": "B"}]}
            ]
        },
        "result": false
    },
    "Type Coercion",
    {
        "description": "None with mixed types coercion to boolean",
        "rule": {
            "none": [
                {"var": "values"},
                {"!!": [{"var": ""}]}
            ]
        },
        "data": {"values": [0, "", false, null]},
        "result": true
    },
    {
        "description": "None with string operations",
        "rule": {
            "none": [
                {"var": "words"},
                {"in": ["x", {"var": ""}]}
            ]
        },
        "data": {"words": ["hello", "world", "test"]},
        "result": true
    },
    {
        "description": "None with zero length strings",
        "rule": {
            "none": [
                {"var": "strings"},
                {"==": [{"var": "length"}, 0]}
            ]
        },
        "data": {
            "strings": [
                {"text": "hello", "length": 5},
                {"text": "world", "length": 5}
            ]
        },
        "result": true
    }
]