Files
dewedev/node_modules/es-shim-unscopables/test/with.js
dwindown 7f2dd5260f Initial commit: Developer Tools MVP with visual editor
- Complete React app with 7 developer tools
- JSON Tool with visual structured editor
- Serialize Tool with visual structured editor
- URL, Base64, CSV/JSON, Beautifier, Diff tools
- Responsive navigation with dropdown menu
- Dark/light mode toggle
- Mobile-responsive design with sticky header
- All tools working with copy/paste functionality
2025-08-02 09:31:26 +07:00

44 lines
1.3 KiB
JavaScript

/* eslint no-restricted-syntax: 0, no-with: 0, strict: 0 */
var test = require('tape');
var shimUnscopables = require('../');
test('`with` statement', { skip: typeof Symbol !== 'function' || !Symbol.unscopables }, function (t) {
// @ts-expect-error this variable is declared in case unscopables doesn't work
var entries;
// @ts-expect-error this variable is declared in case unscopables doesn't work
var concat;
// @ts-expect-error `with` unsupported
with ([]) {
t.equal(concat, Array.prototype.concat, 'concat is dynamically bound');
t.notEqual(entries, Array.prototype.entries, 'entries is not dynamically bound');
}
/** @type {Record<PropertyKey, unknown>} */
var obj = {
foo: 1,
bar: 2
};
// @ts-expect-error this variable is declared in case unscopables doesn't work
var foo;
// @ts-expect-error this variable is declared in case unscopables doesn't work
var bar;
obj[Symbol.unscopables] = { foo: true };
// @ts-expect-error `with` unsupported
with (obj) {
t.equal(foo, undefined);
t.equal(bar, obj.bar);
}
shimUnscopables('concat');
// @ts-expect-error `with` unsupported
with ([]) {
t.notEqual(concat, Array.prototype.concat, 'concat is no longer dynamically bound');
t.notEqual(entries, Array.prototype.entries, 'entries is still not dynamically bound');
}
t.end();
});