2024-01-01 14:58:21 -05:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2023-05-21 15:14:48 -04:00
|
|
|
|
|
|
|
import { assert, assertEquals, loadTestLibrary } from "./common.js";
|
|
|
|
|
|
|
|
const testSymbol = loadTestLibrary();
|
|
|
|
|
|
|
|
Deno.test("napi symbol1", () => {
|
|
|
|
const sym = testSymbol.symbolNew("test");
|
|
|
|
assertEquals(sym.toString(), "Symbol(test)");
|
|
|
|
|
|
|
|
const myObj = {};
|
|
|
|
const fooSym = testSymbol.symbolNew("foo");
|
|
|
|
const otherSym = testSymbol.symbolNew("bar");
|
|
|
|
myObj.foo = "bar";
|
|
|
|
myObj[fooSym] = "baz";
|
|
|
|
myObj[otherSym] = "bing";
|
|
|
|
assertEquals(myObj.foo, "bar");
|
|
|
|
assertEquals(myObj[fooSym], "baz");
|
|
|
|
assertEquals(myObj[otherSym], "bing");
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("napi symbol2", () => {
|
|
|
|
const sym = testSymbol.symbolNew("test");
|
|
|
|
assertEquals(sym.toString(), "Symbol(test)");
|
|
|
|
|
|
|
|
const myObj = {};
|
|
|
|
const fooSym = testSymbol.symbolNew("foo");
|
|
|
|
myObj.foo = "bar";
|
|
|
|
myObj[fooSym] = "baz";
|
|
|
|
|
|
|
|
assertEquals(Object.keys(myObj), ["foo"]);
|
|
|
|
assertEquals(Object.getOwnPropertyNames(myObj), ["foo"]);
|
|
|
|
assertEquals(Object.getOwnPropertySymbols(myObj), [fooSym]);
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("napi symbol3", () => {
|
|
|
|
assert(testSymbol.symbolNew() !== testSymbol.symbolNew());
|
|
|
|
assert(testSymbol.symbolNew("foo") !== testSymbol.symbolNew("foo"));
|
|
|
|
assert(testSymbol.symbolNew("foo") !== testSymbol.symbolNew("bar"));
|
|
|
|
|
|
|
|
const foo1 = testSymbol.symbolNew("foo");
|
|
|
|
const foo2 = testSymbol.symbolNew("foo");
|
|
|
|
const object = {
|
|
|
|
[foo1]: 1,
|
|
|
|
[foo2]: 2,
|
|
|
|
};
|
|
|
|
assertEquals(object[foo1], 1);
|
|
|
|
assertEquals(object[foo2], 2);
|
|
|
|
});
|