4cko
/usr/local/rvm/gems/ruby-3.4.7/bin:/usr/local/rvm/gems/ruby-3.4.7@global/bin:/usr/local/rvm/rubies/ruby-3.4.7/bin:/home/codespace/.vscode-remote/data/User/globalStorage/github.copilot-chat/debugCommand:/home/codespace/.vscode-remote/data/User/globalStorage/github.copilot-chat/copilotCli:/vscode/bin/linux-x64/7e7950df89d055b5a378379db9ee14290772148a/bin/remote-cli:/home/codespace/.local/bin:/home/codespace/.dotnet:/home/codespace/nvm/current/bin:/home/codespace/.php/current/bin:/home/codespace/.python/current/bin:/home/codespace/java/current/bin:/home/codespace/.ruby/current/bin:/home/codespace/.local/bin:/usr/local/python/current/bin:/usr/local/py-utils/bin:/usr/local/jupyter:/usr/local/oryx:/usr/local/go/bin:/go/bin:/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/local/sdkman/candidates/ant/current/bin:/usr/local/rvm/gems/default/bin:/usr/local/rvm/gems/default@global/bin:/usr/local/rvm/rubies/default/bin:/usr/local/share/rbenv/bin:/usr/local/php/current/bin:/opt/conda/bin:/usr/local/nvs:/usr/local/share/nvm/versions/node/v24.14.0/bin:/usr/local/hugo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/share/dotnet:/home/codespace/.dotnet/tools:/usr/local/rvm/bin
a2c64e7 | ; | |
| var test = require('tape'); | |
| var callBound = require('../'); | |
| /** @template {true} T @template U @typedef {T extends U ? T : never} AssertType */ | |
| test('callBound', function (t) { | |
| // static primitive | |
| t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); | |
| t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); | |
| // static non-function object | |
| t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); | |
| t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); | |
| t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); | |
| t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); | |
| // static function | |
| t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); | |
| t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); | |
| // prototype primitive | |
| t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); | |
| t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); | |
| var x = callBound('Object.prototype.toString'); | |
| var y = callBound('%Object.prototype.toString%'); | |
| // prototype function | |
| t.notEqual(x, Object.prototype.toString, 'Object.prototype.toString does not yield itself'); | |
| t.notEqual(y, Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); | |
| t.equal(x(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); | |
| t.equal(y(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); | |
| t['throws']( | |
| // @ts-expect-error | |
| function () { callBound('does not exist'); }, | |
| SyntaxError, | |
| 'nonexistent intrinsic throws' | |
| ); | |
| t['throws']( | |
| // @ts-expect-error | |
| function () { callBound('does not exist', true); }, | |
| SyntaxError, | |
| 'allowMissing arg still throws for unknown intrinsic' | |
| ); | |
| t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { | |
| st['throws']( | |
| function () { callBound('WeakRef'); }, | |
| TypeError, | |
| 'real but absent intrinsic throws' | |
| ); | |
| st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); | |
| st.end(); | |
| }); | |
| t.end(); | |
| }); | |