| 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 ], |
| ]; |
| |
| for (var i = 0; i < 1e4; ++i) { |
| for (let [ value, result ] of data) |
| shouldBe(!test(value), result); |
| } |