/** * */ package ssabsa.swing.widget.candidate; import static org.junit.Assert.assertEquals; import java.awt.event.KeyEvent; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import org.fest.swing.core.BasicRobot; import org.fest.swing.core.MouseButton; import org.fest.swing.core.Robot; import org.fest.swing.data.TableCell; import org.fest.swing.fixture.FrameFixture; import org.fest.swing.fixture.JTableFixture; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * @author neals01 * */ public class FestTest { protected Robot robot; private ArrayList items; private FrameFixture frameFixture; /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { robot = BasicRobot.robotWithNewAwtHierarchy(); items = new ArrayList(); for (int i = 0; i < 15; i++) { items.add("AB" + i); } JTable table = new JTable(); table.setName("Table"); table.setModel(createTableModel(items)); JFrame frame = new JFrame(); frame.add(table); frameFixture = new FrameFixture(robot, frame); } /** * @throws Exception */ @After public void tearDown() throws Exception { if (robot != null) { robot.cleanUp(); } } /** * @throws Exception * */ @Test public void testControlModifier() throws Exception { frameFixture.show(); frameFixture.requireVisible(); JTableFixture tableFixture = new JTableFixture(robot, "Table"); tableFixture.cell(TableCell.row(1).column(0)).click(); int[] selectedRows = tableFixture.component().getSelectedRows(); assertEquals(Integer.valueOf(1), Integer.valueOf(selectedRows.length)); assertEquals(Integer.valueOf(1), Integer.valueOf(selectedRows[0])); robot.pressModifiers(KeyEvent.VK_CONTROL); tableFixture.click(TableCell.row(3).column(0), MouseButton.LEFT_BUTTON); tableFixture.click(TableCell.row(7).column(0), MouseButton.LEFT_BUTTON); robot.releaseModifiers(KeyEvent.VK_CONTROL); Thread.sleep(1000); selectedRows = tableFixture.component().getSelectedRows(); assertEquals(Integer.valueOf(3), Integer.valueOf(selectedRows.length)); assertEquals(Integer.valueOf(1), Integer.valueOf(selectedRows[0])); assertEquals(Integer.valueOf(3), Integer.valueOf(selectedRows[0])); assertEquals(Integer.valueOf(7), Integer.valueOf(selectedRows[0])); } /** * @throws Exception * */ @Test public void testShiftModifier() throws Exception { frameFixture.show(); frameFixture.requireVisible(); JTableFixture tableFixture = new JTableFixture(robot, "Table"); tableFixture.cell(TableCell.row(1).column(0)).click(); int[] selectedRows = tableFixture.component().getSelectedRows(); assertEquals(Integer.valueOf(1), Integer.valueOf(selectedRows.length)); assertEquals(Integer.valueOf(1), Integer.valueOf(selectedRows[0])); robot.pressModifiers(KeyEvent.VK_SHIFT); tableFixture.click(TableCell.row(4).column(0), MouseButton.LEFT_BUTTON); robot.releaseModifiers(KeyEvent.VK_SHIFT); Thread.sleep(1000); selectedRows = tableFixture.component().getSelectedRows(); assertEquals(Integer.valueOf(4), Integer.valueOf(selectedRows.length)); assertEquals(Integer.valueOf(1), Integer.valueOf(selectedRows[0])); assertEquals(Integer.valueOf(4), Integer.valueOf(selectedRows[3])); } private TableModel createTableModel(final ArrayList list) { return new AbstractTableModel() { private static final long serialVersionUID = 1L; @Override public String getColumnName(int col) { return "Col" + col; } public int getColumnCount() { return 3; } public Object getValueAt(int row, int col) { String rowAt = list.get(row); if (rowAt == null) { return ""; } return Character.toString(rowAt.charAt(col)); } @Override public boolean isCellEditable(int row, int col) { return false; } @Override public int getRowCount() { return list.size(); } }; } }