Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | |
michael@0 | 2 | function testOverwritingSparseHole() |
michael@0 | 3 | { |
michael@0 | 4 | var x = []; |
michael@0 | 5 | for (var i = 0; i < 50; i++) |
michael@0 | 6 | x[i] = i; |
michael@0 | 7 | var hit = false; |
michael@0 | 8 | Object.defineProperty(x, 40, {set: function() { hit = true; }}); |
michael@0 | 9 | for (var i = 0; i < 50; i++) |
michael@0 | 10 | x[i] = 10; |
michael@0 | 11 | assertEq(hit, true); |
michael@0 | 12 | } |
michael@0 | 13 | testOverwritingSparseHole(); |
michael@0 | 14 | |
michael@0 | 15 | function testReadingSparseHole() |
michael@0 | 16 | { |
michael@0 | 17 | var x = []; |
michael@0 | 18 | for (var i = 5; i < 50; i++) |
michael@0 | 19 | x[i] = i; |
michael@0 | 20 | var hit = false; |
michael@0 | 21 | Object.defineProperty(x, 40, {get: function() { hit = true; return 5.5; }}); |
michael@0 | 22 | var res = 0; |
michael@0 | 23 | for (var i = 0; i < 50; i++) { |
michael@0 | 24 | res += x[i]; |
michael@0 | 25 | if (i == 10) |
michael@0 | 26 | res = 0; |
michael@0 | 27 | } |
michael@0 | 28 | assertEq(res, 1135.5); |
michael@0 | 29 | assertEq(hit, true); |
michael@0 | 30 | } |
michael@0 | 31 | testReadingSparseHole(); |
michael@0 | 32 | |
michael@0 | 33 | function testInSparseHole() |
michael@0 | 34 | { |
michael@0 | 35 | var x = []; |
michael@0 | 36 | for (var i = 5; i < 50; i++) |
michael@0 | 37 | x[i] = i; |
michael@0 | 38 | Object.defineProperty(x, 40, {get: function() {}}); |
michael@0 | 39 | var res = 0; |
michael@0 | 40 | for (var i = 0; i < 50; i++) |
michael@0 | 41 | res += (i in x) ? 1 : 0; |
michael@0 | 42 | assertEq(res, 45); |
michael@0 | 43 | } |
michael@0 | 44 | testInSparseHole(); |