import {describe, it, assert} from 'vitest'; import {PlainTime} from '@/'; describe('PlainTime.from', () => { it('parses', () => { assert.ok(PlainTime.from('12:34:56').equals(new PlainTime(12, 34, 56))); assert.ok(PlainTime.from('12:34:56.1').equals(new PlainTime(12, 34, 56, 100))); assert.ok(PlainTime.from('12:34:56.12').equals(new PlainTime(12, 34, 56, 120))); assert.ok(PlainTime.from('12:34:56.123').equals(new PlainTime(12, 34, 56, 123))); assert.ok(PlainTime.from('12:34:56.1234').equals(new PlainTime(12, 34, 56, 123)), 'truncates excess'); }); it('always constrain leap second', () => { assert.ok(PlainTime.from('12:34:60').equals(new PlainTime(12, 34, 59))); assert.ok(PlainTime.from('12:34:60', {overflow: 'reject'}).equals(new PlainTime(12, 34, 59))); }); it('rejects overflow', () => { assert.throws(() => { PlainTime.from('12:34:61', {overflow: 'reject'}); }); assert.throws(() => { PlainTime.from('12:60:56.1', {overflow: 'reject'}); }); assert.throws(() => { PlainTime.from('24:34:56.12', {overflow: 'reject'}); }); }); });