Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
assert.throws(() => {
Set.prototype.forEach.call(new Map(), () => { /* empty */ });
}, 'non-generic');
});
try {
new Map(createIterable([null, 1, 2], {
return() {
return done = true;
},
}));
} catch { /* empty */ }
assert.ok(done, '.return #throw');
const array = [];
done = false;
array['@@iterator'] = undefined;
array[Symbol.iterator] = function () {
done = true;
return getIteratorMethod([]).call(this);
};
new Map(array);
assert.ok(done);
const object = {};
new Map().set(object, 1);
if (DESCRIPTORS) {
const results = [];
for (const key in object) results.push(key);
assert.arrayEqual(results, []);
assert.arrayEqual(keys(object), []);
}
assert.arrayEqual(getOwnPropertyNames(object), []);
if (getOwnPropertySymbols) assert.arrayEqual(getOwnPropertySymbols(object), []);
if (ownKeys) assert.arrayEqual(ownKeys(object), []);
if (nativeSubclass) {
const Subclass = nativeSubclass(Map);
assert.ok(new Subclass() instanceof Subclass, 'correct subclassing with native classes #1');
assert.ok(new Subclass() instanceof Map, 'correct subclassing with native classes #2');
QUnit.test('Map#values', assert => {
assert.isFunction(Map.prototype.values);
const map = new Map();
map.set('a', 'q');
map.set('s', 'w');
map.set('d', 'e');
const iterator = map.values();
assert.isIterator(iterator);
assert.isIterable(iterator);
assert.strictEqual(iterator[Symbol.toStringTag], 'Map Iterator');
assert.deepEqual(iterator.next(), {
value: 'q',
done: false,
});
assert.deepEqual(iterator.next(), {
value: 'w',
done: false,
});
assert.deepEqual(iterator.next(), {
QUnit.test('Map#@@toStringTag', assert => {
assert.strictEqual(Map.prototype[Symbol.toStringTag], 'Map', 'Map::@@toStringTag is `Map`');
assert.strictEqual(String(new Map()), '[object Map]', 'correct stringification');
});
QUnit.test('Map#delete', assert => {
assert.isFunction(Map.prototype.delete);
const object = {};
const map = new Map();
map.set(NaN, 1);
map.set(2, 1);
map.set(3, 7);
map.set(2, 5);
map.set(1, 4);
map.set(object, 9);
assert.strictEqual(map.size, 5);
assert.ok(map.delete(NaN));
assert.strictEqual(map.size, 4);
assert.ok(!map.delete(4));
assert.strictEqual(map.size, 4);
map.delete([]);
assert.strictEqual(map.size, 4);
map.delete(object);
assert.strictEqual(map.size, 3);
const frozen = freeze({});
QUnit.test('Map#set', assert => {
assert.isFunction(Map.prototype.set);
const object = {};
let map = new Map();
map.set(NaN, 1);
map.set(2, 1);
map.set(3, 1);
map.set(2, 5);
map.set(1, 4);
map.set(object, object);
assert.ok(map.size === 5);
const chain = map.set(7, 2);
assert.strictEqual(chain, map);
map.set(7, 2);
assert.strictEqual(map.size, 6);
assert.strictEqual(map.get(7), 2);
assert.strictEqual(map.get(NaN), 1);
map.set(NaN, 42);
assert.strictEqual(map.size, 6);
assert.strictEqual(map.get(NaN), 42);
QUnit.test('Map#clear', assert => {
assert.isFunction(Map.prototype.clear);
let map = new Map();
map.clear();
assert.strictEqual(map.size, 0);
map = new Map().set(1, 2).set(2, 3).set(1, 4);
map.clear();
assert.strictEqual(map.size, 0);
assert.ok(!map.has(1));
assert.ok(!map.has(2));
const frozen = freeze({});
map = new Map().set(1, 2).set(frozen, 3);
map.clear();
assert.strictEqual(map.size, 0, 'Support frozen objects');
assert.ok(!map.has(1));
assert.ok(!map.has(frozen));
});
QUnit.test('Map Iterator', assert => {
const map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
map.set('d', 4);
const results = [];
const iterator = map.keys();
results.push(iterator.next().value);
assert.ok(map.delete('a'));
assert.ok(map.delete('b'));
assert.ok(map.delete('c'));
map.set('e');
results.push(iterator.next().value);
results.push(iterator.next().value);
assert.ok(iterator.next().done);
map.set('f');
assert.ok(iterator.next().done);
map.set(2, 5);
map.set(1, 4);
map.set(object, 9);
map.forEach((value, key) => {
count++;
result[value] = key;
});
assert.strictEqual(count, 5);
assert.deepEqual(result, {
1: NaN,
7: 3,
5: 2,
4: 1,
9: object,
});
map = new Map();
map.set('0', 9);
map.set('1', 9);
map.set('2', 9);
map.set('3', 9);
result = '';
map.forEach((value, key) => {
result += key;
if (key === '2') {
map.delete('2');
map.delete('3');
map.delete('1');
map.set('4', 9);
}
});
assert.strictEqual(result, '0124');
map = new Map([['0', 1]]);
map.set(-0, 1);
assert.strictEqual(map.size, 1);
assert.ok(map.has(0));
assert.ok(map.has(-0));
assert.strictEqual(map.get(0), 1);
assert.strictEqual(map.get(-0), 1);
map.forEach((val, key) => {
assert.ok(!is(key, -0));
});
map.delete(-0);
assert.strictEqual(map.size, 0);
map = new Map([[-0, 1]]);
map.forEach((val, key) => {
assert.ok(!is(key, -0));
});
map = new Map();
map.set(4, 4);
map.set(3, 3);
map.set(2, 2);
map.set(1, 1);
map.set(0, 0);
assert.ok(map.has(-0));
});