package org.drugis.common.beans;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import org.drugis.common.event.ListDataEventMatcher;
import org.junit.Before;
import org.junit.Test;
import com.jgoodies.binding.list.ArrayListModel;
public class AffixedObservableListTest {
private ArrayListModel<String> d_list;
private AffixedObservableList<String> d_suffix;
private AffixedObservableList<String> d_prefix;
@Before
public void setUp() {
d_list = new ArrayListModel<String>(Arrays.asList("Kidney bean", "Green bean"));
d_suffix = AffixedObservableList.createSuffixed(d_list, "Beeeaaaans", "B");
d_prefix = AffixedObservableList.createPrefixed(d_list, "Beeeaaaans", "B");
}
@Test
public void testSuffixAccess() {
assertEquals(4, d_suffix.size());
assertEquals("Kidney bean", d_suffix.get(0));
assertEquals("Green bean", d_suffix.get(1));
assertEquals("Beeeaaaans", d_suffix.get(2));
assertEquals("B", d_suffix.get(3));
}
@Test
public void testSuffixListDataEvents() {
// Test add
ListDataListener mockListenerAdd = createMock(ListDataListener.class);
mockListenerAdd.intervalAdded(ListDataEventMatcher.eqListDataEvent(new ListDataEvent(d_suffix, ListDataEvent.INTERVAL_ADDED, 1, 1)));
replay(mockListenerAdd);
d_suffix.addListDataListener(mockListenerAdd);
d_list.add(1, "His MyBean!");
verify(mockListenerAdd);
d_suffix.removeListDataListener(mockListenerAdd);
// Test remove
ListDataListener mockListenerRemove = createMock(ListDataListener.class);
mockListenerRemove.intervalRemoved(ListDataEventMatcher.eqListDataEvent(new ListDataEvent(d_suffix, ListDataEvent.INTERVAL_REMOVED, 0, 0)));
replay(mockListenerRemove);
d_suffix.addListDataListener(mockListenerRemove);
d_list.remove(0);
verify(mockListenerRemove);
d_suffix.removeListDataListener(mockListenerRemove);
}
@Test
public void testPrefixAccess() {
assertEquals(4, d_prefix.size());
assertEquals("Kidney bean", d_prefix.get(2));
assertEquals("Green bean", d_prefix.get(3));
assertEquals("Beeeaaaans", d_prefix.get(0));
assertEquals("B", d_prefix.get(1));
}
@Test
public void testPrefixListDataEvents() {
// Test add
ListDataListener mockListenerAdd = createMock(ListDataListener.class);
mockListenerAdd.intervalAdded(ListDataEventMatcher.eqListDataEvent(new ListDataEvent(d_prefix, ListDataEvent.INTERVAL_ADDED, 3, 3)));
replay(mockListenerAdd);
d_prefix.addListDataListener(mockListenerAdd);
d_list.add(1, "His MyBean!");
verify(mockListenerAdd);
d_prefix.removeListDataListener(mockListenerAdd);
// Test remove
ListDataListener mockListenerRemove = createMock(ListDataListener.class);
mockListenerRemove.intervalRemoved(ListDataEventMatcher.eqListDataEvent(new ListDataEvent(d_prefix, ListDataEvent.INTERVAL_REMOVED, 2, 2)));
replay(mockListenerRemove);
d_prefix.addListDataListener(mockListenerRemove);
d_list.remove(0);
verify(mockListenerRemove);
d_prefix.removeListDataListener(mockListenerRemove);
}
}