Skip to content

Commit

Permalink
tests for time units
Browse files Browse the repository at this point in the history
  • Loading branch information
JeroenVdb committed Feb 3, 2021
1 parent a4cedba commit 5c98948
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 117 deletions.
2 changes: 1 addition & 1 deletion src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/

export default class NLTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryChecking {
innerPattern(): RegExp {
return new RegExp(`(?:binnen|in)\\s*` + "(" + TIME_UNITS_PATTERN + ")" + `(?=\\W|$)`, "i");
return new RegExp(`(?:binnen|in|binnen de|voor)\\s*` + "(" + TIME_UNITS_PATTERN + ")" + `(?=\\W|$)`, "i");
}

innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
Expand Down
9 changes: 9 additions & 0 deletions test/nl/nl_casual.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,15 @@ test("Test - Random text", () => {
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
});

testSingleCase(chrono.nl, "middag", new Date(2012, 1 - 1, 1, 12), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(1);
expect(result.start.get("day")).toBe(1);
expect(result.start.get("hour")).toBe(12);
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
});

testSingleCase(chrono.nl, "vanavond 22:00", new Date(2012, 1 - 1, 1, 12), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("hour")).toBe(22);
Expand Down
150 changes: 34 additions & 116 deletions test/nl/nl_time_units_within.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ test("Test - The normal within expression", () => {
expect(result.start).toBeDate(new Date(2012, 8 - 1, 15));
});

testSingleCase(chrono, "we have to make something within 10 day", new Date(2012, 7, 10), (result) => {
testSingleCase(chrono.nl, "we have to make something binnen de 10 dagen", new Date(2012, 7, 10), (result) => {
expect(result.index).toBe(26);
expect(result.text).toBe("within 10 day");
expect(result.text).toBe("binnen de 10 dagen");

expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
Expand All @@ -38,178 +38,110 @@ test("Test - The normal within expression", () => {
expect(result.start).toBeDate(new Date(2012, 8 - 1, 20));
});

testSingleCase(chrono, "in 5 minutes", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "binnen 5 minuten", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("in 5 minutes");
expect(result.text).toBe("binnen 5 minuten");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
});

testSingleCase(chrono, "wait for 5 minutes", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "wait voor 5 minuten", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(5);
expect(result.text).toBe("for 5 minutes");
expect(result.text).toBe("voor 5 minuten");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
});

testSingleCase(chrono, "within 1 hour", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "binnen 1 uur", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within 1 hour");
expect(result.text).toBe("binnen 1 uur");

expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 14));
});

testSingleCase(chrono, "In 5 minutes I will go home", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen 5 minuten ben ik thuis", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("In 5 minutes");
expect(result.text).toBe("Binnen 5 minuten");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
});

testSingleCase(chrono, "In 5 minutes A car need to move", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen de 5 minuten moet een auto zich verzetten", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("In 5 minutes");
expect(result.text).toBe("Binnen de 5 minuten");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
});

testSingleCase(chrono, "In 5 seconds A car need to move", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen 5 seconden moet een auto zich verzetten", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("In 5 seconds");
expect(result.text).toBe("Binnen 5 seconden");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 14, 5));
});

// TODO fix
testSingleCase(chrono, "within half an hour", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within half an hour");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
});

testSingleCase(chrono, "within two weeks", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen de 2 weken", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within two weeks");
expect(result.text).toBe("Binnen de 2 weken");

expect(result.start).toBeDate(new Date(2012, 7, 24, 12, 14));
});

testSingleCase(chrono, "within a month", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen een maand", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within a month");
expect(result.text).toBe("Binnen een maand");

expect(result.start).toBeDate(new Date(2012, 8, 10, 12, 14));
});

// TODO fix
testSingleCase(chrono, "within a few months", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within a few months");

expect(result.start).toBeDate(new Date(2012, 10, 10, 12, 14));
});

testSingleCase(chrono, "within one year", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within one year");

expect(result.start).toBeDate(new Date(2013, 7, 10, 12, 14));
});

testSingleCase(chrono, "within one Year", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen een jaar", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within one Year");
expect(result.text).toBe("Binnen een jaar");

expect(result.start).toBeDate(new Date(2013, 7, 10, 12, 14));
});

testSingleCase(chrono, "within One year", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen 5 minuten A car need to move", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("within One year");

expect(result.start).toBeDate(new Date(2013, 7, 10, 12, 14));
});

testSingleCase(chrono, "In 5 Minutes A car need to move", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("In 5 Minutes");
expect(result.text).toBe("Binnen 5 minuten");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
});

testSingleCase(chrono, "In 5 mins a car need to move", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen 5 min a car need to move", new Date(2012, 7, 10, 12, 14), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("In 5 mins");
expect(result.text).toBe("Binnen 5 min");

expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
});

testSingleCase(chrono, "in a week", new Date(2016, 10 - 1, 1), (result, text) => {
testSingleCase(chrono.nl, "binnen een week", new Date(2016, 10 - 1, 1), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
expect(result.start.get("day")).toBe(8);
});

testSingleCase(chrono, "In around 5 hours", new Date(2016, 10 - 1, 1, 13), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
expect(result.start.get("day")).toBe(1);
expect(result.start.get("hour")).toBe(18);
});

testSingleCase(chrono, "In about ~5 hours", new Date(2016, 10 - 1, 1, 13), (result, text) => {
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
expect(result.start.get("day")).toBe(1);
expect(result.start.get("hour")).toBe(18);
});
});

test("Test - The within expression with certain keywords", () => {
testSingleCase(chrono, "In about 5 hours", new Date(2012, 8 - 1, 10, 12, 49), (result, text) => {
expect(result.text).toBe(text);

expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(10);
expect(result.start.get("hour")).toBe(17);
expect(result.start.get("minute")).toBe(49);
});

testSingleCase(chrono, "within around 3 hours", new Date(2012, 8 - 1, 10, 12, 49), (result, text) => {
expect(result.text).toBe(text);

expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(10);
expect(result.start.get("hour")).toBe(15);
expect(result.start.get("minute")).toBe(49);
});

testSingleCase(chrono, "In several hours", new Date(2012, 8 - 1, 10, 12, 49), (result, text) => {
expect(result.text).toBe(text);

expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(10);
expect(result.start.get("hour")).toBe(19);
expect(result.start.get("minute")).toBe(49);
});

testSingleCase(chrono, "In a couple of days", new Date(2012, 8 - 1, 10, 12, 49), (result, text) => {
expect(result.text).toBe(text);

expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(12);
expect(result.start.get("hour")).toBe(12);
expect(result.start.get("minute")).toBe(49);
});
});

test("Test - Single Expression (Implied)", () => {
testSingleCase(chrono, "within 30 days", new Date(2012, 7, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen de 30 dagen", new Date(2012, 7, 10, 12, 14), (result) => {
expect(!result.start.isCertain("year")).not.toBeNull();
expect(!result.start.isCertain("month")).not.toBeNull();
expect(!result.start.isCertain("day")).not.toBeNull();
Expand All @@ -220,15 +152,15 @@ test("Test - Single Expression (Implied)", () => {
});

test("Test - Implied time values", () => {
testSingleCase(chrono, "in 24 hours", new Date(2020, 7 - 1, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "Binnen 24 uur", new Date(2020, 7 - 1, 10, 12, 14), (result) => {
expect(result.start.get("hour")).toBe(12);
expect(result.start.get("minute")).toBe(14);
expect(result.start.get("day")).toBe(11);
expect(result.start.get("month")).toBe(7);
expect(result.start.get("year")).toBe(2020);
});

testSingleCase(chrono, "in one day", new Date(2020, 7 - 1, 10, 12, 14), (result) => {
testSingleCase(chrono.nl, "binnen een dag", new Date(2020, 7 - 1, 10, 12, 14), (result) => {
expect(result.start.get("hour")).toBe(12);
expect(result.start.get("minute")).toBe(14);
expect(result.start.get("day")).toBe(11);
Expand All @@ -238,7 +170,7 @@ test("Test - Implied time values", () => {
});

test("Test - Time units' certainty", () => {
testSingleCase(chrono, "in 2 minute", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
testSingleCase(chrono.nl, "binnen 2 minuten", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
Expand All @@ -253,7 +185,7 @@ test("Test - Time units' certainty", () => {
expect(result.start.isCertain("minute")).toBeTruthy();
});

testSingleCase(chrono, "in 2hour", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
testSingleCase(chrono.nl, "binnen 2 uur", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
Expand All @@ -268,21 +200,7 @@ test("Test - Time units' certainty", () => {
expect(result.start.isCertain("minute")).toBeTruthy();
});

testSingleCase(chrono, "in a few year", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2019);
expect(result.start.get("month")).toBe(10);
expect(result.start.get("day")).toBe(1);
expect(result.start.get("hour")).toBe(14);
expect(result.start.get("minute")).toBe(52);

expect(result.start.isCertain("month")).toBeFalsy();
expect(result.start.isCertain("day")).toBeFalsy();
expect(result.start.isCertain("hour")).toBeFalsy();
expect(result.start.isCertain("minute")).toBeFalsy();
});

testSingleCase(chrono, "within 12 month", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
testSingleCase(chrono.nl, "binnen de 12 maand", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2017);
expect(result.start.get("month")).toBe(10);
Expand All @@ -297,7 +215,7 @@ test("Test - Time units' certainty", () => {
expect(result.start.isCertain("minute")).toBeFalsy();
});

testSingleCase(chrono, "within 3 days", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
testSingleCase(chrono.nl, "binnen de 3 dagen", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
Expand Down

0 comments on commit 5c98948

Please sign in to comment.