mirror of
https://github.com/sky-systems/sky_phone.git
synced 2026-08-31 02:08:58 +00:00
35 lines
1.2 KiB
TypeScript
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)
|
|
})
|
|
})
|