--- /dev/null
+function shouldBe(actual, expected) {
+ if (actual !== expected)
+ throw new Error('bad value: ' + actual);
+}
+
+for (var i = 0; i < 10; ++i) {
+ Object.defineProperty(Array.prototype, i, {
+ get() {
+ throw new Error('get is called.');
+ },
+ set(value) {
+ throw new Error('set is called.');
+ }
+ });
+}
+
+var original = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
+
+// Doesn't throw any errors.
+var mapped = original.map(function (value) {
+ return value * 2;
+});
+
+shouldBe(mapped.length, 10);
+for (var i = 0; i < 10; ++i) {
+ shouldBe(mapped[i], i * 2);
+}