@Test
public void slice() throws Exception {
BufferedLogger log = new BufferedLogger(100);
for (int i = 0; i < 10; i++) {
log.log("line " + i);
}
log.flush();
List<BufferedLogger.Entry> all = log.getCopy();
List<BufferedLogger.Entry> entries = log.slice(all.get(5).id, 3);
String result = str(entries);
assertEquals("line 6,line 7,line 8", result);
result = str(log.slice(all.get(5).id, -3));
assertEquals("line 2,line 3,line 4", result);
result = str(log.slice(all.get(2).id, -3));
assertEquals("line 0,line 1", result);
result = str(log.slice(all.get(8).id, +3));
assertEquals("line 9", result);
result = str(log.slice(all.get(0).id, 20));
assertEquals("line 1,line 2,line 3,line 4,line 5,line 6,line 7,line 8,line 9", result);
result = str(log.slice(all.get(9).id, -20));
assertEquals("line 0,line 1,line 2,line 3,line 4,line 5,line 6,line 7,line 8", result);
result = str(log.slice(all.get(0).id-1, 20));
assertEquals("line 0,line 1,line 2,line 3,line 4,line 5,line 6,line 7,line 8,line 9", result);
}