mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-09-09 12:17:07 +00:00
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
ANDROID_LINUX_PATH_COMPONENT_UTF8_WARNING_BOUNDARY,
|
|
findPathComponentsExceedingUtf8Limit,
|
|
} from "./pathCompatibility.ts";
|
|
|
|
describe("findPathComponentsExceedingUtf8Limit", () => {
|
|
it("accepts 255 UTF-8 bytes and reports 256 UTF-8 bytes", () => {
|
|
expect(findPathComponentsExceedingUtf8Limit("a".repeat(255))).toEqual([]);
|
|
expect(findPathComponentsExceedingUtf8Limit("a".repeat(256))).toEqual([
|
|
{
|
|
component: "a".repeat(256),
|
|
utf8Bytes: 256,
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("counts UTF-8 bytes rather than JavaScript characters", () => {
|
|
expect(findPathComponentsExceedingUtf8Limit("界".repeat(85))).toEqual([]);
|
|
expect(findPathComponentsExceedingUtf8Limit(`${"界".repeat(85)}a`)).toEqual([
|
|
{
|
|
component: `${"界".repeat(85)}a`,
|
|
utf8Bytes: 256,
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("does not apply the component limit to the whole path", () => {
|
|
const path = `${"a".repeat(200)}/${"b".repeat(200)}`;
|
|
|
|
expect(new TextEncoder().encode(path).byteLength).toBeGreaterThan(
|
|
ANDROID_LINUX_PATH_COMPONENT_UTF8_WARNING_BOUNDARY
|
|
);
|
|
expect(findPathComponentsExceedingUtf8Limit(path)).toEqual([]);
|
|
});
|
|
|
|
it("reports an oversized folder component as well as an oversized file name", () => {
|
|
const folder = "界".repeat(86);
|
|
const file = `${"b".repeat(256)}.md`;
|
|
|
|
expect(findPathComponentsExceedingUtf8Limit(`parent/${folder}/${file}`)).toEqual([
|
|
{ component: folder, utf8Bytes: 258 },
|
|
{ component: file, utf8Bytes: 259 },
|
|
]);
|
|
});
|
|
});
|