chrono-node
Version:
A natural language date parser in Javascript
68 lines (56 loc) • 2.69 kB
text/typescript
import * as chrono from "../../src/";
import { testSingleCase, testUnexpectedResult } from "../test_util";
const REF = new Date(2012, 7, 10, 12); // 2012-08-10
test("Test - Strict rejects casual date expressions", () => {
testUnexpectedResult(chrono.vi.strict, "h\u00f4m nay", REF);
testUnexpectedResult(chrono.vi.strict, "h\u00f4m qua", REF);
testUnexpectedResult(chrono.vi.strict, "ng\u00e0y mai", REF);
testUnexpectedResult(chrono.vi.strict, "ng\u00e0y kia", REF);
});
test("Test - Strict rejects casual time-of-day expressions", () => {
testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i s\u00e1ng", REF);
testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i tr\u01b0a", REF);
testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i chi\u1ec1u", REF);
testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i t\u1ed1i", REF);
});
test("Test - Strict rejects casual relative expressions", () => {
testUnexpectedResult(chrono.vi.strict, "tu\u1ea7n n\u00e0y", REF);
testUnexpectedResult(chrono.vi.strict, "th\u00e1ng tr\u01b0\u1edbc", REF);
testUnexpectedResult(chrono.vi.strict, "n\u0103m sau", REF);
});
test("Test - Strict rejects weekday-only expressions", () => {
testUnexpectedResult(chrono.vi.strict, "th\u1ee9 hai", REF);
testUnexpectedResult(chrono.vi.strict, "ch\u1ee7 nh\u1eadt", REF);
});
test("Test - Strict accepts standard full dates and times", () => {
testSingleCase(chrono.vi.strict, "ng\u00e0y 30 th\u00e1ng 4 n\u0103m 1975", REF, (r) => {
expect(r.start.get("year")).toBe(1975);
expect(r.start.get("month")).toBe(4);
expect(r.start.get("day")).toBe(30);
});
testSingleCase(chrono.vi.strict, "l\u00fac 7 gi\u1edd 30 ph\u00fat", REF, (r) => {
expect(r.start.get("hour")).toBe(7);
expect(r.start.get("minute")).toBe(30);
});
});
test("Test - Strict accepts slash dates", () => {
testSingleCase(chrono.vi.strict, "30/4/1975", REF, (r) => {
expect(r.start.get("day")).toBe(30);
expect(r.start.get("month")).toBe(4);
expect(r.start.get("year")).toBe(1975);
});
testSingleCase(chrono.vi.strict, "15/3", REF, (r) => {
expect(r.start.get("day")).toBe(15);
expect(r.start.get("month")).toBe(3);
});
});
test("Test - Strict accepts explicit time unit expressions", () => {
testSingleCase(chrono.vi.strict, "3 ng\u00e0y tr\u01b0\u1edbc", REF, (r) => {
expect(r.start.get("day")).toBe(7);
expect(r.start.get("month")).toBe(8);
});
testSingleCase(chrono.vi.strict, "2 tu\u1ea7n sau", REF, (r) => {
expect(r.start.get("day")).toBe(24);
expect(r.start.get("month")).toBe(8);
});
});