public void testSetStart() {
final EventList el = EventLists.eventList();
el.add("one");
el.add("two");
final RangedEventList rel = createBackedRangedEventList(el);
assertEquals(2, el.size());
assertEquals(2, rel.size());
ListEventListener lel = new ListEventListener() {
private int count = 0;
public void listChanged(final ListEvent listEvent) {
switch (count++) {
case 0:
assertEquals(ListEvent.createRemoved(rel, 0), listEvent);
break;
case 1:
assertNull(listEvent);
break;
default:
fail("Unexpected: " + listEvent);
}
}
};
rel.addListEventListener(lel);
rel.setStart(1);
lel.listChanged(null);
assertEquals(1, rel.size());
rel.removeListEventListener(lel);
lel = new ListEventListener() {
private int count = 0;
public void listChanged(final ListEvent listEvent) {
switch (count++) {
case 0:
assertEquals(ListEvent.createRemoved(rel, 0), listEvent);
break;
case 1:
assertNull(listEvent);
break;
default:
fail("Unexpected: " + listEvent);
}
}
};
rel.addListEventListener(lel);
rel.setStart(2);
lel.listChanged(null);
assertEquals(0, rel.size());
rel.removeListEventListener(lel);
lel = new ListEventListener() {
private int count = 0;
public void listChanged(final ListEvent listEvent) {
switch (count++) {
case 0:
assertEquals(ListEvent.createOther(rel), listEvent);
break;
case 1:
assertNull(listEvent);
break;
default:
fail("Unexpected: " + listEvent);
}
}
};
rel.addListEventListener(lel);
rel.setStart(99);
lel.listChanged(null);
assertEquals(0, rel.size());
rel.removeListEventListener(lel);
lel = new ListEventListener() {
private int count = 0;
public void listChanged(final ListEvent listEvent) {
switch (count++) {
case 0:
assertEquals(ListEvent.createAdded(rel, 0, 2), listEvent);
break;
case 1:
assertNull(listEvent);
break;
default:
fail("Unexpected: " + listEvent);
}
}
};
rel.addListEventListener(lel);
rel.setStart(0);
lel.listChanged(null);
assertEquals(2, rel.size());
assertEquals(el, rel);
rel.removeListEventListener(lel);
el.add("three");
rel.setStart(1);
rel.setMaxSize(2);
lel = new ListEventListener() {
private int count = 0;
public void listChanged(final ListEvent listEvent) {
switch (count++) {
case 0:
assertEquals(ListEvent.createRemoved(rel, 1), listEvent);
break;
case 1:
assertEquals(ListEvent.createAdded(rel, 0), listEvent);
break;
case 2:
assertNull(listEvent);
break;
default:
fail("Unexpected: " + listEvent);
}
}
};
rel.addListEventListener(lel);
rel.setStart(0);
lel.listChanged(null);
rel.removeListEventListener(lel);
try {
rel.setStart(-1);
fail("Expected IllegalArgumentException.");
} catch (IllegalArgumentException iae) {
// expected
}
}