package com.bc.ceres.swing; import org.junit.Test; import javax.swing.*; import static org.junit.Assert.*; public class GridTest { @Test public void testEmptyGrid() throws Exception { Grid grid = new Grid(4, true); assertEquals(4, grid.getColumnCount()); assertEquals(0, grid.getDataRowCount()); assertEquals(1, grid.getRowCount()); assertEquals(null, grid.getComponent(0, 0)); assertEquals(false, grid.isDataRowSelected(0)); assertEquals(0, grid.getSelectedDataRowCount()); assertArrayEquals(asArray(), grid.getSelectedDataRowIndexes()); } @Test public void testSetHeaderRow() throws Exception { Grid grid = new Grid(4, true); JLabel c1 = new JLabel(); JLabel c2 = new JLabel(); JLabel c3 = new JLabel(); grid.setHeaderRow(c1, c2, c3); assertEquals(4, grid.getColumnCount()); assertEquals(0, grid.getDataRowCount()); assertEquals(1, grid.getRowCount()); assertNotNull(grid.getComponent(0, 0)); assertEquals(JCheckBox.class, grid.getComponent(0, 0).getClass()); assertSame(c1, grid.getComponent(0, 1)); assertSame(c2, grid.getComponent(0, 2)); assertSame(c3, grid.getComponent(0, 3)); } @Test public void testAddDataRow() throws Exception { Grid grid = new Grid(4, true); JLabel c1 = new JLabel(); JLabel c2 = new JLabel(); JLabel c3 = new JLabel(); JLabel c4 = new JLabel(); JLabel c5 = new JLabel(); JLabel c6 = new JLabel(); grid.addDataRow(c1, c2, c3); assertEquals(1, grid.getDataRowCount()); assertEquals(2, grid.getRowCount()); assertEquals(JCheckBox.class, grid.getComponent(1, 0).getClass()); assertSame(c1, grid.getComponent(1, 1)); assertSame(c2, grid.getComponent(1, 2)); assertSame(c3, grid.getComponent(1, 3)); grid.addDataRow(c4, c5, c6); assertEquals(2, grid.getDataRowCount()); assertEquals(3, grid.getRowCount()); assertEquals(JCheckBox.class, grid.getComponent(1, 0).getClass()); assertSame(c1, grid.getComponent(1, 1)); assertSame(c2, grid.getComponent(1, 2)); assertSame(c3, grid.getComponent(1, 3)); assertEquals(JCheckBox.class, grid.getComponent(2, 0).getClass()); assertSame(c4, grid.getComponent(2, 1)); assertSame(c5, grid.getComponent(2, 2)); assertSame(c6, grid.getComponent(2, 3)); } @Test public void testRemoveDataRow() throws Exception { Grid grid = new Grid(4, true); JLabel c1 = new JLabel(); JLabel c2 = new JLabel(); JLabel c3 = new JLabel(); JLabel c4 = new JLabel(); JLabel c5 = new JLabel(); JLabel c6 = new JLabel(); grid.addDataRow(c1, c2, c3); grid.addDataRow(c4, c5, c6); grid.removeDataRow(0); assertEquals(1, grid.getDataRowCount()); assertEquals(2, grid.getRowCount()); assertEquals(JCheckBox.class, grid.getComponent(1, 0).getClass()); assertSame(c4, grid.getComponent(1, 1)); assertSame(c5, grid.getComponent(1, 2)); assertSame(c6, grid.getComponent(1, 3)); grid.removeDataRow(0); assertEquals(0, grid.getDataRowCount()); assertEquals(1, grid.getRowCount()); } @Test public void testRemoveDataRows() throws Exception { Grid grid = new Grid(4, true); JLabel c1 = new JLabel(); JLabel c2 = new JLabel(); JLabel c3 = new JLabel(); JLabel c4 = new JLabel(); JLabel c5 = new JLabel(); JLabel c6 = new JLabel(); grid.addDataRow(c1, c2, c3); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); grid.addDataRow(c4, c5, c6); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); grid.removeDataRows(1, 3); assertEquals(2, grid.getDataRowCount()); assertEquals(3, grid.getRowCount()); assertEquals(JCheckBox.class, grid.getComponent(1, 0).getClass()); assertSame(c1, grid.getComponent(1, 1)); assertSame(c2, grid.getComponent(1, 2)); assertSame(c3, grid.getComponent(1, 3)); assertEquals(JCheckBox.class, grid.getComponent(2, 0).getClass()); assertSame(c4, grid.getComponent(2, 1)); assertSame(c5, grid.getComponent(2, 2)); assertSame(c6, grid.getComponent(2, 3)); } @Test public void testSelectionState_1() throws Exception { Grid grid = new Grid(4, true); MySelectionListener listener = new MySelectionListener(); grid.getSelectionModel().addListener(listener); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); assertEquals(0, grid.getSelectedDataRowCount()); assertEquals(-1, grid.getSelectedDataRowIndex()); assertArrayEquals(asArray(), grid.getSelectedDataRowIndexes()); ((JCheckBox) grid.getComponent(2, 0)).doClick(); assertEquals(1, grid.getSelectedDataRowCount()); assertEquals(1, grid.getSelectedDataRowIndex()); assertArrayEquals(asArray(1), grid.getSelectedDataRowIndexes()); ((JCheckBox) grid.getComponent(1, 0)).doClick(); ((JCheckBox) grid.getComponent(3, 0)).doClick(); assertEquals(3, grid.getSelectedDataRowCount()); assertEquals(0, grid.getSelectedDataRowIndex()); assertArrayEquals(asArray(0, 1, 2), grid.getSelectedDataRowIndexes()); assertEquals(3, listener.count); } @Test public void testSelectionState_2() throws Exception { Grid grid = new Grid(4, true); MySelectionListener listener = new MySelectionListener(); grid.getSelectionModel().addListener(listener); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); grid.addDataRow(new JLabel(), new JLabel(), new JLabel()); assertEquals(0, grid.getSelectedDataRowCount()); assertEquals(-1, grid.getSelectedDataRowIndex()); assertArrayEquals(asArray(), grid.getSelectedDataRowIndexes()); grid.setSelectedDataRowIndexes(2); assertEquals(1, grid.getSelectedDataRowCount()); assertEquals(2, grid.getSelectedDataRowIndex()); assertArrayEquals(asArray(2), grid.getSelectedDataRowIndexes()); grid.setSelectedDataRowIndexes(1, 2, 3); assertEquals(3, grid.getSelectedDataRowCount()); assertEquals(1, grid.getSelectedDataRowIndex()); assertArrayEquals(asArray(1, 2, 3), grid.getSelectedDataRowIndexes()); assertEquals(2, listener.count); } static int [] asArray(int ... array) { return array; } private static class MySelectionListener implements GridSelectionModel.Listener { int count; @Override public void gridSelectionChanged(GridSelectionModel.Event event) { count++; } } }