svoid test_parseBusinessHours() { Pair> p = test_parseEnglishDateRange_examples(); DateInterpretationConfig config = new(ukTimeZone(), parseYMDHMS(p.a), true); testFunctionValues(s -> { LongRange range = parseEnglishDateRange((S) s, config); ret range == null ? null : pair(formatDateWithSeconds(range.start, config.timeZone), formatDateWithSeconds(range.end, config.timeZone)); }, mapToParams(p.b)); } static Map test_parseBusinessHours_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. // end values are one hour or one minute less because the range is inclusive ret litorderedmap( "9-12", new Between(new Hour(9, false), new Hour(11, false)), "9-13", new Between(new Hour(9, false), new Hour(12, true)), "15-18", new Between(new Hour(3, true), new Hour(5, true)), "9-10, 16-17", new Or( new Between(new Hour(9, false), new Hour(9, false)), new Between(new Hour(4, true), new Hour(4, true))), "9:30-10:45", new Between(new Minute(30, new Hour(9, false)), new Minute(44, new Hour(10, true))), ); }