|
1 |
|
2 function testOverwritingSparseHole() |
|
3 { |
|
4 var x = []; |
|
5 for (var i = 0; i < 50; i++) |
|
6 x[i] = i; |
|
7 var hit = false; |
|
8 Object.defineProperty(x, 40, {set: function() { hit = true; }}); |
|
9 for (var i = 0; i < 50; i++) |
|
10 x[i] = 10; |
|
11 assertEq(hit, true); |
|
12 } |
|
13 testOverwritingSparseHole(); |
|
14 |
|
15 function testReadingSparseHole() |
|
16 { |
|
17 var x = []; |
|
18 for (var i = 5; i < 50; i++) |
|
19 x[i] = i; |
|
20 var hit = false; |
|
21 Object.defineProperty(x, 40, {get: function() { hit = true; return 5.5; }}); |
|
22 var res = 0; |
|
23 for (var i = 0; i < 50; i++) { |
|
24 res += x[i]; |
|
25 if (i == 10) |
|
26 res = 0; |
|
27 } |
|
28 assertEq(res, 1135.5); |
|
29 assertEq(hit, true); |
|
30 } |
|
31 testReadingSparseHole(); |
|
32 |
|
33 function testInSparseHole() |
|
34 { |
|
35 var x = []; |
|
36 for (var i = 5; i < 50; i++) |
|
37 x[i] = i; |
|
38 Object.defineProperty(x, 40, {get: function() {}}); |
|
39 var res = 0; |
|
40 for (var i = 0; i < 50; i++) |
|
41 res += (i in x) ? 1 : 0; |
|
42 assertEq(res, 45); |
|
43 } |
|
44 testInSparseHole(); |