packages feed

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