| Index: test/mjsunit/harmony/typedarrays.js | 
| diff --git a/test/mjsunit/harmony/typedarrays.js b/test/mjsunit/harmony/typedarrays.js | 
| index 9b01ba60e8f147c7023eb140d3d84b41ea1936f9..75ff3da42ed4d0362e5a08edc0d2410555ad7752 100644 | 
| --- a/test/mjsunit/harmony/typedarrays.js | 
| +++ b/test/mjsunit/harmony/typedarrays.js | 
| @@ -27,6 +27,8 @@ | 
|  | 
| // Flags: --harmony-typed-arrays | 
|  | 
| +// ArrayBuffer | 
| + | 
| function TestByteLength(param, expectedByteLength) { | 
| var ab = new __ArrayBuffer(param); | 
| assertSame(expectedByteLength, ab.byteLength); | 
| @@ -104,8 +106,98 @@ function TestArrayBufferSlice() { | 
|  | 
| TestArrayBufferSlice(); | 
|  | 
| +// Typed arrays | 
| + | 
| +function TestTypedArray(proto, elementSize, typicalElement) { | 
| +  var ab = new __ArrayBuffer(256*elementSize); | 
| + | 
| +  var a1 = new proto(ab, 128*elementSize, 128); | 
| +  assertSame(ab, a1.buffer); | 
| +  assertSame(elementSize, a1.BYTES_PER_ELEMENT); | 
| +  assertSame(128, a1.length); | 
| +  assertSame(128*elementSize, a1.byteLength); | 
| +  assertSame(128*elementSize, a1.byteOffset); | 
| + | 
| + | 
| +  var a2 = new proto(ab, 64*elementSize, 128); | 
| +  assertSame(ab, a2.buffer); | 
| +  assertSame(elementSize, a2.BYTES_PER_ELEMENT); | 
| +  assertSame(128, a2.length); | 
| +  assertSame(128*elementSize, a2.byteLength); | 
| +  assertSame(64*elementSize, a2.byteOffset); | 
| + | 
| +  var a3 = new proto(ab, 192*elementSize); | 
| +  assertSame(ab, a3.buffer); | 
| +  assertSame(64, a3.length); | 
| +  assertSame(64*elementSize, a3.byteLength); | 
| +  assertSame(192*elementSize, a3.byteOffset); | 
| + | 
| +  var a4 = new proto(ab); | 
| +  assertSame(ab, a4.buffer); | 
| +  assertSame(256, a4.length); | 
| +  assertSame(256*elementSize, a4.byteLength); | 
| +  assertSame(0, a4.byteOffset); | 
| + | 
| + | 
| +  var i; | 
| +  for (i = 0; i < 128; i++) { | 
| +    a1[i] = typicalElement; | 
| +  } | 
| + | 
| +  for (i = 0; i < 128; i++) { | 
| +    assertSame(typicalElement, a1[i]); | 
| +  } | 
| + | 
| +  for (i = 0; i < 64; i++) { | 
| +    assertSame(0, a2[i]); | 
| +  } | 
| + | 
| +  for (i = 64; i < 128; i++) { | 
| +    assertSame(typicalElement, a2[i]); | 
| +  } | 
| + | 
| +  for (i = 0; i < 64; i++) { | 
| +    assertSame(typicalElement, a3[i]); | 
| +  } | 
| + | 
| +  for (i = 0; i < 128; i++) { | 
| +    assertSame(0, a4[i]); | 
| +  } | 
| + | 
| +  for (i = 128; i < 256; i++) { | 
| +    assertSame(typicalElement, a4[i]); | 
| +  } | 
| + | 
| +  assertThrows(function () { new proto(ab, 256*elementSize); }, RangeError); | 
| + | 
| +  if (elementSize !== 1) { | 
| +    assertThrows(function() { new proto(ab, 128*elementSize - 1, 10); }, | 
| +                 RangeError); | 
| +    var unalignedArrayBuffer = new __ArrayBuffer(10*elementSize + 1); | 
| +    var goodArray = new proto(unalignedArrayBuffer, 0, 10); | 
| +    assertSame(10, goodArray.length); | 
| +    assertSame(10*elementSize, goodArray.byteLength); | 
| +    assertThrows(function() { new proto(unalignedArrayBuffer)}, RangeError); | 
| +    assertThrows(function() { new proto(unalignedArrayBuffer, 5*elementSize)}, | 
| +                 RangeError); | 
| +  } | 
| + | 
| +} | 
| + | 
| +TestTypedArray(__Uint8Array, 1, 0xFF); | 
| +TestTypedArray(__Int8Array, 1, -0x7F); | 
| +TestTypedArray(__Uint16Array, 2, 0xFFFF); | 
| +TestTypedArray(__Int16Array, 2, -0x7FFF); | 
| +TestTypedArray(__Uint32Array, 4, 0xFFFFFFFF); | 
| +TestTypedArray(__Int32Array, 4, -0x7FFFFFFF); | 
| +TestTypedArray(__Float32Array, 4, 0.5); | 
| +TestTypedArray(__Float64Array, 8, 0.5); | 
| + | 
| + | 
| +// General tests for properties | 
| + | 
| // Test property attribute [[Enumerable]] | 
| -function TestEnumerable(func) { | 
| +function TestEnumerable(func, obj) { | 
| function props(x) { | 
| var array = []; | 
| for (var p in x) array.push(p); | 
| @@ -113,9 +205,11 @@ function TestEnumerable(func) { | 
| } | 
| assertArrayEquals([], props(func)); | 
| assertArrayEquals([], props(func.prototype)); | 
| -  assertArrayEquals([], props(new func())); | 
| +  if (obj) | 
| +    assertArrayEquals([], props(obj)); | 
| } | 
| -TestEnumerable(__ArrayBuffer); | 
| +TestEnumerable(__ArrayBuffer, new __ArrayBuffer()); | 
| +TestEnumerable(__Uint8Array); | 
|  | 
|  | 
| // Test arbitrary properties on ArrayBuffer | 
| @@ -131,6 +225,5 @@ function TestArbitrary(m) { | 
| } | 
| TestArbitrary(new __ArrayBuffer(256)); | 
|  | 
| - | 
| // Test direct constructor call | 
| assertTrue(__ArrayBuffer() instanceof __ArrayBuffer); | 
|  |