Index: test/mjsunit/harmony/typedarrays.js |
diff --git a/test/mjsunit/harmony/typedarrays.js b/test/mjsunit/harmony/typedarrays.js |
index ca76fe7bdfdd6dfdb8b5f5f04b36eb461de91fb6..748b3662917348bb5010f64be13895dd603f68a5 100644 |
--- a/test/mjsunit/harmony/typedarrays.js |
+++ b/test/mjsunit/harmony/typedarrays.js |
@@ -68,8 +68,16 @@ TestByteLengthNotWritable(); |
function TestSlice(expectedResultLen, initialLen, start, end) { |
var ab = new ArrayBuffer(initialLen); |
+ var a1 = new Uint8Array(ab); |
+ for (var i = 0; i < a1.length; i++) { |
+ a1[i] = 0xCA; |
+ } |
var slice = ab.slice(start, end); |
assertSame(expectedResultLen, slice.byteLength); |
+ var a2 = new Uint8Array(slice); |
+ for (var i = 0; i < a2.length; i++) { |
+ assertSame(0xCA, a2[i]); |
+ } |
} |
function TestArrayBufferSlice() { |
@@ -255,6 +263,58 @@ TestTypedArray(Float32Array, 4, 0.5); |
TestTypedArray(Float64Array, 8, 0.5); |
TestTypedArray(Uint8ClampedArray, 1, 0xFF); |
+function SubarrayTestCase(constructor, item, expectedResultLen, expectedStartIndex, |
+ initialLen, start, end) { |
+ var a = new constructor(initialLen); |
+ var s = a.subarray(start, end); |
+ assertSame(constructor, s.constructor); |
+ assertSame(expectedResultLen, s.length); |
+ if (s.length > 0) { |
+ s[0] = item; |
+ assertSame(item, a[expectedStartIndex]); |
+ } |
+} |
+ |
+function TestSubArray(constructor, item) { |
+ SubarrayTestCase(constructor, item, 512, 512, 1024, 512, 1024); |
+ SubarrayTestCase(constructor, item, 512, 512, 1024, 512); |
+ |
+ SubarrayTestCase(constructor, item, 0, undefined, 0, 1, 20); |
+ SubarrayTestCase(constructor, item, 100, 0, 100, 0, 100); |
+ SubarrayTestCase(constructor, item, 100, 0, 100, 0, 1000); |
+ SubarrayTestCase(constructor, item, 0, undefined, 100, 5, 1); |
+ |
+ SubarrayTestCase(constructor, item, 1, 89, 100, -11, -10); |
+ SubarrayTestCase(constructor, item, 9, 90, 100, -10, 99); |
+ SubarrayTestCase(constructor, item, 0, undefined, 100, -10, 80); |
+ SubarrayTestCase(constructor, item, 10,80, 100, 80, -10); |
+ |
+ SubarrayTestCase(constructor, item, 10,90, 100, 90, "100"); |
+ SubarrayTestCase(constructor, item, 10,90, 100, "90", "100"); |
+ |
+ SubarrayTestCase(constructor, item, 0, undefined, 100, 90, "abc"); |
+ SubarrayTestCase(constructor, item, 10,0, 100, "abc", 10); |
+ |
+ SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.96); |
+ SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.01); |
+ SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.01); |
+ SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.96); |
+ |
+ |
+ SubarrayTestCase(constructor, item, 10,90, 100, 90); |
+ SubarrayTestCase(constructor, item, 10,90, 100, -10); |
+} |
+ |
+TestSubArray(Uint8Array, 0xFF); |
+TestSubArray(Int8Array, -0x7F); |
+TestSubArray(Uint16Array, 0xFFFF); |
+TestSubArray(Int16Array, -0x7FFF); |
+TestSubArray(Uint32Array, 0xFFFFFFFF); |
+TestSubArray(Int32Array, -0x7FFFFFFF); |
+TestSubArray(Float32Array, 0.5); |
+TestSubArray(Float64Array, 0.5); |
+TestSubArray(Uint8ClampedArray, 0xFF); |
+ |
function TestTypedArrayOutOfRange(constructor, value, result) { |
var a = new constructor(1); |
a[0] = value; |