package com.codecademy.eventhub.list;
import com.google.inject.Injector;
import com.codecademy.eventhub.integration.GuiceTestCase;
import org.junit.Assert;
import org.junit.Test;
import java.util.Properties;
public class DmaIdListTest extends GuiceTestCase {
@Test
public void testDmaIdList() throws Exception {
DmaIdList.Factory dmaIdListFactory = getDmaIdListFactory();
dmaIdListFactory.setDefaultCapacity(2);
String filename = getTempDirectory() + "/simple_id_list.ser";
IdList idList = dmaIdListFactory.build(filename);
long[] ids = new long[] { 10, 20, 30, 40, 50 };
IdList.Iterator iterator = idList.iterator();
for (int i = 0; i < ids.length - 1; i++) {
idList.add(ids[i]);
}
Assert.assertFalse(iterator.hasNext());
iterator = idList.iterator();
for (int i = 0; i < ids.length - 1; i++) {
Assert.assertTrue(iterator.hasNext());
Assert.assertEquals(ids[i], iterator.next());
}
Assert.assertFalse(iterator.hasNext());
iterator = idList.subList(idList.getStartOffset(19), 2);
for (int i = 1; i < ids.length - 2; i++) {
Assert.assertTrue(iterator.hasNext());
Assert.assertEquals(ids[i], iterator.next());
}
Assert.assertFalse(iterator.hasNext());
idList.close();
idList = dmaIdListFactory.build(filename);
idList.add(ids[ids.length - 1]);
iterator = idList.iterator();
for (long id : ids) {
Assert.assertTrue(iterator.hasNext());
Assert.assertEquals(id, iterator.next());
}
Assert.assertFalse(iterator.hasNext());
}
private DmaIdList.Factory getDmaIdListFactory() {
Injector injector = createInjectorFor(
new Properties(), new DmaIdListModule());
return injector.getInstance(DmaIdList.Factory.class);
}
}