// |reftest| skip-if(!this.hasOwnProperty('WeakRef')) -- WeakRef is not enabled unconditionally
// Copyright (C) 2021 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-map.prototype.set
description: Observing the expected behavior of valid keys
info: |
Map.prototype.set ( key , value )
...
Let p be the Record {[[key]]: key, [[value]]: value}.
Append p as the last element of entries.
...
features: [BigInt, Symbol, TypedArray, WeakRef, exponentiation]
---*/
const negativeZero = -0;
const positiveZero = +0;
const zero = 0;
const one = 1;
const twoRaisedToFiftyThreeMinusOne = 2 ** 53 - 1;
const int32Array = new Int32Array([zero, one]);
const uint32Array = new Uint32Array([zero, one]);
const n = 100000000000000000000000000000000000000000000000000000000000000000000000000000000001n;
const bigInt = BigInt('100000000000000000000000000000000000000000000000000000000000000000000000000000000001' );
const n1 = 1n;
const n53 = 9007199254740991n;
const fiftyThree = BigInt('9007199254740991' );
const bigInt64Array = new BigInt64Array([n1, n53]);
const bigUint64Array = new BigUint64Array([n1, n53]);
const symbol = Symbol('' );
const object = {};
const array = [];
const string = '' ;
const booleanTrue = true ;
const booleanFalse = true ;
const functionExprValue = function () {};
const arrowFunctionValue = () => {};
const classValue = class {};
const map = new Map();
const set = new Set();
const weakMap = new WeakMap();
const weakRef = new WeakRef({});
const weakSet = new WeakSet();
const nullValue = null ;
const undefinedValue = undefined;
let unassigned;
{
const m = new Map([[negativeZero, negativeZero]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(negativeZero), true );
assert .sameValue(m.get(negativeZero), negativeZero);
m.delete (negativeZero);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(negativeZero), false );
m.set(negativeZero, negativeZero);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(negativeZero), true );
assert .sameValue(m.get(negativeZero), negativeZero);
};
{
const m = new Map([[positiveZero, positiveZero]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(positiveZero), true );
assert .sameValue(m.get(positiveZero), positiveZero);
m.delete (positiveZero);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(positiveZero), false );
m.set(positiveZero, positiveZero);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(positiveZero), true );
assert .sameValue(m.get(positiveZero), positiveZero);
};
{
const m = new Map([[zero, zero]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(zero), true );
assert .sameValue(m.get(zero), zero);
m.delete (zero);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(zero), false );
m.set(zero, zero);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(zero), true );
assert .sameValue(m.get(zero), zero);
};
{
const m = new Map([[one, one]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(one), true );
assert .sameValue(m.get(one), one);
m.delete (one);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(one), false );
m.set(one, one);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(one), true );
assert .sameValue(m.get(one), one);
};
{
const m = new Map([[twoRaisedToFiftyThreeMinusOne, twoRaisedToFiftyThreeMinusOne]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(twoRaisedToFiftyThreeMinusOne), true );
assert .sameValue(m.get(twoRaisedToFiftyThreeMinusOne), twoRaisedToFiftyThreeMinusOne);
m.delete (twoRaisedToFiftyThreeMinusOne);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(twoRaisedToFiftyThreeMinusOne), false );
m.set(twoRaisedToFiftyThreeMinusOne, twoRaisedToFiftyThreeMinusOne);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(twoRaisedToFiftyThreeMinusOne), true );
assert .sameValue(m.get(twoRaisedToFiftyThreeMinusOne), twoRaisedToFiftyThreeMinusOne);
};
{
const m = new Map([[int32Array, int32Array]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(int32Array), true );
assert .sameValue(m.get(int32Array), int32Array);
m.delete (int32Array);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(int32Array), false );
m.set(int32Array, int32Array);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(int32Array), true );
assert .sameValue(m.get(int32Array), int32Array);
};
{
const m = new Map([[uint32Array, uint32Array]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(uint32Array), true );
assert .sameValue(m.get(uint32Array), uint32Array);
m.delete (uint32Array);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(uint32Array), false );
m.set(uint32Array, uint32Array);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(uint32Array), true );
assert .sameValue(m.get(uint32Array), uint32Array);
};
{
const m = new Map([[n, n]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(n), true );
assert .sameValue(m.get(n), n);
m.delete (n);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(n), false );
m.set(n, n);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(n), true );
assert .sameValue(m.get(n), n);
};
{
const m = new Map([[bigInt, bigInt]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(bigInt), true );
assert .sameValue(m.get(bigInt), bigInt);
m.delete (bigInt);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(bigInt), false );
m.set(bigInt, bigInt);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(bigInt), true );
assert .sameValue(m.get(bigInt), bigInt);
};
{
const m = new Map([[n1, n1]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(n1), true );
assert .sameValue(m.get(n1), n1);
m.delete (n1);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(n1), false );
m.set(n1, n1);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(n1), true );
assert .sameValue(m.get(n1), n1);
};
{
const m = new Map([[n53, n53]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(n53), true );
assert .sameValue(m.get(n53), n53);
m.delete (n53);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(n53), false );
m.set(n53, n53);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(n53), true );
assert .sameValue(m.get(n53), n53);
};
{
const m = new Map([[fiftyThree, fiftyThree]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(fiftyThree), true );
assert .sameValue(m.get(fiftyThree), fiftyThree);
m.delete (fiftyThree);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(fiftyThree), false );
m.set(fiftyThree, fiftyThree);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(fiftyThree), true );
assert .sameValue(m.get(fiftyThree), fiftyThree);
};
{
const m = new Map([[bigInt64Array, bigInt64Array]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(bigInt64Array), true );
assert .sameValue(m.get(bigInt64Array), bigInt64Array);
m.delete (bigInt64Array);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(bigInt64Array), false );
m.set(bigInt64Array, bigInt64Array);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(bigInt64Array), true );
assert .sameValue(m.get(bigInt64Array), bigInt64Array);
};
{
const m = new Map([[bigUint64Array, bigUint64Array]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(bigUint64Array), true );
assert .sameValue(m.get(bigUint64Array), bigUint64Array);
m.delete (bigUint64Array);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(bigUint64Array), false );
m.set(bigUint64Array, bigUint64Array);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(bigUint64Array), true );
assert .sameValue(m.get(bigUint64Array), bigUint64Array);
};
{
const m = new Map([[symbol, symbol]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(symbol), true );
assert .sameValue(m.get(symbol), symbol);
m.delete (symbol);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(symbol), false );
m.set(symbol, symbol);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(symbol), true );
assert .sameValue(m.get(symbol), symbol);
};
{
const m = new Map([[object, object]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(object), true );
assert .sameValue(m.get(object), object);
m.delete (object);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(object), false );
m.set(object, object);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(object), true );
assert .sameValue(m.get(object), object);
};
{
const m = new Map([[array, array]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(array), true );
assert .sameValue(m.get(array), array);
m.delete (array);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(array), false );
m.set(array, array);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(array), true );
assert .sameValue(m.get(array), array);
};
{
const m = new Map([[string, string]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(string), true );
assert .sameValue(m.get(string), string);
m.delete (string);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(string), false );
m.set(string, string);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(string), true );
assert .sameValue(m.get(string), string);
};
{
const m = new Map([[booleanTrue, booleanTrue]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(booleanTrue), true );
assert .sameValue(m.get(booleanTrue), booleanTrue);
m.delete (booleanTrue);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(booleanTrue), false );
m.set(booleanTrue, booleanTrue);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(booleanTrue), true );
assert .sameValue(m.get(booleanTrue), booleanTrue);
};
{
const m = new Map([[booleanFalse, booleanFalse]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(booleanFalse), true );
assert .sameValue(m.get(booleanFalse), booleanFalse);
m.delete (booleanFalse);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(booleanFalse), false );
m.set(booleanFalse, booleanFalse);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(booleanFalse), true );
assert .sameValue(m.get(booleanFalse), booleanFalse);
};
{
const m = new Map([[functionExprValue, functionExprValue]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(functionExprValue), true );
assert .sameValue(m.get(functionExprValue), functionExprValue);
m.delete (functionExprValue);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(functionExprValue), false );
m.set(functionExprValue, functionExprValue);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(functionExprValue), true );
assert .sameValue(m.get(functionExprValue), functionExprValue);
};
{
const m = new Map([[arrowFunctionValue, arrowFunctionValue]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(arrowFunctionValue), true );
assert .sameValue(m.get(arrowFunctionValue), arrowFunctionValue);
m.delete (arrowFunctionValue);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(arrowFunctionValue), false );
m.set(arrowFunctionValue, arrowFunctionValue);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(arrowFunctionValue), true );
assert .sameValue(m.get(arrowFunctionValue), arrowFunctionValue);
};
{
const m = new Map([[classValue, classValue]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(classValue), true );
assert .sameValue(m.get(classValue), classValue);
m.delete (classValue);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(classValue), false );
m.set(classValue, classValue);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(classValue), true );
assert .sameValue(m.get(classValue), classValue);
};
{
const m = new Map([[map, map]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(map), true );
assert .sameValue(m.get(map), map);
m.delete (map);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(map), false );
m.set(map, map);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(map), true );
assert .sameValue(m.get(map), map);
};
{
const m = new Map([[set, set]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(set), true );
assert .sameValue(m.get(set), set);
m.delete (set);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(set), false );
m.set(set, set);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(set), true );
assert .sameValue(m.get(set), set);
};
{
const m = new Map([[weakMap, weakMap]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(weakMap), true );
assert .sameValue(m.get(weakMap), weakMap);
m.delete (weakMap);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(weakMap), false );
m.set(weakMap, weakMap);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(weakMap), true );
assert .sameValue(m.get(weakMap), weakMap);
};
{
const m = new Map([[weakRef, weakRef]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(weakRef), true );
assert .sameValue(m.get(weakRef), weakRef);
m.delete (weakRef);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(weakRef), false );
m.set(weakRef, weakRef);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(weakRef), true );
assert .sameValue(m.get(weakRef), weakRef);
};
{
const m = new Map([[weakSet, weakSet]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(weakSet), true );
assert .sameValue(m.get(weakSet), weakSet);
m.delete (weakSet);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(weakSet), false );
m.set(weakSet, weakSet);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(weakSet), true );
assert .sameValue(m.get(weakSet), weakSet);
};
{
const m = new Map([[nullValue, nullValue]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(nullValue), true );
assert .sameValue(m.get(nullValue), nullValue);
m.delete (nullValue);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(nullValue), false );
m.set(nullValue, nullValue);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(nullValue), true );
assert .sameValue(m.get(nullValue), nullValue);
};
{
const m = new Map([[undefinedValue, undefinedValue]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(undefinedValue), true );
assert .sameValue(m.get(undefinedValue), undefinedValue);
m.delete (undefinedValue);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(undefinedValue), false );
m.set(undefinedValue, undefinedValue);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(undefinedValue), true );
assert .sameValue(m.get(undefinedValue), undefinedValue);
};
{
const m = new Map([[unassigned, unassigned]]);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(unassigned), true );
assert .sameValue(m.get(unassigned), unassigned);
m.delete (unassigned);
assert .sameValue(m.size, 0);
assert .sameValue(m.has(unassigned), false );
m.set(unassigned, unassigned);
assert .sameValue(m.size, 1);
assert .sameValue(m.has(unassigned), true );
assert .sameValue(m.get(unassigned), unassigned);
};
reportCompare(0, 0);
Messung V0.5 C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.5 Sekunden
¤
*© Formatika GbR, Deutschland