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
}
]