| 1 | import { describe, expect, it } from 'vitest' |
| 2 | import { parseTimeString } from './timestring' |
| 3 | |
| 4 | describe('parseTimeString', () => { |
| 5 | it('should parse timestamp into seconds', () => { |
| 6 | expect(parseTimeString('10:50.1')).toEqual({ seconds: 650.1, relative: false }) |
| 7 | expect(parseTimeString('10s')).toEqual({ seconds: 10, relative: false }) |
| 8 | expect(parseTimeString('5m')).toEqual({ seconds: 300, relative: false }) |
| 9 | expect(parseTimeString('3min')).toEqual({ seconds: 180, relative: false }) |
| 10 | expect(parseTimeString('3mins 5secs')).toEqual({ seconds: 185, relative: false }) |
| 11 | expect(parseTimeString('10.5m3s')).toEqual({ seconds: 633, relative: false }) |
| 12 | expect(parseTimeString('+10s')).toEqual({ seconds: 10, relative: true }) |
| 13 | expect(parseTimeString('1h10m30s')).toEqual({ seconds: 4230, relative: false }) |
| 14 | expect(parseTimeString('1h4s')).toEqual({ seconds: 3604, relative: false }) |
| 15 | expect(parseTimeString('1:1:1')).toEqual({ seconds: 3661, relative: false }) |
| 16 | expect(parseTimeString('0.5years')).toEqual({ seconds: 15778476, relative: false }) |
| 17 | }) |
| 18 | |
| 19 | it('should throw an error for invalid timestamp', () => { |
| 20 | expect(() => parseTimeString('10x')).toThrow('Invalid timestamp unit: x') |
| 21 | expect(() => parseTimeString('10h:10m:10s')).toThrow('Invalid timestamp format') |
| 22 | expect(() => parseTimeString('hello 1s world')).toThrow('Unknown timestamp remaining: hello world') |
| 23 | }) |
| 24 | }) |
| 25 |