|
1 /* Test String.prototype.repeat */ |
|
2 |
|
3 load(libdir + 'asserts.js'); |
|
4 |
|
5 assertEq("abc".repeat(1), "abc"); |
|
6 assertEq("abc".repeat(2), "abcabc"); |
|
7 assertEq("abc".repeat(3), "abcabcabc"); |
|
8 assertEq("a".repeat(10), "aaaaaaaaaa"); |
|
9 assertEq("abc".repeat(0), ""); |
|
10 assertEq("abc".repeat(2.9), "abcabc"); |
|
11 |
|
12 var myobj = {toString : (function () "abc"), repeat : String.prototype.repeat}; |
|
13 assertEq(myobj.repeat(1), "abc"); |
|
14 assertEq(myobj.repeat(2), "abcabc"); |
|
15 |
|
16 assertThrowsInstanceOf(function() { |
|
17 "abc".repeat(-1); |
|
18 }, RangeError, |
|
19 "String.prototype.repeat should raise RangeError on negative arguments"); |
|
20 assertThrowsInstanceOf(function() { |
|
21 "abc".repeat(Number.POSITIVE_INFINITY); |
|
22 }, RangeError, |
|
23 "String.prototype.repeat should raise RangeError on excedding maximum string length"); |
|
24 assertThrowsInstanceOf(function() { |
|
25 "abc".repeat(1 << 29); |
|
26 }, RangeError, |
|
27 "String.prototype.repeat should raise RangeError on excedding maximum string length"); |
|
28 |
|
29 assertEq("".repeat(5), ""); |
|
30 assertEq("".repeat(1 << 29), ""); |