Files
gui-video-clipper/tests/lib/utils/time.test.ts

43 lines
1.0 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { formatTime, parseTime } from '$lib/utils/time';
describe('formatTime', () => {
it('formats zero seconds', () => {
expect(formatTime(0)).toBe('00:00.000');
});
it('formats seconds with milliseconds', () => {
expect(formatTime(83.45)).toBe('01:23.450');
});
it('formats hours', () => {
expect(formatTime(3661.5)).toBe('1:01:01.500');
});
it('formats exact minutes', () => {
expect(formatTime(120)).toBe('02:00.000');
});
it('handles large values', () => {
expect(formatTime(7384.123)).toBe('2:03:04.123');
});
});
describe('parseTime', () => {
it('parses mm:ss.mmm format', () => {
expect(parseTime('01:23.450')).toBeCloseTo(83.45);
});
it('parses h:mm:ss.mmm format', () => {
expect(parseTime('1:01:01.500')).toBeCloseTo(3661.5);
});
it('returns null for invalid input', () => {
expect(parseTime('not a time')).toBeNull();
});
it('parses mm:ss without milliseconds', () => {
expect(parseTime('02:00')).toBeCloseTo(120);
});
});