svoid test_EnglishDateParser() { new EnglishDateParser parser; parser.assumeFuture = true; // maybe not needed testFunctionValues(s -> parser.parse((S) s), mapToParams(test_EnglishDateParser_examples())); } static Map test_EnglishDateParser_examples() { delegate Day to DateStructures. delegate Month to DateStructures. delegate Year to DateStructures. delegate CurrentWeekPlus to DateStructures. delegate Weekday to DateStructures. delegate TodayPlus to DateStructures. delegate Hour to DateStructures. delegate Minute to DateStructures. delegate Second to DateStructures. delegate Between to DateStructures. ret litorderedmap( "2020/5/13" := new Day(13, new Month(5, new Year(2020))), "tuesday" := new Weekday(3, null), "next tuesday" := new Weekday(3, new CurrentWeekPlus(1)), "in 5 days" := new TodayPlus(5), "10 days from now" := new TodayPlus(10), "February" := new Month(2), "February 2020" := new Month(2, new Year(2020)), "March 4th" := new Day(4, new Month(3)), "yesterday" := new TodayPlus(-1), "today" := new TodayPlus(0), "tomorrow" := new TodayPlus(1), "15:43" := new Minute(43, new Hour(3, true)), "10:41" := new Minute(41, new Hour(10, null)), "3 am" := new Hour(3, false), "5 pm" := new Hour(5, true), "16:41:23" := new Second(23, new Minute(41, new Hour(4, true))), "between 1 and 2 pm" := new Between(new Hour(1, true), new Hour(2, true)), ); }