diff options
Diffstat (limited to 'deps/v8/test/mjsunit/array-sort.js')
-rw-r--r-- | deps/v8/test/mjsunit/array-sort.js | 63 |
1 files changed, 17 insertions, 46 deletions
diff --git a/deps/v8/test/mjsunit/array-sort.js b/deps/v8/test/mjsunit/array-sort.js index fd18a5b2d..7060c5f36 100644 --- a/deps/v8/test/mjsunit/array-sort.js +++ b/deps/v8/test/mjsunit/array-sort.js @@ -70,59 +70,30 @@ function TestNumberSort() { a.sort(); assertArrayEquals([-1000000000, -10000000000, -1000000001, 1000000000, 10000000000, 1000000001], a); - // Other cases are tested implicitly in TestSmiLexicographicCompare. -} - -TestNumberSort(); - -function TestSmiLexicographicCompare() { - - assertFalse(%_IsSmi(2147483648), 'Update test for >32 bit Smi'); - // Collect a list of interesting Smis. - var seen = {}; - var smis = []; - function add(x) { - if (x | 0 == x) { - x = x | 0; // Canonicalizes to Smi if 32-bit signed and fits in Smi. - } - if (%_IsSmi(x) && !seen[x]) { - seen[x] = 1; - smis.push(x); - } - } - function addSigned(x) { - add(x); - add(-x); - } - - var BIGGER_THAN_ANY_SMI = 10 * 1000 * 1000 * 1000; - for (var xb = 1; xb <= BIGGER_THAN_ANY_SMI; xb *= 10) { + for (var xb = 1; xb <= 1000 * 1000 * 1000; xb *= 10) { for (var xf = 0; xf <= 9; xf++) { for (var xo = -1; xo <= 1; xo++) { - addSigned(xb * xf + xo); + for (var yb = 1; yb <= 1000 * 1000 * 1000; yb *= 10) { + for (var yf = 0; yf <= 9; yf++) { + for (var yo = -1; yo <= 1; yo++) { + var x = xb * xf + xo; + var y = yb * yf + yo; + if (!%_IsSmi(x)) continue; + if (!%_IsSmi(y)) continue; + var lex = %SmiLexicographicCompare(x, y); + if (lex < 0) lex = -1; + if (lex > 0) lex = 1; + assertEquals(lex, (x == y) ? 0 : ((x + "") < (y + "") ? -1 : 1), x + " < " + y); + } + } + } } } } - - for (var yb = 1; yb <= BIGGER_THAN_ANY_SMI; yb *= 2) { - for (var yo = -2; yo <= 2; yo++) { - addSigned(yb + yo); - } - } - - for (var i = 0; i < smis.length; i++) { - for (var j = 0; j < smis.length; j++) { - var x = smis[i]; - var y = smis[j]; - var lex = %SmiLexicographicCompare(x, y); - var expected = (x == y) ? 0 : ((x + "") < (y + "") ? -1 : 1); - assertEquals(lex, expected, x + " < " + y); - } - } } -TestSmiLexicographicCompare(); +TestNumberSort(); // Test lexicographical string sorting. @@ -403,4 +374,4 @@ function cmpTest(a, b) { assertTrue(b instanceof o); return a.val - b.val; } -arr.sort(cmpTest); +arr.sort(cmpTest);
\ No newline at end of file |