import {describe, it, assert} from 'vitest'; import {PlainDateTime} from '@/plain-date-time.js'; type PlainDateTimeToStringParameters = Parameters[0]; const smallestUnitDateTime = new PlainDateTime(2000, 5, 2, 12, 34, 56, 123); let testCases: [PlainDateTime, PlainDateTimeToStringParameters, string][] = [ [new PlainDateTime(1976, 11, 18, 15, 23, 30, 123), undefined, '1976-11-18T15:23:30.123'], [new PlainDateTime(1976, 11, 18, 15, 23, 30, 123), {fractionalSecondDigits: 0}, '1976-11-18T15:23:30'], [ new PlainDateTime(1999, 12, 31, 23, 59, 59, 999), {roundingMode: 'ceil', fractionalSecondDigits: 3}, '2000-01-01T00:00:00.000', ], [ new PlainDateTime(1999, 12, 31, 23, 59, 59, 999), {roundingMode: 'halfExpand', fractionalSecondDigits: 3}, '2000-01-01T00:00:00.000', ], [smallestUnitDateTime, {smallestUnit: 'minute'}, '2000-05-02T12:34'], [smallestUnitDateTime, {smallestUnit: 'second'}, '2000-05-02T12:34:56'], [smallestUnitDateTime, {smallestUnit: 'millisecond'}, '2000-05-02T12:34:56.123'], ]; describe('PlainDateTime#toString', () => { it.each(testCases)('%j.toString(%j) === %j', (date, options, expected) => { assert.equal(date.toString(options), expected); }); });