1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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);
});
|