michael@0: // Map.prototype.get and .has basically work michael@0: var m = new Map; michael@0: michael@0: function rope() { michael@0: var s = "s"; michael@0: for (var i = 0; i < 16; i++) michael@0: s += s; michael@0: return s; michael@0: } michael@0: michael@0: var keys = [undefined, null, true, false, michael@0: 0, 1, 65535, 65536, 2147483647, 2147483648, 4294967295, 4294967296, michael@0: -1, -65536, -2147483648, michael@0: 0.5, Math.sqrt(81), Math.PI, michael@0: Number.MAX_VALUE, -Number.MAX_VALUE, Number.MIN_VALUE, -Number.MIN_VALUE, michael@0: NaN, Infinity, -Infinity, michael@0: "", "\0", "a", "ab", "abcdefg", rope(), michael@0: {}, [], /a*b/, Object.prototype, Object]; michael@0: michael@0: for (var i = 0; i < keys.length; i++) { michael@0: // without being set michael@0: var key = keys[i]; michael@0: assertEq(m.has(key), false); michael@0: assertEq(m.get(key), undefined); michael@0: michael@0: // after being set michael@0: var v = {}; michael@0: assertEq(m.set(key, v), undefined); michael@0: assertEq(m.has(key), true); michael@0: assertEq(m.get(key), v); michael@0: michael@0: // after being deleted michael@0: assertEq(m.delete(key), true); michael@0: assertEq(m.has(key), false); michael@0: assertEq(m.get(key), undefined); michael@0: michael@0: m.set(key, v); michael@0: } michael@0: michael@0: for (var i = 0; i < keys.length; i++) michael@0: assertEq(m.has(keys[i]), true);