package de.lessvoid.nifty.controls.listbox;
import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.verify;
import java.util.Arrays;
import java.util.Collections;
import org.easymock.Capture;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import de.lessvoid.nifty.controls.ListBox;
import de.lessvoid.nifty.controls.ListBoxSelectionChangedEvent;
public class ListBoxNotifyDeselectionTest {
private ListBoxImpl<TestItem> listBox;
private ListBoxView<TestItem> view;
private TestItem o1 = new TestItem("o1");
private TestItem o2 = new TestItem("o2");
private Capture<ListBoxSelectionChangedEvent<TestItem>> lastEvent = new
Capture<ListBoxSelectionChangedEvent<TestItem>>();
private SelectionCheck selectionCheck = new SelectionCheck(listBox);
@Before
public void before() {
listBox = new ListBoxImpl<TestItem>(createMock(ListBox.class));
view = createMock(ListBoxView.class);
expect(view.getWidth(o1)).andReturn(10);
view.updateTotalWidth(10);
expectLastCall();
view.updateTotalCount(1);
expectLastCall();
view.display(Arrays.asList(o1), 0, Collections.<Integer>emptyList());
expectLastCall();
expect(view.getWidth(o2)).andReturn(20);
view.updateTotalWidth(20);
expectLastCall();
view.updateTotalCount(2);
expectLastCall();
view.display(Arrays.asList(o1, o2), 0, Collections.<Integer>emptyList());
expectLastCall();
view.display(Arrays.asList(o1, o2), 0, Collections.<Integer>emptyList());
expectLastCall();
view.scrollTo(0);
expectLastCall();
view.display(Arrays.asList(o1, o2), 0, Arrays.asList(0));
expectLastCall();
view.publish(capture(lastEvent));
expectLastCall();
view.display(Arrays.asList(o1, o2), 0, Arrays.asList(0));
expectLastCall();
replay(view);
listBox.bindToView(view, 2);
listBox.addItem(o1);
listBox.addItem(o2);
listBox.selectItem(o1);
}
@After
public void after() {
verify(view);
}
@Test
public void testDeselectItem() {
reset(view);
view.display(Arrays.asList(o1, o2), 0, Collections.<Integer>emptyList());
expectLastCall();
view.publish(capture(lastEvent));
expectLastCall();
replay(view);
listBox.deselectItem(o1);
selectionCheck.assertChangedEventSelection(lastEvent.getValue());
selectionCheck.assertChangedEventSelectionIndices(lastEvent.getValue());
}
@Test
public void testDeselectByIndex() {
reset(view);
view.display(Arrays.asList(o1, o2), 0, Collections.<Integer>emptyList());
expectLastCall();
view.publish(capture(lastEvent));
expectLastCall();
replay(view);
listBox.deselectItemByIndex(0);
selectionCheck.assertChangedEventSelection(lastEvent.getValue());
selectionCheck.assertChangedEventSelectionIndices(lastEvent.getValue());
}
@Test
public void testRemoveSelectedItem() {
reset(view);
view.scrollTo(0);
expectLastCall();
view.updateTotalCount(1);
expectLastCall();
view.display(Arrays.asList(o2), 0, Collections.<Integer>emptyList());
expectLastCall();
view.publish(capture(lastEvent));
expectLastCall();
replay(view);
listBox.removeItem(o1);
selectionCheck.assertChangedEventSelection(lastEvent.getValue());
selectionCheck.assertChangedEventSelectionIndices(lastEvent.getValue());
}
@Test
public void testRemoveSelectedItemByIndex() {
reset(view);
view.scrollTo(0);
expectLastCall();
view.updateTotalCount(1);
expectLastCall();
view.display(Arrays.asList(o2), 0, Collections.<Integer>emptyList());
expectLastCall();
view.publish(capture(lastEvent));
expectLastCall();
replay(view);
listBox.removeItemByIndex(0);
selectionCheck.assertChangedEventSelection(lastEvent.getValue());
selectionCheck.assertChangedEventSelectionIndices(lastEvent.getValue());
}
@Test
public void testRemoveSelectionByClear() {
reset(view);
view.updateTotalWidth(0);
expectLastCall();
view.updateTotalCount(0);
expectLastCall();
view.display(Collections.<TestItem>emptyList(), -1, Collections.<Integer>emptyList());
expectLastCall();
view.publish(capture(lastEvent));
expectLastCall();
replay(view);
listBox.clear();
selectionCheck.assertChangedEventSelection(lastEvent.getValue());
selectionCheck.assertChangedEventSelectionIndices(lastEvent.getValue());
}
}