chrono-node
Version:
A natural language date parser in Javascript
206 lines (151 loc) • 7.42 kB
text/typescript
import * as chrono from "../../src";
import { testSingleCase } from "../test_util";
test("Test - Month-Year expression", function () {
testSingleCase(chrono.nl, "september 2012", (result) => {
expect(result.text).toBe("september 2012");
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(true);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "sept 2012", (result) => {
expect(result.text).toBe("sept 2012");
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(true);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "sep 2012", (result) => {
expect(result.text).toBe("sep 2012");
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(true);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "sep. 2012", (result) => {
expect(result.text).toBe("sep. 2012");
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(true);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "sep-2012", (result) => {
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.index).toBe(0);
expect(result.text).toBe("sep-2012");
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "mrt 2012", (result) => {
expect(result.text).toBe("mrt 2012");
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(3);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(true);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2012, 3 - 1, 1, 12));
});
});
test("Test - Month-Only expression", function () {
testSingleCase(chrono.nl, "In januari", new Date(2020, 11 - 1, 22), (result) => {
expect(result.text).toContain("januari");
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2021);
expect(result.start.get("month")).toBe(1);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(false);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
});
testSingleCase(chrono.nl, "in jan", new Date(2020, 11 - 1, 22), (result) => {
expect(result.text).toContain("jan");
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2021);
expect(result.start.get("month")).toBe(1);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(false);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
});
testSingleCase(chrono.nl, "mei", new Date(2020, 11 - 1, 22), (result) => {
expect(result.text).toContain("mei");
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2021);
expect(result.start.get("month")).toBe(5);
expect(result.start.get("day")).toBe(1);
expect(result.start.isCertain("year")).toBe(false);
expect(result.start.isCertain("month")).toBe(true);
expect(result.start.isCertain("day")).toBe(false);
expect(result.start).toBeDate(new Date(2021, 5 - 1, 1, 12));
});
});
test("Test - Month expression in context", function () {
testSingleCase(chrono.nl, "The date is sep 2012 is the date", (result) => {
expect(result.index).toBe(12);
expect(result.text).toBe("sep 2012");
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "By Angie ja november 2019", (result) => {
expect(result.text).toBe("november 2019");
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2019);
expect(result.start.get("month")).toBe(11);
expect(result.start).toBeDate(new Date(2019, 11 - 1, 1, 12));
});
testSingleCase(chrono.nl, "Op 23 MRT. 2022", (result) => {
expect(result.text).toBe("23 MRT. 2022");
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2022);
expect(result.start.get("month")).toBe(3);
expect(result.start.get("day")).toBe(23);
expect(result.start).toBeDate(new Date(2022, 3 - 1, 23, 12));
});
});
test("Test - Month slash expression", function () {
testSingleCase(chrono.nl, "9/2012", new Date(2012, 7, 10), (result) => {
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.index).toBe(0);
expect(result.text).toBe("9/2012");
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
testSingleCase(chrono.nl, "09/2012", new Date(2012, 7, 10), (result) => {
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(9);
expect(result.index).toBe(0);
expect(result.text).toBe("09/2012");
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
});
});
test("Test - year 90's parsing", () => {
testSingleCase(chrono.nl, "aug 96", new Date(2012, 7, 10), (result) => {
expect(result.text).toBe("aug 96");
expect(result.start.get("year")).toBe(1996);
expect(result.start.get("month")).toBe(8);
});
testSingleCase(chrono.nl, "96 aug 96", new Date(2012, 7, 10), (result) => {
expect(result.text).toBe("aug 96");
expect(result.start.get("year")).toBe(1996);
expect(result.start.get("month")).toBe(8);
});
});