string-iterator-generic.js (698B)
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[Symbol.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"});