1import * as Symbol_ from "effect/Symbol"
2import assert from "node:assert/strict"
3import { describe, it } from "vitest"
4
5describe("Symbol", () => {
6 describe("isSymbol", () => {
7 it("returns true for primitive symbols created with Symbol()", () => {
8 assert.strictEqual(Symbol_.isSymbol(Symbol()), true)
9 })
10
11 it("returns true for global registry symbols created with Symbol.for()", () => {
12 assert.strictEqual(Symbol_.isSymbol(Symbol.for("test")), true)
13 })
14
15 it("returns true for well-known primitive symbols", () => {
16 assert.strictEqual(Symbol_.isSymbol(Symbol.iterator), true)
17 assert.strictEqual(Symbol_.isSymbol(Symbol.hasInstance), true)
18 assert.strictEqual(Symbol_.isSymbol(Symbol.toPrimitive), true)
19 })
20
21 it("returns false for strings", () => {
22 assert.strictEqual(Symbol_.isSymbol("symbol"), false)
23 assert.strictEqual(Symbol_.isSymbol(""), false)
24 })
25
26 it("returns false for numbers", () => {
27 assert.strictEqual(Symbol_.isSymbol(0), false)
28 assert.strictEqual(Symbol_.isSymbol(NaN), false)
29 })
30
31 it("returns false for booleans", () => {
32 assert.strictEqual(Symbol_.isSymbol(true), false)
33 assert.strictEqual(Symbol_.isSymbol(false), false)
34 })
35
36 it("returns false for null and undefined", () => {
37 assert.strictEqual(Symbol_.isSymbol(null), false)
38 assert.strictEqual(Symbol_.isSymbol(undefined), false)
39 })
40
41 it("returns false for objects and arrays", () => {
42 assert.strictEqual(Symbol_.isSymbol({}), false)
43 assert.strictEqual(Symbol_.isSymbol([]), false)
44 })
45
46 it("returns false for functions", () => {
47 assert.strictEqual(Symbol_.isSymbol(() => {}), false)
48 })
49 })
50})