1 // Copyright 2015 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 var typedArrayConstructors = [ 6 Uint8Array, 7 Int8Array, 8 Uint16Array, 9 Int16Array, 10 Uint32Array, 11 Int32Array, 12 Uint8ClampedArray, 13 Float32Array, 14 Float64Array 15 ]; 16 17 for (var constructor of typedArrayConstructors) { 18 // Check various variants of empty array's slicing. 19 var array = new constructor(0); 20 for (var i = 0; i < 7; i++) { 21 assertEquals(0, array.slice(0, 0).length); 22 assertEquals(0, array.slice(1, 0).length); 23 assertEquals(0, array.slice(0, 1).length); 24 assertEquals(0, array.slice(-1, 0).length); 25 } 26 27 28 // Check various forms of arguments omission. 29 array = new constructor(7); 30 31 for (var i = 0; i < 7; i++) { 32 assertEquals(array, array.slice()); 33 assertEquals(array, array.slice(0)); 34 assertEquals(array, array.slice(undefined)); 35 assertEquals(array, array.slice("foobar")); 36 assertEquals(array, array.slice(undefined, undefined)); 37 } 38 39 40 // Check variants of negatives and positive indices. 41 array = new constructor(7); 42 43 assertEquals(7, array.slice(-100).length); 44 assertEquals(3, array.slice(-3).length); 45 assertEquals(3, array.slice(4).length); 46 assertEquals(1, array.slice(6).length); 47 assertEquals(0, array.slice(7).length); 48 assertEquals(0, array.slice(8).length); 49 assertEquals(0, array.slice(100).length); 50 51 assertEquals(0, array.slice(0, -100).length); 52 assertEquals(4, array.slice(0, -3).length); 53 assertEquals(4, array.slice(0, 4).length); 54 assertEquals(6, array.slice(0, 6).length); 55 assertEquals(7, array.slice(0, 7).length); 56 assertEquals(7, array.slice(0, 8).length); 57 assertEquals(7, array.slice(0, 100).length); 58 59 // Does not permit being called on other types 60 assertThrows(function () { 61 constructor.prototype.slice.call([], 0, 0); 62 }, TypeError); 63 64 // Check that elements are copied properly in slice 65 array = new constructor([1, 2, 3, 4]); 66 var slice = array.slice(1, 3); 67 assertEquals(2, slice.length); 68 assertEquals(2, slice[0]); 69 assertEquals(3, slice[1]); 70 assertTrue(slice instanceof constructor); 71 } 72