75 lines
2.6 KiB
TypeScript
75 lines
2.6 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { isLanguageSupported, getSupportedExtensions, getParserForFile } from "../parsers.js";
|
|
|
|
describe("isLanguageSupported", () => {
|
|
it("returns true for supported file extensions", () => {
|
|
expect(isLanguageSupported("test.js")).toBe(true);
|
|
expect(isLanguageSupported("test.ts")).toBe(true);
|
|
expect(isLanguageSupported("test.tsx")).toBe(true);
|
|
expect(isLanguageSupported("test.py")).toBe(true);
|
|
expect(isLanguageSupported("test.go")).toBe(true);
|
|
expect(isLanguageSupported("test.rs")).toBe(true);
|
|
expect(isLanguageSupported("test.json")).toBe(true);
|
|
expect(isLanguageSupported("test.css")).toBe(true);
|
|
expect(isLanguageSupported("test.html")).toBe(true);
|
|
expect(isLanguageSupported("test.java")).toBe(true);
|
|
expect(isLanguageSupported("test.ex")).toBe(true);
|
|
});
|
|
|
|
it("returns false for unsupported file extensions", () => {
|
|
expect(isLanguageSupported("test.xyz")).toBe(false);
|
|
expect(isLanguageSupported("test.txt")).toBe(false);
|
|
expect(isLanguageSupported("test.csv")).toBe(false);
|
|
});
|
|
|
|
it("returns false for files without extensions", () => {
|
|
expect(isLanguageSupported("Makefile")).toBe(false);
|
|
});
|
|
|
|
it("handles nested paths", () => {
|
|
expect(isLanguageSupported("src/utils/test.ts")).toBe(true);
|
|
expect(isLanguageSupported("deep/nested/path/file.py")).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe("getSupportedExtensions", () => {
|
|
it("returns an array of extension strings", () => {
|
|
const extensions = getSupportedExtensions();
|
|
|
|
expect(Array.isArray(extensions)).toBe(true);
|
|
expect(extensions.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("includes common extensions", () => {
|
|
const extensions = getSupportedExtensions();
|
|
|
|
expect(extensions).toContain("js");
|
|
expect(extensions).toContain("ts");
|
|
expect(extensions).toContain("tsx");
|
|
expect(extensions).toContain("py");
|
|
expect(extensions).toContain("go");
|
|
expect(extensions).toContain("rs");
|
|
expect(extensions).toContain("json");
|
|
});
|
|
});
|
|
|
|
describe("getParserForFile", () => {
|
|
it("returns a parser for supported files", () => {
|
|
expect(getParserForFile("test.js")).not.toBeNull();
|
|
expect(getParserForFile("test.py")).not.toBeNull();
|
|
});
|
|
|
|
it("returns null for unsupported files", () => {
|
|
expect(getParserForFile("test.xyz")).toBeNull();
|
|
});
|
|
|
|
it("returns null for files without extension", () => {
|
|
expect(getParserForFile("noext")).toBeNull();
|
|
});
|
|
|
|
it("is case-insensitive for extensions", () => {
|
|
expect(getParserForFile("test.JS")).not.toBeNull();
|
|
expect(getParserForFile("test.Py")).not.toBeNull();
|
|
});
|
|
});
|