OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 TestSortDoesNotDependOnArrayPrototypePush(); | 438 TestSortDoesNotDependOnArrayPrototypePush(); |
439 | 439 |
440 function TestSortDoesNotDependOnArrayPrototypeSort() { | 440 function TestSortDoesNotDependOnArrayPrototypeSort() { |
441 var arr = []; | 441 var arr = []; |
442 for (var i = 0; i < 2000; i++) arr[i] = {}; | 442 for (var i = 0; i < 2000; i++) arr[i] = {}; |
443 var sortfn = Array.prototype.sort; | 443 var sortfn = Array.prototype.sort; |
444 Array.prototype.sort = function() { | 444 Array.prototype.sort = function() { |
445 fail('Should not call sort'); | 445 fail('Should not call sort'); |
446 }; | 446 }; |
447 sortfn.call(arr); | 447 sortfn.call(arr); |
| 448 // Restore for the next test |
| 449 Array.prototype.sort = sortfn; |
448 } | 450 } |
449 | 451 |
450 TestSortDoesNotDependOnArrayPrototypeSort(); | 452 TestSortDoesNotDependOnArrayPrototypeSort(); |
| 453 |
| 454 function TestSortToObject() { |
| 455 Number.prototype[0] = 5; |
| 456 Number.prototype[1] = 4; |
| 457 Number.prototype.length = 2; |
| 458 x = new Number(0); |
| 459 assertEquals(0, Number(Array.prototype.sort.call(x))); |
| 460 assertEquals(4, x[0]); |
| 461 assertEquals(5, x[1]); |
| 462 assertArrayEquals(["0", "1"], Object.getOwnPropertyNames(x)); |
| 463 // The following would throw if ToObject weren't called. |
| 464 assertEquals(0, Number(Array.prototype.sort.call(0))); |
| 465 } |
| 466 TestSortToObject(); |
OLD | NEW |