返回 slidev
timestring.test.ts
根目录 / packages / parser / src / timesplit / timestring.test.ts
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
25 lines TYPESCRIPT