43 lines
1.0 KiB
TypeScript
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);
|
|
});
|
|
});
|