import assert from 'node:assert/strict' import test from 'node:test' import { MAX_TIMER_DELAY_MS, hasRemainingTimerDelay, resolveTimerChunkDelay, } from '../src/utils/session-expiry-timer.ts' const DAY_MS = 24 * 60 * 60 * 1000 test('7 天会话有效期不需要切段', () => { assert.equal(resolveTimerChunkDelay(7 * DAY_MS), 7 * DAY_MS) assert.equal(hasRemainingTimerDelay(7 * DAY_MS), false) }) test('30 天会话有效期超过 32 位上限时切段,避免 setTimeout 溢出后立即触发', () => { const thirtyDays = 30 * DAY_MS assert.ok(thirtyDays > MAX_TIMER_DELAY_MS) assert.equal(resolveTimerChunkDelay(thirtyDays), MAX_TIMER_DELAY_MS) assert.equal(hasRemainingTimerDelay(thirtyDays), true) }) test('刚好等于上限时不切段', () => { assert.equal(resolveTimerChunkDelay(MAX_TIMER_DELAY_MS), MAX_TIMER_DELAY_MS) assert.equal(hasRemainingTimerDelay(MAX_TIMER_DELAY_MS), false) }) test('已过期/非法延迟按 0 处理', () => { assert.equal(resolveTimerChunkDelay(0), 0) assert.equal(resolveTimerChunkDelay(-1), 0) assert.equal(resolveTimerChunkDelay(Number.NaN), 0) assert.equal(hasRemainingTimerDelay(Number.NaN), false) })