Revision: 3855
Author: [email protected]
Date: Mon Feb 15 04:01:46 2010
Log: Elaborating test for Array.shift a bit.

Review URL: http://codereview.chromium.org/596116
http://code.google.com/p/v8/source/detail?r=3855

Modified:
 /branches/bleeding_edge/test/mjsunit/array-shift.js

=======================================
--- /branches/bleeding_edge/test/mjsunit/array-shift.js Mon Feb 15 01:17:38 2010 +++ /branches/bleeding_edge/test/mjsunit/array-shift.js Mon Feb 15 04:01:46 2010
@@ -34,13 +34,38 @@

 // Now check the case with array of holes and some elements on prototype.
 (function() {
-  var array = new Array(10);
+  var len = 9;
+  var array = new Array(len);
+  Array.prototype[3] = "@3";
   Array.prototype[7] = "@7";
-  assertEquals(array[0], undefined);
-  assertEquals(array[7], Array.prototype[7]);
+
+  assertEquals(len, array.length);
+  for (var i = 0; i < array.length; i++) {
+    assertEquals(array[i], Array.prototype[i]);
+  }

   array.shift();

-  assertEquals(array[0], undefined);
+  assertEquals(len - 1, array.length);
+  // Note that shift copies values from prototype into the array.
+  assertEquals(array[2], Array.prototype[3]);
+  assertTrue(array.hasOwnProperty(2));
+
+  assertEquals(array[6], Array.prototype[7]);
+  assertTrue(array.hasOwnProperty(6));
+
+  // ... but keeps the rest as holes:
+  Array.prototype[5] = "@5";
+  assertEquals(array[5], Array.prototype[5]);
+  assertFalse(array.hasOwnProperty(5));
+
+  assertEquals(array[3], Array.prototype[3]);
+  assertFalse(array.hasOwnProperty(3));
+
   assertEquals(array[7], Array.prototype[7]);
+  assertFalse(array.hasOwnProperty(7));
+
+  assertTrue(delete Array.prototype[3]);
+  assertTrue(delete Array.prototype[5]);
+  assertTrue(delete Array.prototype[7]);
 })();

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to