'use strict'; const assert = require('node:assert/strict'); const Time = require('../js/beijing-time'); assert.equal(Time.format('2026-10-14T06:34:42.839Z'), '2026-10-14 14:34:42'); assert.equal(Time.format('2026-10-14T14:34:42.839+08:00'), '2026-10-14 14:34:42'); assert.equal(Time.format('2026-10-14 14:34:42'), '2026-10-14 14:34:42'); assert.equal(Time.day('2026-10-13T15:59:59.999Z'), '2026-10-13'); assert.equal(Time.day('2026-10-13T16:00:00.000Z'), '2026-10-14'); assert.equal(Time.format(null), '-'); assert.equal(Time.format('bad'), '-'); const range = Time.range('2026-10-14', '2026-10-14'); assert.equal(new Date(range.start).toISOString(), '2026-10-13T16:00:00.000Z'); assert.equal(new Date(range.end).toISOString(), '2026-10-14T16:00:00.000Z'); assert.equal(Time.range('2024-02-29', '2024-02-29').end - Time.range('2024-02-29', '2024-02-29').start, 86400000); for (const args of [['2026-02-29', null], ['2026-02-30', null], ['bad', null], ['2026-10-15', '2026-10-14']]) assert.throws(() => Time.range(...args)); const instant = Time.range('2026-10-14T06:34:42.839Z', '2026-10-14T14:34:42.839+08:00'); assert.equal(instant.end - instant.start, 1, 'full ISO end remains inclusive to the millisecond'); assert.deepEqual(Time.range(null, null), { start: -Infinity, end: Infinity }); console.log('PASS Beijing time: UTC/+08/zone-less formatting, midnight boundaries, leap day, invalid dates, ISO instants');