42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
"use strict"
|
|
|
|
description("Verify the various properties of String.prototype[Symbol.iterator]");
|
|
|
|
|
|
debug("Iterator object properties");
|
|
shouldBeEqualToString("typeof String.prototype[Symbol.iterator]", "function");
|
|
shouldBeEqualToString("String.prototype[Symbol.iterator].name", "[Symbol.iterator]");
|
|
shouldBe("String.prototype[Symbol.iterator].length", "0");
|
|
shouldBeTrue("Object.getOwnPropertyDescriptor(String.prototype, Symbol.iterator).configurable");
|
|
shouldBeFalse("Object.getOwnPropertyDescriptor(String.prototype, Symbol.iterator).enumerable");
|
|
shouldBeTrue("Object.getOwnPropertyDescriptor(String.prototype, Symbol.iterator).writable");
|
|
shouldBeFalse("String.prototype[Symbol.iterator]() === String.prototype[Symbol.iterator]()");
|
|
|
|
debug("Iterating a simple string.");
|
|
let iterator = "WebKit"[Symbol.iterator]();
|
|
|
|
let next = iterator.next();
|
|
shouldBeEqualToString("next.value", "W");
|
|
shouldBeFalse("next.done");
|
|
next = iterator.next();
|
|
shouldBeEqualToString("next.value", "e");
|
|
shouldBeFalse("next.done");
|
|
next = iterator.next();
|
|
shouldBeEqualToString("next.value", "b");
|
|
shouldBeFalse("next.done");
|
|
next = iterator.next();
|
|
shouldBeEqualToString("next.value", "K");
|
|
shouldBeFalse("next.done");
|
|
next = iterator.next();
|
|
shouldBeEqualToString("next.value", "i");
|
|
shouldBeFalse("next.done");
|
|
next = iterator.next();
|
|
shouldBeEqualToString("next.value", "t");
|
|
shouldBeFalse("next.done");
|
|
next = iterator.next();
|
|
shouldBe("next.value", "undefined");
|
|
shouldBeTrue("next.done");
|
|
next = iterator.next();
|
|
shouldBe("next.value", "undefined");
|
|
shouldBeTrue("next.done");
|