packages feed

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