chrono-node
Version:
A natural language date parser in Javascript
46 lines (40 loc) • 2.08 kB
text/typescript
import * as chrono from "../../src/";
import { testSingleCase } from "../test_util";
test("Test - forwardDate: time-only rolls to next day when ref is past", () => {
// "7 gi\u1edd s\u00e1ng" = 7:00 AM; ref is 8:00 AM same day \u2192 next day
testSingleCase(chrono.vi, "7 gi\u1edd s\u00e1ng", new Date(2012, 7, 10, 8, 0), { forwardDate: true }, (r) => {
expect(r.start.get("day")).toBe(11);
expect(r.start.get("hour")).toBe(7);
});
});
test("Test - forwardDate: weekday rolls to next occurrence", () => {
// REF = Tuesday Aug 14, 2012; "th\u1ee9 hai" (Monday) last was Aug 13 \u2192 next Monday = Aug 20
testSingleCase(chrono.vi, "th\u1ee9 hai", new Date(2012, 7, 14, 12), { forwardDate: true }, (r) => {
expect(r.start.get("weekday")).toBe(1);
expect(r.start.get("day")).toBe(20);
expect(r.start.get("month")).toBe(8);
});
});
test("Test - forwardDate: slash date without year rolls to next year", () => {
// "15/3" = March 15; ref is Aug 10 (past March) \u2192 year 2013
testSingleCase(chrono.vi, "15/3", new Date(2012, 7, 10, 12), { forwardDate: true }, (r) => {
expect(r.start.get("day")).toBe(15);
expect(r.start.get("month")).toBe(3);
expect(r.start.get("year")).toBe(2013);
});
});
test("Test - forwardDate: same weekday as ref stays on same day", () => {
// REF = Thursday Aug 9, 2012; "thứ năm" (Thursday) = same day → stays on Aug 9 (not past)
testSingleCase(chrono.vi, "th\u1ee9 n\u0103m", new Date(2012, 7, 9, 12), { forwardDate: true }, (r) => {
expect(r.start.get("weekday")).toBe(4);
expect(r.start.get("day")).toBe(9);
expect(r.start.get("month")).toBe(8);
});
});
test("Test - forwardDate: month without year rolls to next year", () => {
// "th\u00e1ng 3" = March; ref is Aug 10 \u2192 next March = 2013
testSingleCase(chrono.vi, "th\u00e1ng 3", new Date(2012, 7, 10, 12), { forwardDate: true }, (r) => {
expect(r.start.get("month")).toBe(3);
expect(r.start.get("year")).toBe(2013);
});
});