logical-not-masquerades.js   [plain text]


function foo(value) {
    return !!value;
}

noInline(foo);

var tests = [
    [0, false],
    [1, true],
    [0/0, false],
    [0/-1, false],
    [0.0, false],
    ["", false],
    ["f", true],
    ["hello", true],
    [{}, true],
    [[], true],
    [null, false],
    [void 0, false],
    [false, false],
    [true, true],
    [makeMasquerader(), false]
];

for (var i = 0; i < 10000; ++i) {
    for (var j = 0; j < tests.length; ++j) {
        var input = tests[j][0];
        var expected = tests[j][1];
        var result = foo(input);
        if (result !== expected)
            throw "Error: bad result for " + input + ": " + result;
    }
}