// pathUtils.test.ts import { describe, expect, it } from 'vitest'; import { toPosixPath } from '../path'; describe('toPosixPath', () => { // 测试 Windows 风格路径到 POSIX 风格路径的转换 it('converts Windows-style paths to POSIX paths', () => { const windowsPath = String.raw`C:\Users\Example\file.txt`; const expectedPosixPath = 'C:/Users/Example/file.txt'; expect(toPosixPath(windowsPath)).toBe(expectedPosixPath); }); // 确认 POSIX 风格路径不会被改变 it('leaves POSIX-style paths unchanged', () => { const posixPath = '/home/user/file.txt'; expect(toPosixPath(posixPath)).toBe(posixPath); }); // 测试带有多个分隔符的路径 it('converts paths with mixed separators', () => { const mixedPath = String.raw`C:/Users\Example\file.txt`; const expectedPosixPath = 'C:/Users/Example/file.txt'; expect(toPosixPath(mixedPath)).toBe(expectedPosixPath); }); // 测试空字符串 it('handles empty strings', () => { const emptyPath = ''; expect(toPosixPath(emptyPath)).toBe(''); }); // 测试仅包含分隔符的路径 it('handles path with only separators', () => { const separatorsPath = '\\\\\\'; const expectedPosixPath = '///'; expect(toPosixPath(separatorsPath)).toBe(expectedPosixPath); }); // 测试不包含任何分隔符的路径 it('handles path without separators', () => { const noSeparatorPath = 'file.txt'; expect(toPosixPath(noSeparatorPath)).toBe('file.txt'); }); // 测试以分隔符结尾的路径 it('handles path ending with a separator', () => { const endingSeparatorPath = 'C:\\Users\\Example\\'; const expectedPosixPath = 'C:/Users/Example/'; expect(toPosixPath(endingSeparatorPath)).toBe(expectedPosixPath); }); // 测试以分隔符开头的路径 it('handles path starting with a separator', () => { const startingSeparatorPath = String.raw`\Users\Example`; const expectedPosixPath = '/Users/Example'; expect(toPosixPath(startingSeparatorPath)).toBe(expectedPosixPath); }); // 测试包含非法字符的路径 it('handles path with invalid characters', () => { const invalidCharsPath = String.raw`C:\Us*?ers\Ex|file.txt`; const expectedPosixPath = 'C:/Us*?ers/Ex|file.txt'; expect(toPosixPath(invalidCharsPath)).toBe(expectedPosixPath); }); });