30 lines
1004 B
TypeScript
30 lines
1004 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
codePointLabel,
|
|
compareNormalization,
|
|
decodeCodePointList,
|
|
inspectText,
|
|
parseCodePointList,
|
|
} from "../../src/unicode/model";
|
|
|
|
describe("Unicode helper integration", () => {
|
|
it("parses and decodes scalar values", () => {
|
|
expect(parseCodePointList("U+0041 1F600")).toEqual([0x41, 0x1f600]);
|
|
expect(decodeCodePointList("41, 1F600")).toBe("A😀");
|
|
expect(() => parseCodePointList("D800")).toThrow(/scalar value/u);
|
|
});
|
|
|
|
it("inspects code points separately from graphemes", () => {
|
|
const result = inspectText("e\u0301");
|
|
expect(result.codePointCount).toBe(2);
|
|
expect(result.graphemes).toHaveLength(1);
|
|
expect(result.points[1]?.javascript).toBe("\\u0301");
|
|
});
|
|
|
|
it("compares all normalization forms", () => {
|
|
const result = compareNormalization("e\u0301");
|
|
expect(result.forms.find((item) => item.form === "NFC")?.value).toBe("é");
|
|
expect(codePointLabel(0x1f600)).toBe("U+1F600");
|
|
});
|
|
});
|