test262/implementation-contributed/javascriptcore/stress/logical-not-masquerades-as-undefined.js
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

36 lines
689 B
JavaScript

function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error('bad value: ' + actual);
}
function test(value)
{
return !value;
}
noInline(test);
var data = [
[ {}, true ],
[ true, true ],
[ false, false ],
[ -0, false ],
[ 1, true ],
[ 4.2, true ],
[ NaN, false ],
[ Infinity, true ],
[ [], true ],
[ new Date(), true ],
[ "", false ],
[ "" + "" + "", false ],
[ "Cocoa", true ],
[ undefined, false ],
[ null, false ],
[ Symbol(), true ],
[ makeMasquerader() , false]
];
for (var i = 0; i < 1e4; ++i) {
for (let [ value, result ] of data)
shouldBe(!test(value), result);
}