| |
| // Out of bounds writes on typed arrays are uneffectful for all integers. |
| |
| var x = new Int32Array(10); |
| |
| function f() { |
| for (var i = -100; i < 100; i++) { |
| x[i] = i + 1; |
| if (i >= 0 && i < 10) |
| assertEq(x[i], i + 1); |
| else |
| assertEq(x[i], undefined); |
| } |
| } |
| f(); |
| |
| // Really big integers not representable with a double or uint64 are still integers. |
| |
| var bigint = "" + Math.pow(2, 53); |
| x[bigint] = "twelve"; |
| assertEq(x[bigint], undefined); |
| |
| x["9999999999999999999999"] = "twelve"; |
| assertEq(x["9999999999999999999999"], undefined); |
| |
| // Except when their toString() makes them not look like integers! |
| x[9999999999999999999999] = "twelve"; |
| assertEq(x[9999999999999999999999], "twelve"); |
| |
| // Infinity and -Infinity maybe are supposed to be integers, but they aren't currently. |
| |
| x["Infinity"] = "twelve"; |
| assertEq(x["Infinity"], "twelve"); |
| |
| x["-Infinity"] = "twelve"; |
| assertEq(x["-Infinity"], "twelve"); |