diff options
Diffstat (limited to 'tests/napi/symbol_test.js')
-rw-r--r-- | tests/napi/symbol_test.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/napi/symbol_test.js b/tests/napi/symbol_test.js new file mode 100644 index 000000000..d8edec023 --- /dev/null +++ b/tests/napi/symbol_test.js @@ -0,0 +1,49 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +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); +}); |