1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 04:57:45 +00:00

LibJS: Add the SetIterator built-in and Set.prototype.{values, entries}

While this implementation should be complete it is based on HashTable's
iterator, which currently follows bucket-order instead of the required
insertion order. This can be simply fixed by replacing the underlying
HashTable member in Set with an enhanced one that maintains a linked
list in insertion order.
This commit is contained in:
Idan Horowitz 2021-06-09 00:17:17 +03:00 committed by Linus Groh
parent 0b0f1eda05
commit 2a3090d292
10 changed files with 209 additions and 0 deletions

View file

@ -0,0 +1,14 @@
test("length", () => {
expect(Set.prototype.values.length).toBe(0);
});
test("basic functionality", () => {
const a = new Set([1, 2, 3]);
const it = a.values();
expect(it.next()).toEqual({ value: 1, done: false });
expect(it.next()).toEqual({ value: 2, done: false });
expect(it.next()).toEqual({ value: 3, done: false });
expect(it.next()).toEqual({ value: undefined, done: true });
expect(it.next()).toEqual({ value: undefined, done: true });
expect(it.next()).toEqual({ value: undefined, done: true });
});