/** * calculate absolute time range based on current timestamp. * * @param currTime milliseconds * @return */ private AbsenceWindowProcessor nextProcessor(long currTime) { AbsenceWindow window = windowGenerator.nextWindow(currTime); return new AbsenceWindowProcessor(expectedAttrs, window); } }
@Test public void testWindowInToday() throws Exception { AbsenceDailyRule rule = new AbsenceDailyRule(); // from 2PM to 3PM each day rule.startOffset = 14 * 3600 * 1000; rule.endOffset = 15 * 3600 * 1000; AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule); // get current time String date = "2016-07-08 00:00:00"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); Date d = df.parse(date); long startTimeOfDay = d.getTime(); String currDate = "2016-07-08 11:30:29"; df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); d = df.parse(currDate); AbsenceWindow window = generator.nextWindow(d.getTime()); Assert.assertEquals(startTimeOfDay + rule.startOffset, window.startTime); }
@Test public void testWindowInTomorrow() throws Exception { AbsenceDailyRule rule = new AbsenceDailyRule(); // from 2PM to 3PM each day rule.startOffset = 14 * 3600 * 1000; rule.endOffset = 15 * 3600 * 1000; AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule); // get current time String date = "2016-07-08 00:00:00"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); Date d = df.parse(date); long startTimeOfDay = d.getTime(); String currDate = "2016-07-08 18:20:19"; df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); d = df.parse(currDate); AbsenceWindow window = generator.nextWindow(d.getTime()); // this needs adjustment for one day Assert.assertEquals(startTimeOfDay + rule.startOffset + AbsenceDailyRule.DAY_MILLI_SECONDS, window.startTime); } }