jsonlogic-hs-0.1.0.0: test/community/control/doublebang.json
[
"Basic Checks",
{
"description": "Double bang on true returns true",
"rule": { "!!": [true] },
"data": null,
"result": true
},
{
"description": "Double bang on false returns false",
"rule": { "!!": [false] },
"data": null,
"result": false
},
{
"description": "Double bang on null returns false",
"rule": { "!!": [null] },
"data": null,
"result": false
},
{
"description": "Double bang on empty array returns false",
"rule": { "!!": [[]] },
"data": null,
"result": false
},
{
"description": "Double bang on non-empty array returns true",
"rule": { "!!": [[1]] },
"data": null,
"result": true
},
{
"description": "Double bang on empty string returns false",
"rule": { "!!": [""] },
"data": null,
"result": false
},
{
"description": "Double bang on non-empty string returns true",
"rule": { "!!": ["hello"] },
"data": null,
"result": true
},
{
"description": "Double bang on zero returns false",
"rule": { "!!": [0] },
"data": null,
"result": false
},
{
"description": "Double bang on one returns true",
"rule": { "!!": [1] },
"data": null,
"result": true
},
{
"description": "Double bang on string zero returns true",
"rule": { "!!": ["0"] },
"data": null,
"result": true
},
{
"description": "Double bang on empty object returns true",
"rule": { "!!": [{}] },
"data": null,
"result": true
},
{
"description": "Double bang on empty string returns false",
"rule": { "!!": [""] },
"data": null,
"result": false
},
{
"description": "Double bang preserves truthy values",
"rule": { "!!": [[1, 2]] },
"data": null,
"result": true
},
"Valid Arguments Checks",
{
"description": "Double bang without arguments return false",
"rule": { "!!": [] },
"data": null,
"result": false
},
"Complex Evaluations",
{
"description": "Double bang with nested var operation",
"rule": { "!!": [{"var": "value"}] },
"data": {"value": false},
"result": false
},
{
"description": "Double bang with nested comparison",
"rule": { "!!": [{"==": [1, 2]}] },
"data": null,
"result": false
},
{
"description": "Double bang with nested AND",
"rule": { "!!": [{"and": [true, true]}] },
"data": null,
"result": true
},
{
"description": "Double bang with nested OR",
"rule": { "!!": [{"or": [false, false]}] },
"data": null,
"result": false
},
{
"description": "Double bang with missing variable returns false",
"rule": { "!!": [{"var": "missing"}] },
"data": {},
"result": false
},
{
"description": "Double bang after NOT negates the NOT",
"rule": { "!!": [{"!": [true]}] },
"data": null,
"result": false
},
{
"description": "Double bang with undefined variable",
"rule": { "!!": [{"var": "undefined"}] },
"data": null,
"result": false
},
{
"description": "Double bang on negative number returns true",
"rule": { "!!": [-1] },
"data": null,
"result": true
},
{
"description": "Double bang on NaN returns false",
"rule": { "!!": [{"*": [0, 0]}] },
"data": null,
"result": false
}
]