test("constructor properties", () => { expect(WeakSet).toHaveLength(0); expect(WeakSet.name).toBe("WeakSet"); }); describe("errors", () => { test("invalid array iterators", () => { [-100, Infinity, NaN, {}, 152n].forEach(value => { expect(() => { new WeakSet(value); }).toThrowWithMessage(TypeError, "is not iterable"); }); }); test("called without new", () => { expect(() => { WeakSet(); }).toThrowWithMessage(TypeError, "WeakSet constructor must be called with 'new'"); }); }); describe("normal behavior", () => { test("typeof", () => { expect(typeof new WeakSet()).toBe("object"); }); test("constructor with single array argument", () => { var a = new WeakSet([{ a: 1 }, { a: 2 }, { a: 3 }, Symbol("foo")]); expect(a instanceof WeakSet).toBeTrue(); }); });