Вот мой. Не сильно отличается от некоторых других ответов, но зависит от теста, fwiw.
public class ChunkTest extends TestCase {
public void testEmpty() throws Exception {
assertEquals(0, breakStringInChunks("", 1).size());
}
public void testOneChunk() throws Exception {
String s = "abc";
List<String> chunks = breakStringInChunks(s, s.length());
assertEquals(s, chunks.get(0));
assertEquals(1, chunks.size());
}
public void testPartialChunk() throws Exception {
String s = "abc";
List<String> chunks = breakStringInChunks(s, s.length() + 1);
assertEquals(s, chunks.get(0));
assertEquals(1, chunks.size());
}
public void testTwoChunks() throws Exception {
String s = "abc";
List<String> chunks = breakStringInChunks(s, 2);
assertEquals("ab", chunks.get(0));
assertEquals("c", chunks.get(1));
assertEquals(2, chunks.size());
}
public void testTwoEvenChunks() throws Exception {
String s = "abcd";
List<String> chunks = breakStringInChunks(s, 2);
assertEquals("ab", chunks.get(0));
assertEquals("cd", chunks.get(1));
}
private List<String> breakStringInChunks(String text, int chunkSize) {
if (text.isEmpty())
return Collections.emptyList();
int n = (text.length() + chunkSize - 1) / chunkSize;
List<String> chunks = new ArrayList<String>(n);
for (int i = 0; i < n; ++i)
chunks.add(text.substring(i * chunkSize, Math.min((i + 1) * chunkSize, text.length())));
return chunks;
}
}