@Test public void testWindowIdAhead() { long first = 1431714014123L; int ahead = 678; for (int windowWidthMillis : new int[] {500, 123}) { long window1 = WindowGenerator.getWindowId(first, first, windowWidthMillis); long window2 = WindowGenerator.getAheadWindowId(window1, first, windowWidthMillis, ahead); for (int i = 0; i < ahead; i++) { window1 = WindowGenerator.getNextWindowId(window1, first, windowWidthMillis); } Assert.assertEquals(window2, window1); } }
@Test public void testWindowToTimeBaseSecondRollover() { long first = 1431714014123L; for (int windowWidthMillis : new int[] {500, 123}) { long window1 = WindowGenerator.getWindowId(first, first, windowWidthMillis); window1 |= WindowGenerator.MAX_WINDOW_ID; long window2 = WindowGenerator.getNextWindowId(window1, first, windowWidthMillis); Assert.assertTrue( "base seconds should be greater during an rollover", (window2 >> 32) > (window1 >> 32)); long time1 = WindowGenerator.getWindowMillis(window1, first, windowWidthMillis); long time2 = WindowGenerator.getWindowMillis(window2, first, windowWidthMillis); Assert.assertEquals( "max window id", WindowGenerator.MAX_WINDOW_ID, window1 & WindowGenerator.WINDOW_MASK); Assert.assertEquals("rollover after max", 0, window2 & WindowGenerator.WINDOW_MASK); Assert.assertEquals("window millis difference", windowWidthMillis, time2 - time1); } }