forked from babel/babel
/
identifier.spec.js
47 lines (46 loc) · 1.28 KB
/
identifier.spec.js
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
import { isIdentifierName } from "../lib/index.js";
describe("isIdentifierName", function () {
it("returns false if provided string is empty", function () {
expect(isIdentifierName("")).toBe(false);
});
it.each([
"hello",
"$",
"ゆゆ式",
"$20",
"hello20",
"_",
"if",
"_\u200c",
"_\u200d",
])(
"returns true if provided string %p is an IdentifierName",
function (word) {
expect(isIdentifierName(word)).toBe(true);
},
);
it.each(["+hello", "0$", "-ゆゆ式", "#_", "_#", "\ud800\ud800"])(
"returns false if provided string %p is not an IdentifierName",
function (word) {
expect(isIdentifierName(word)).toBe(false);
},
);
it("supports astral symbols", function () {
expect(isIdentifierName("x\uDB40\uDDD5")).toBe(true);
});
it("supports Unicode 15", () => {
expect(isIdentifierName("\u{1e030}")).toBe(true);
});
it("supports Unicode 14", () => {
expect(isIdentifierName("\u{10f70}")).toBe(true);
});
it("supports Unicode 13", () => {
expect(isIdentifierName("\u{30000}")).toBe(true);
});
it("supports Unicode 12", () => {
expect(isIdentifierName("\u{10fe0}")).toBe(true);
});
it("supports Unicode 11", () => {
expect(isIdentifierName("\u{10f00}")).toBe(true);
});
});