deadline-parser-smoke-test.js 1.3 KB

1234567891011121314151617181920212223242526272829
  1. 'use strict';
  2. const assert = require('assert/strict');
  3. const { parseFlexibleDeadline, shanghaiCalendar } = require('../mcp/src/core/deadline-parser');
  4. function main() {
  5. const now = new Date('2026-07-17T04:00:00.000Z');
  6. const parse = value => parseFlexibleDeadline(value, { now });
  7. assert.deepEqual(shanghaiCalendar(now), { year: 2026, month: 7, day: 17 });
  8. assert.equal(parse('2026-07-20 18:00'), '2026-07-20 18:00');
  9. assert.equal(parse('2026-07-20T18:00:00'), '2026-07-20 18:00');
  10. assert.equal(parse('2026/07/20 18:00'), '2026-07-20 18:00');
  11. assert.equal(parse('2026-07-20'), '2026-07-20 18:00');
  12. assert.equal(parse('今天18点'), '2026-07-17 18:00');
  13. assert.equal(parse('明天'), '2026-07-18 18:00');
  14. assert.equal(parse('明天下午6点'), '2026-07-18 18:00');
  15. assert.equal(parse('后天上午9点半'), '2026-07-19 09:30');
  16. assert.equal(parse('3天后'), '2026-07-20 18:00');
  17. assert.equal(parse('三天后晚上8点'), '2026-07-20 20:00');
  18. assert.equal(parse('一周后'), '2026-07-24 18:00');
  19. assert.equal(parse('7月21日中午12点'), '2026-07-21 12:00');
  20. assert.throws(() => parse('2026-02-30'), /截止日期不存在/);
  21. assert.throws(() => parse('尽快处理'), /无法识别截止时间/);
  22. process.stdout.write(`${JSON.stringify({ status: 'ok', timezone: 'Asia/Shanghai', passed: 15 }, null, 2)}\n`);
  23. }
  24. main();