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