| description( |
| 'Test for regression against <a href="https://bugs.webkit.org/show_bug.cgi?id=43401">Calling unshift passing more than 1 argument causes array corruption. It also tests some other unshift combinations.' |
| ); |
| |
| |
| function unshift1(n) { |
| var anArray = []; |
| for (var i = 0; i < n; i++) { |
| anArray.unshift('a'); |
| } |
| |
| return anArray; |
| } |
| |
| function unshift2(n) { |
| var anArray = []; |
| for (var i = 0; i < n; i++) { |
| anArray.unshift('a', 'b'); |
| } |
| |
| return anArray; |
| } |
| |
| function unshift5(n) { |
| var anArray = []; |
| for (var i = 0; i < n; i++) { |
| anArray.unshift('a', 'b', 'c', 'd', 'e'); |
| } |
| |
| return anArray; |
| } |
| |
| |
| shouldBe('unshift1(1)', '["a"]'); |
| shouldBe('unshift1(2)', '["a", "a"]'); |
| shouldBe('unshift1(4)', '["a", "a", "a", "a"]'); |
| shouldBe('unshift2(1)', '["a", "b"]'); |
| shouldBe('unshift2(2)', '["a", "b", "a", "b"]'); |
| shouldBe('unshift2(4)', '["a", "b", "a", "b", "a", "b", "a", "b"]'); |
| shouldBe('unshift2(10)', '["a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b"]'); |
| shouldBe('unshift5(1)', '["a", "b", "c", "d", "e"]'); |
| shouldBe('unshift5(2)', '["a", "b", "c", "d", "e", "a", "b", "c", "d", "e"]'); |
| shouldBe('unshift5(6)', '["a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e"]'); |