2020-07-06 17:02:06 -07:00
|
|
|
test("basic functionality", () => {
|
|
|
|
|
const localSym = Symbol("foo");
|
|
|
|
|
const globalSym = Symbol.for("foo");
|
2020-04-29 23:25:21 -07:00
|
|
|
|
2020-07-06 17:02:06 -07:00
|
|
|
expect(Symbol.keyFor(localSym)).toBeUndefined();
|
|
|
|
|
expect(Symbol.keyFor(globalSym)).toBe("foo");
|
|
|
|
|
});
|
2020-04-29 23:25:21 -07:00
|
|
|
|
2020-07-06 17:02:06 -07:00
|
|
|
test("bad argument values", () => {
|
|
|
|
|
[
|
|
|
|
|
[1, "1"],
|
|
|
|
|
[null, "null"],
|
|
|
|
|
[undefined, "undefined"],
|
|
|
|
|
[[], "[object Array]"],
|
|
|
|
|
[{}, "[object Object]"],
|
|
|
|
|
[true, "true"],
|
|
|
|
|
["foobar", "foobar"],
|
2021-09-24 22:40:38 +02:00
|
|
|
[function () {}, "[object ECMAScriptFunctionObject]"], // FIXME: Better function stringification
|
2020-07-06 17:02:06 -07:00
|
|
|
].forEach(testCase => {
|
|
|
|
|
expect(() => {
|
|
|
|
|
Symbol.keyFor(testCase[0]);
|
|
|
|
|
}).toThrowWithMessage(TypeError, `${testCase[1]} is not a symbol`);
|
|
|
|
|
});
|
|
|
|
|
});
|