|
1 // String.prototype.iterator is generic. |
|
2 |
|
3 load(libdir + "asserts.js"); |
|
4 load(libdir + "iteration.js"); |
|
5 load(libdir + "string.js"); |
|
6 |
|
7 function test(obj) { |
|
8 var it = String.prototype[std_iterator].call(obj); |
|
9 var s = String(obj); |
|
10 for (var i = 0, length = s.length; i < length;) { |
|
11 var r = s[i++]; |
|
12 if (isHighSurrogate(r) && i < length && isLowSurrogate(s[i])) { |
|
13 r += s[i++]; |
|
14 } |
|
15 assertIteratorNext(it, r); |
|
16 } |
|
17 assertIteratorDone(it, undefined); |
|
18 } |
|
19 |
|
20 test({toString: () => ""}); |
|
21 test({toString: () => "xyz"}); |
|
22 test({toString: () => "\ud808\udf45"}); |
|
23 test({valueOf: () => ""}); |
|
24 test({valueOf: () => "xyz"}); |
|
25 test({valueOf: () => "\ud808\udf45"}); |