package de.lessvoid.nifty.controls.listbox;
import de.lessvoid.nifty.controls.ListBox.SelectionMode;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ListBoxChangeSelectionModeTest {
private ListBoxImpl<TestItem> listBox = new ListBoxImpl<TestItem>(null);
private TestItem o1 = new TestItem("o1");
private TestItem o2 = new TestItem("o2");
@Before
public void before() {
listBox.addItem(o1);
listBox.addItem(o2);
}
@Test
public void testChangeFromDefaultToMultipleWithoutSelection() {
listBox.changeSelectionMode(SelectionMode.Multiple, false);
assertSelection();
}
@Test
public void testChangeFromDefaultToMultipleWithSingleSelection() {
listBox.selectItemByIndex(0);
listBox.changeSelectionMode(SelectionMode.Multiple, false);
assertSelection(o1);
}
@Test
public void testChangeFromMultipleToSingleWithoutSelection() {
listBox.changeSelectionMode(SelectionMode.Multiple, false);
listBox.changeSelectionMode(SelectionMode.Single, false);
assertSelection();
}
@Test
public void testChangeFromMultipleToSingleWithSingleSelection() {
listBox.changeSelectionMode(SelectionMode.Multiple, false);
listBox.selectItem(o1);
listBox.changeSelectionMode(SelectionMode.Single, false);
assertSelection(o1);
}
@Test
public void testChangeFromMultipleToSingleWithMultipleSelection() {
listBox.changeSelectionMode(SelectionMode.Multiple, false);
listBox.selectItem(o1);
listBox.selectItem(o2);
listBox.changeSelectionMode(SelectionMode.Single, false);
assertSelection(o1);
}
private void assertSelection(final Object... selection) {
assertEquals(selection.length, listBox.getSelection().size());
int i = 0;
for (Object o : selection) {
assertEquals(o, listBox.getSelection().get(i));
i++;
}
}
}