summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/collections/iterator-proto-surfaces.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/src/jit-test/tests/collections/iterator-proto-surfaces.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/jit-test/tests/collections/iterator-proto-surfaces.js')
-rw-r--r--js/src/jit-test/tests/collections/iterator-proto-surfaces.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/collections/iterator-proto-surfaces.js b/js/src/jit-test/tests/collections/iterator-proto-surfaces.js
new file mode 100644
index 000000000..e39ae777f
--- /dev/null
+++ b/js/src/jit-test/tests/collections/iterator-proto-surfaces.js
@@ -0,0 +1,39 @@
+// Iterator prototype surfaces.
+
+load(libdir + "asserts.js");
+load(libdir + "iteration.js");
+
+var iterProto = null;
+
+function test(constructor) {
+ var iter = new constructor()[Symbol.iterator]();
+ assertDeepEq(Reflect.ownKeys(iter), []);
+
+ // Iterator prototypes only have a .next and @@toStringTag property.
+ var proto1 = Object.getPrototypeOf(iter);
+ assertDeepEq(Reflect.ownKeys(proto1), ['next', Symbol.toStringTag]);
+
+ var desc = Object.getOwnPropertyDescriptor(proto1, 'next');
+ assertEq(desc.configurable, true);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.writable, true);
+
+ // %IteratorPrototype%
+ var proto2 = Object.getPrototypeOf(proto1);
+ assertEq(Object.getPrototypeOf(proto2), Object.prototype);
+ assertEq(Object.prototype.toString.call(proto2), "[object Object]");
+
+ assertDeepEq(Reflect.ownKeys(proto2), [Symbol.iterator]);
+ assertEq(proto2[Symbol.iterator](), proto2);
+
+ // Check there's a single %IteratorPrototype% object.
+ if (iterProto === null)
+ iterProto = proto2;
+ else
+ assertEq(iterProto, proto2);
+}
+
+test(Array);
+test(String);
+test(Map);
+test(Set);