tscircuit/ti
ti tscircuit library
- Version
- 1.0.195
- License
- unset
- Stars
- 0
system-block-ui/src/components/TsxCode.test.ts
import { describe, expect, test } from "bun:test";
import { tokenizeTsx } from "./TsxCode";
describe("tokenizeTsx", () => {
test("preserves the generated source byte-for-byte", () => {
const source = `import { Amplifier } from "./subcircuits"\n\nexport default () => (\n <board routingDisabled>\n {/* Data: I2S */}\n <Amplifier name="amp" gain={2} />\n </board>\n)\n`;
const tokens = tokenizeTsx(source);
expect(tokens.map(({ content }) => content).join("")).toBe(source);
});
test("recognizes TypeScript and JSX syntax", () => {
const source =
"export default () => <schematicgraphic svgContent={SYSTEM_DIAGRAM_SVG} sheetIndex={0} />";
const tokens = tokenizeTsx(source);
expect(tokens).toContainEqual({ content: "export", kind: "keyword" });
expect(tokens).toContainEqual({ content: "default", kind: "keyword" });
expect(tokens).toContainEqual({
content: "schematicgraphic",
kind: "tag",
});
expect(tokens).toContainEqual({
content: "svgContent",
kind: "attribute",
});
expect(tokens).toContainEqual({ content: "0", kind: "number" });
});
test("does not parse comment markers inside strings", () => {
const source = 'const url = "https://example.com/a/*b*/" // destination';
const tokens = tokenizeTsx(source);
expect(tokens).toContainEqual({
content: '"https://example.com/a/*b*/"',
kind: "string",
});
expect(tokens.at(-1)).toEqual({
content: "// destination",
kind: "comment",
});
});
});