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