setelem-hole.js (1254B)
1 // Storing a typed value. 2 function test1() { 3 var a = []; 4 for (var i=0; i<130; i++) { 5 a[i] = i + 1; 6 } 7 return a; 8 } 9 10 var arr = test1(); 11 assertEq(arr.length, 130); 12 13 for (var i=0; i<130; i++) 14 assertEq(arr[i], i + 1); 15 16 // Storing a Value. 17 function getValue(x) { 18 var y = x & 0x3; 19 if (y == 0) return null; 20 if (y == 1) return true; 21 if (y == 2) return 1.23; 22 if (y == 3) return Math; 23 assertEq(0, 1); 24 } 25 getValue(0); 26 getValue(1); 27 28 function test2() { 29 var a = []; 30 for (var i=0; i<130; i++) { 31 a[i] = getValue(i); 32 } 33 return a; 34 } 35 36 var arr = test2(); 37 assertEq(arr.length, 130); 38 39 for (var i=0; i<130; i++) 40 assertEq(arr[i], getValue(i)); 41 42 // Make sure the length-property is not updated if it's greater than 43 // the (new) initialized length. 44 function test3(arr, start, end) { 45 for (var i=start; i<end; i++) { 46 arr[i] = 10; 47 } 48 } 49 var a = new Array(200); 50 test3(a, 10, 130); 51 assertEq(a.length, 200); 52 53 for (var i=10; i<130; i++) 54 assertEq(a[i], 10); 55 56 test3(a, 130, 220); 57 assertEq(a.length, 220); 58 59 // Test constant index. 60 function test4() { 61 var a = [0, 1, 2, 3, 4, 5]; 62 for (var i=0; i<150; i++) { 63 a[6] = i; 64 } 65 return a; 66 } 67 var arr = test4(); 68 assertEq(arr[6], 149);