UNPKG

meld

Version:

Meld: A template language for LLM prompts

61 lines (51 loc) 1.7 kB
import { describe, it, expect } from 'vitest'; import { PathOperationsService } from './PathOperationsService'; import path from 'path'; describe('PathOperationsService', () => { let service: PathOperationsService; beforeEach(() => { service = new PathOperationsService(); }); describe('Path operations', () => { it('joins paths', () => { expect(service.join('project', 'nested', 'file.txt')) .toBe('project/nested/file.txt'); }); it('resolves paths', () => { expect(service.resolve('project/nested', '../file.txt')) .toBe(path.resolve('project/file.txt')); }); it('gets dirname', () => { expect(service.dirname('project/nested/file.txt')) .toBe('project/nested'); }); it('gets basename', () => { expect(service.basename('project/nested/file.txt')) .toBe('file.txt'); }); it('normalizes paths', () => { expect(service.normalize('project/./nested/../file.txt')) .toBe('project/file.txt'); }); it('checks if path is absolute', () => { expect(service.isAbsolute('/absolute/path')).toBe(true); expect(service.isAbsolute('relative/path')).toBe(false); }); it('gets relative path', () => { expect(service.relative('/base/dir', '/base/dir/sub/file.txt')) .toBe('sub/file.txt'); expect(service.relative('/base/dir', '/other/dir')) .toBe('../../other/dir'); }); it('parses paths', () => { const parsed = service.parse('/base/dir/file.txt'); expect(parsed).toEqual({ root: '/', dir: '/base/dir', base: 'file.txt', ext: '.txt', name: 'file' }); }); }); });