packages feed

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

[
    "Basic Operations",
    {
        "description": "Some elements are positive",
        "rule": {
            "some": [
                {"var": "numbers"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {"numbers": [-2, -1, 0, 1]},
        "result": true
    },
    {
        "description": "No elements are positive",
        "rule": {
            "some": [
                {"var": "numbers"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {"numbers": [-3, -2, -1]},
        "result": false
    },
    "Object Operations",
    {
        "description": "Some objects meet age requirement",
        "rule": {
            "some": [
                {"var": "people"},
                {">=": [{"var": "age"}, 21]}
            ]
        },
        "data": {
            "people": [
                {"name": "John", "age": 18},
                {"name": "Jane", "age": 22},
                {"name": "Bob", "age": 17}
            ]
        },
        "result": true
    },
    {
        "description": "Some objects meet stock threshold",
        "rule": {
            "some": [
                {"var": "items"},
                {">": [{"var": "stock"}, 100]}
            ]
        },
        "data": {
            "items": [
                {"id": 1, "stock": 50},
                {"id": 2, "stock": 150},
                {"id": 3, "stock": 75}
            ]
        },
        "result": true
    },
    "Edge Cases",
    {
        "description": "Empty array returns false",
        "rule": {
            "some": [
                {"var": "empty"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {"empty": []},
        "result": false
    },
    {
        "description": "Null array should throw",
        "rule": {
            "some": [
                null,
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": null,
        "error": {"type": "Invalid Arguments"}
    },
    {
        "description": "Missing array returns error",
        "rule": {
            "some": [
                {"var": "missing"},
                {">": [{"var": ""}, 0]}
            ]
        },
        "data": {},
        "error": {"type": "Invalid Arguments"}
    },
    {
        "description": "Null predicate returns false",
        "rule": {
            "some": [
                {"var": "numbers"},
                null
            ]
        },
        "data": {"numbers": [1, 2, 3]},
        "result": false
    },
    "Complex Predicates",
    {
        "description": "Some with compound conditions",
        "rule": {
            "some": [
                {"var": "scores"},
                {"and": [
                    {">=": [{"var": ""}, 90]},
                    {"<=": [{"var": ""}, 100]}
                ]}
            ]
        },
        "data": {
            "scores": [75, 85, 95, 65]
        },
        "result": true
    },
    {
        "description": "Some with nested array operations",
        "rule": {
            "some": [
                {"var": "classes"},
                {"some": [
                    {"var": "students"},
                    {"==": [{"var": "grade"}, "A"]}
                ]}
            ]
        },
        "data": {
            "classes": [
                {"students": [{"grade": "B"}, {"grade": "C"}]},
                {"students": [{"grade": "A"}, {"grade": "B"}]}
            ]
        },
        "result": true
    },
    "Type Coercion",
    {
        "description": "Some with mixed types coercion to boolean",
        "rule": {
            "some": [
                {"var": "values"},
                {"!!": [{"var": ""}]}
            ]
        },
        "data": {"values": [0, "", false, 1, null]},
        "result": true
    },
    {
        "description": "Some with string operations",
        "rule": {
            "some": [
                {"var": "words"},
                {"in": ["a", {"var": ""}]}
            ]
        },
        "data": {"words": ["hello", "world", "apple"]},
        "result": true
    },
    {
        "description": "Some with empty strings",
        "rule": {
            "some": [
                {"var": "strings"},
                {"==": [{"var": ""}, ""]}
            ]
        },
        "data": {"strings": ["hello", "", "world"]},
        "result": true
    }
]