chrono-node
Version:
A natural language date parser in Javascript
78 lines (70 loc) • 2.85 kB
text/typescript
import * as chrono from "../../src/";
import { testSingleCase } from "../test_util";
// REF: 2012-08-09 Thu
const REF = new Date(2012, 7, 9);
test("Test - full weekday names", () => {
testSingleCase(chrono.vi, "H\u1ecdn v\u00e0o th\u1ee9 hai", REF, (r) => {
expect(r.index).toBe(8);
expect(r.start.get("weekday")).toBe(1);
});
testSingleCase(chrono.vi, "th\u1ee9 ba", REF, (r) => {
expect(r.start.get("weekday")).toBe(2);
});
testSingleCase(chrono.vi, "th\u1ee9 t\u01b0", REF, (r) => {
expect(r.start.get("weekday")).toBe(3);
});
testSingleCase(chrono.vi, "th\u1ee9 n\u0103m", REF, (r) => {
expect(r.start.get("weekday")).toBe(4);
});
testSingleCase(chrono.vi, "th\u1ee9 s\u00e1u", REF, (r) => {
expect(r.start.get("weekday")).toBe(5);
});
testSingleCase(chrono.vi, "th\u1ee9 b\u1ea3y", REF, (r) => {
expect(r.start.get("weekday")).toBe(6);
});
testSingleCase(chrono.vi, "ch\u1ee7 nh\u1eadt", REF, (r) => {
expect(r.start.get("weekday")).toBe(0);
});
});
test("Test - abbreviations t2-t7 / cn", () => {
testSingleCase(chrono.vi, "H\u1ecdn t2", REF, (r) => {
expect(r.index).toBe(4);
expect(r.start.get("weekday")).toBe(1);
});
testSingleCase(chrono.vi, "t7", REF, (r) => {
expect(r.start.get("weekday")).toBe(6);
});
testSingleCase(chrono.vi, "cn", REF, (r) => {
expect(r.start.get("weekday")).toBe(0);
});
});
test("Test - weekday implies a date", () => {
testSingleCase(chrono.vi, "th\u1ee9 hai t\u1edbi", REF, (r) => {
expect(r.start.get("weekday")).toBe(1);
expect(r.start.isCertain("day")).toBe(false); // implied, not certain
});
});
test("Test - next weekday modifiers (tới/sau)", () => {
// REF is Thu 2012-08-09; next Monday = 2012-08-13
testSingleCase(chrono.vi, "th\u1ee9 hai t\u1edbi", REF, (r) => {
expect(r.start.get("weekday")).toBe(1);
expect(r.start.get("day")).toBe(13);
});
testSingleCase(chrono.vi, "th\u1ee9 hai sau", REF, (r) => {
expect(r.start.get("weekday")).toBe(1);
expect(r.start.get("day")).toBe(13);
});
});
test("Test - last weekday modifier (qua)", () => {
// REF is Thu 2012-08-09; last Monday = 2012-08-06
testSingleCase(chrono.vi, "th\u1ee9 hai qua", REF, (r) => {
expect(r.start.get("weekday")).toBe(1);
expect(r.start.get("day")).toBe(6);
});
});
test("Test - 'sau khi' conjunction not parsed as weekday modifier", () => {
const results = chrono.vi.parse("thứ hai sau khi chiến tranh kết thúc", new Date(2012, 7, 10, 12));
// Should parse 'thứ hai' (Monday) without consuming 'sau' from 'sau khi'
expect(results.length).toBe(1);
expect(results[0].text).toBe("thứ hai"); // 'sau' not included
});