--- /dev/null
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T, a) {
+ var it = new T('foobar');
+
+ a(it[iteratorSymbol](), it, "@@iterator");
+ a.deep(it.next(), { done: false, value: 'f' }, "#1");
+ a.deep(it.next(), { done: false, value: 'o' }, "#2");
+ a.deep(it.next(), { done: false, value: 'o' }, "#3");
+ a.deep(it.next(), { done: false, value: 'b' }, "#4");
+ a.deep(it.next(), { done: false, value: 'a' }, "#5");
+ a.deep(it.next(), { done: false, value: 'r' }, "#6");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+
+ a.h1("Outside of BMP");
+ it = new T('r💩z');
+ a.deep(it.next(), { done: false, value: 'r' }, "#1");
+ a.deep(it.next(), { done: false, value: '💩' }, "#2");
+ a.deep(it.next(), { done: false, value: 'z' }, "#3");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+};