summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/for-of/string-iterator-generic.js
blob: e1573dd1793e1a1bc2657cbbb87e58623a7ce186 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// String.prototype.iterator is generic.

load(libdir + "asserts.js");
load(libdir + "iteration.js");
load(libdir + "string.js");

function test(obj) {
    var it = String.prototype[Symbol.iterator].call(obj);
    var s = String(obj);
    for (var i = 0, length = s.length; i < length;) {
        var r = s[i++];
        if (isHighSurrogate(r) && i < length && isLowSurrogate(s[i])) {
            r += s[i++];
        }
        assertIteratorNext(it, r);
    }
    assertIteratorDone(it, undefined);
}

test({toString: () => ""});
test({toString: () => "xyz"});
test({toString: () => "\ud808\udf45"});
test({valueOf: () => ""});
test({valueOf: () => "xyz"});
test({valueOf: () => "\ud808\udf45"});