Index: test/mjsunit/external-array.js |
diff --git a/test/mjsunit/external-array.js b/test/mjsunit/external-array.js |
index 81c6cfe8b44fa00d4c73a2d20078f3337149ff24..7bc882f62cf207ae3f7e4eb3060ed23dfd9d9f5c 100644 |
--- a/test/mjsunit/external-array.js |
+++ b/test/mjsunit/external-array.js |
@@ -43,6 +43,56 @@ f(a); |
assertEquals(0, a[0]); |
assertEquals(0, a[1]); |
+// No-parameter constructor should fail right now. |
+function abfunc1() { |
+ return new ArrayBuffer(); |
+} |
+assertThrows(abfunc1); |
+ |
+// Test derivation from an ArrayBuffer |
+var ab = new ArrayBuffer(12); |
+var derived_uint8 = new Uint8Array(ab); |
+assertEquals(12, derived_uint8.length); |
+var derived_uint32 = new Uint32Array(ab); |
+assertEquals(3, derived_uint32.length); |
+var derived_uint32_2 = new Uint32Array(ab,4); |
+assertEquals(2, derived_uint32_2.length); |
+var derived_uint32_3 = new Uint32Array(ab,4,1); |
+assertEquals(1, derived_uint32_3.length); |
+ |
+// Resulting array length of zero should fail. |
+function abfunc2() { |
+ new Uint32Array(ab,3); |
+} |
+assertThrows(abfunc2); |
+ |
+// If a given byteOffset and length references an area beyond the end of the |
+// ArrayBuffer an exception is raised. |
+function abfunc3() { |
+ new Uint32Array(ab,4,3); |
+} |
+assertThrows(abfunc3); |
+function abfunc4() { |
+ new Uint32Array(ab,16); |
+} |
+assertThrows(abfunc4); |
+ |
+// The given byteOffset must be a multiple of the element size of the specific |
+// type, otherwise an exception is raised. |
+function abfunc5() { |
+ new Uint32Array(ab,5); |
+} |
+assertThrows(abfunc5); |
+ |
+// If length is not explicitly specified, the length of the ArrayBuffer minus |
+// the byteOffset must be a multiple of the element size of the specific type, |
+// or an exception is raised. |
+var ab2 = new ArrayBuffer(13); |
+function abfunc6() { |
+ new Uint32Array(ab2,4); |
+} |
+assertThrows(abfunc6); |
+ |
// Test the correct behavior of the |BYTES_PER_ELEMENT| property (which is |
// "constant", but not read-only). |
a = new Int32Array(2); |