| function shouldThrow(expr) { |
| let testFunc = new Function(expr); |
| for (let i = 0; i < 10000; i++) { |
| shouldThrow("foo.apply(undefined, true)"); |
| shouldThrow("foo.apply(undefined, false)"); |
| shouldThrow("foo.apply(undefined, 100)"); |
| shouldThrow("foo.apply(undefined, 123456789.12345)"); |
| shouldThrow("foo.apply(undefined, 1.0/1.0)"); |
| shouldThrow("foo.apply(undefined, 1.0/0)"); |
| shouldThrow("foo.apply(undefined, 'hello')"); |
| shouldThrow("foo.apply(undefined, Symbol())"); |
| for (let i = 0; i < 10000; i++) { |
| assert(bar.apply(undefined, undefined) === 0); |
| assert(bar.apply(undefined, null) === 0); |
| assert(bar.apply(undefined, {}) === 0); |
| assert(bar.apply(undefined, []) === 0); |
| assert(bar.apply(undefined, function() {}) === 0); |