jsonlogic-hs-0.1.0.0: test/community/control/not.json
[
"Basic Checks",
{
"description": "NOT true returns false",
"rule": { "!": [true] },
"data": null,
"result": false
},
{
"description": "NOT false returns true",
"rule": { "!": [false] },
"data": null,
"result": true
},
{
"description": "NOT null returns true",
"rule": { "!": [null] },
"data": null,
"result": true
},
{
"description": "NOT empty array returns true",
"rule": { "!": [[]] },
"data": null,
"result": true
},
{
"description": "NOT non-empty array returns false",
"rule": { "!": [[1]] },
"data": null,
"result": false
},
{
"description": "NOT empty string returns true",
"rule": { "!": [""] },
"data": null,
"result": true
},
{
"description": "NOT non-empty string returns false",
"rule": { "!": ["hello"] },
"data": null,
"result": false
},
{
"description": "NOT zero returns true",
"rule": { "!": [0] },
"data": null,
"result": true
},
{
"description": "NOT one returns false",
"rule": { "!": [1] },
"data": null,
"result": false
},
{
"description": "NOT string zero returns false",
"rule": { "!": ["0"] },
"data": null,
"result": false
},
{
"description": "NOT empty object returns false",
"rule": { "!": [{}] },
"data": null,
"result": false
},
{
"description": "NOT with non-array argument",
"rule": { "!": true },
"data": null,
"result": false
},
{
"description": "NOT with non-array argument false",
"rule": { "!": false },
"data": null,
"result": true
},
{
"description": "NOT with non-array argument 0",
"rule": { "!": 0 },
"data": null,
"result": true
},
{
"description": "NOT with non-array argument 1",
"rule": { "!": 1 },
"data": null,
"result": false
},
"Valid Arguments Checks",
{
"description": "NOT without arguments returns true",
"rule": { "!": [] },
"data": null,
"result": true
},
"Complex Evaluations",
{
"description": "NOT with nested var operation",
"rule": { "!": [{"var": "value"}] },
"data": {"value": false},
"result": true
},
{
"description": "NOT with nested comparison",
"rule": { "!": [{"==": [1, 2]}] },
"data": null,
"result": true
},
{
"description": "NOT with nested AND",
"rule": { "!": [{"and": [true, false]}] },
"data": null,
"result": true
},
{
"description": "NOT with nested OR",
"rule": { "!": [{"or": [false, false]}] },
"data": null,
"result": true
},
{
"description": "NOT with missing variable returns true",
"rule": { "!": [{"var": "missing"}] },
"data": {},
"result": true
},
{
"description": "Double NOT preserves original boolean",
"rule": { "!": [{"!": [true]}] },
"data": null,
"result": true
},
{
"description": "NOT with undefined variable",
"rule": { "!": [{"var": "undefined"}] },
"data": null,
"result": true
}
]