@Test public void verifyPeriodicTemplates() throws Exception { final String[] periodicTemplates = RandomnessUtils.periodicTemplates(length); Arrays.sort(periodicTemplates); Arrays.sort(expectedAperiodicBits); for (int i = 0, periodicPointer = 0, aperiodicPointer = 0; i < (1 << length) - 1; i++) { if (i == Integer.valueOf(periodicTemplates[periodicPointer], 2).intValue()) { assertEquals(length, periodicTemplates[periodicPointer].length()); periodicPointer++; } else { final int expectedAperiodicValue = Integer.valueOf(expectedAperiodicBits[aperiodicPointer++], 2).intValue(); assertEquals(i, expectedAperiodicValue); } } assertEquals((1 << length) - expectedAperiodicBits.length, periodicTemplates.length); }