Files
sky_phone/frontend/src/utils/clock.test.ts
T
2026-08-04 18:08:35 +02:00

35 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
elapsedMilliseconds,
formatStopwatch,
formatTimer,
remainingMilliseconds,
timerProgressRatio,
timerPickerMilliseconds,
timerPickerValue,
} from './clock'
describe('timestamp clocks', () => {
it('derives elapsed and remaining time without an interval state', () => {
expect(elapsedMilliseconds(500, 1000, 2500)).toBe(2000)
expect(remainingMilliseconds(5000, 1000, 2500)).toBe(3500)
expect(remainingMilliseconds(100, 1000, 2500)).toBe(0)
})
it('formats and parses timer durations with hours, minutes, and seconds', () => {
expect(formatTimer(3_661_000)).toBe('01:01:01')
expect(timerPickerValue(3_661_000)).toBe('01:01:01')
expect(timerPickerMilliseconds('01:01:01')).toBe(3_661_000)
})
it('formats stopwatch durations with hundredths of a second', () => {
expect(formatStopwatch(61_234)).toBe('01:01.23')
})
it('calculates bounded timer progress from remaining duration', () => {
expect(timerProgressRatio(7_500, 10_000)).toBe(0.75)
expect(timerProgressRatio(-1, 10_000)).toBe(0)
expect(timerProgressRatio(12_000, 10_000)).toBe(1)
expect(timerProgressRatio(0, 0)).toBe(0)
})
})