/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.utils; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Classe Test pour <code>TableFilter</code> . * * @author $Author: rivierv $ * @version $Revision: 1.4 $ */ public class TableFilterTest extends TestCase { TableFilter filterModel; BasicModel model; /** * Constructor for the TableFilterTest object * * @param name Description of Parameter */ public TableFilterTest(String name) { super(name); } /** * A unit test for JUnit */ public void testNoFilter() { assertEquals("Ligne", filterModel.getRowCount(), model.getRowCount()); assertEquals("Colonne", filterModel.getColumnCount(), model.getColumnCount()); assertEquals("value", filterModel.getValueAt(0, 0), model.getValueAt(0, 0)); assertEquals("name", filterModel.getColumnName(0), "COL_0"); } /** * A unit test for JUnit */ public void testPropertyChangeEvent() { BasicListener listener = new BasicListener(); filterModel.addPropertyChangeListener(1, listener); assertNull(listener.event); List list = new ArrayList(); list.add(new Integer(5)); filterModel.setFilter(1, new Integer(5)); assertEquals("set", listener.event.getPropertyName(), "1"); Object[] newVal = (Object[])listener.event.getNewValue(); assertEquals("set", java.util.Arrays.asList(newVal), list); assertEquals("set", listener.event.getOldValue(), null); filterModel.clearFilter(1); assertEquals("clear", listener.event.getPropertyName(), "1"); assertEquals("clear", listener.event.getNewValue(), null); Object[] oldVal = (Object[])listener.event.getOldValue(); assertEquals("clear", java.util.Arrays.asList(oldVal), list); } /** * A unit test for JUnit */ public void test_clearFilter() { filterModel.setFilter(0, new Integer(1)); assertEquals("Apres Filtre", filterModel.getRowCount(), 5); filterModel.clearFilter(0); assertEquals("Apres clearFilter", filterModel.getRowCount(), model.getRowCount()); } /** * A unit test for JUnit */ public void test_setFilter() { filterModel.setFilter(0, new Integer(1)); assertEquals("Ligne", filterModel.getRowCount(), 5); assertEquals("Colonne", filterModel.getColumnCount(), 10); assertEquals("value ", filterModel.getValueAt(0, 1), new Integer(5)); } /** * A unit test for JUnit */ public void test_addFilter() { filterModel.addFilter(0, new Integer(1)); assertEquals("A Ligne", filterModel.getRowCount(), 5); assertEquals("A Colonne", filterModel.getColumnCount(), 10); assertEquals("A value ", filterModel.getValueAt(0, 1), new Integer(5)); filterModel.addFilter(0, new Integer(0)); assertEquals("B Ligne", filterModel.getRowCount(), 10); assertEquals("B Colonne", filterModel.getColumnCount(), 10); assertEquals("B value", filterModel.getValueAt(0, 0), model.getValueAt(0, 0)); assertEquals("B name", filterModel.getColumnName(0), "COL_0"); } /** * A unit test for JUnit */ public void test_removeFilter() { filterModel.addFilter(0, new Integer(0)); filterModel.addFilter(0, new Integer(1)); filterModel.addFilter(1, new Integer(1)); assertEquals("A Ligne", filterModel.getRowCount(), 1); filterModel.removeFilter(0, new Integer(1)); assertEquals("B Ligne", filterModel.getRowCount(), 1); filterModel.removeFilter(1, new Integer(1)); assertEquals("C Ligne", filterModel.getRowCount(), 5); filterModel.removeFilter(0, new Integer(0)); assertEquals("D Ligne", filterModel.getRowCount(), 10); } public void test_removeFilter_twice() { filterModel.addFilter(0, new Integer(0)); assertEquals(filterModel.containsFilterValue(0, new Integer(0)), true); filterModel.removeFilter(0, new Integer(0)); assertEquals(filterModel.containsFilterValue(0, new Integer(0)), false); filterModel.removeFilter(0, new Integer(0)); assertEquals(filterModel.containsFilterValue(0, new Integer(0)), false); } public void test_removeAllColumnFilter() { filterModel.addFilter(0, new Integer(0)); filterModel.addFilter(1, new Integer(0)); filterModel.addFilter(1, new Integer(1)); assertEquals("A Ligne", filterModel.getRowCount(), 2); filterModel.clearAllColumnFilter(); assertEquals("B Ligne", filterModel.getRowCount(), 10); } public void test_containsFilterValue() { assertEquals(filterModel.containsFilterValue(0, new Integer(0)), false); filterModel.addFilter(0, new Integer(0)); assertEquals(filterModel.containsFilterValue(0, new Integer(0)), true); filterModel.addFilter(0, new Integer(1)); assertEquals(filterModel.containsFilterValue(0, new Integer(1)), true); filterModel.removeFilter(0, new Integer(0)); assertEquals(filterModel.containsFilterValue(0, new Integer(1)), true); assertEquals(filterModel.containsFilterValue(0, new Integer(0)), false); } /** * A unit test for JUnit */ public void testPropertyChangeEvent2() { BasicListener listener = new BasicListener(); filterModel.addPropertyChangeListener(1, listener); assertNull(listener.event); List list = new ArrayList(); list.add(new Integer(5)); filterModel.addFilter(1, new Integer(5)); assertEquals("add", listener.event.getPropertyName(), "1"); Object[] newVal = (Object[])listener.event.getNewValue(); assertEquals("add", java.util.Arrays.asList(newVal), list); assertEquals("add", listener.event.getOldValue(), null); filterModel.removeFilter(1, new Integer(5)); assertEquals("remove", listener.event.getPropertyName(), "1"); assertEquals("remove", listener.event.getNewValue(), null); Object[] oldVal = (Object[])listener.event.getOldValue(); assertEquals("remove", java.util.Arrays.asList(oldVal), list); } /** * A unit test for JUnit */ public void test_getFilterValueList() { filterModel.addFilter(0, new Integer(1)); filterModel.addFilter(0, new Integer(0)); assertEquals(filterModel.getFilterValueList(0).length, 2); java.util.List filters = java.util.Arrays.asList(filterModel.getFilterValueList(0)); assertTrue(filters.contains(new Integer(1))); assertTrue(filters.contains(new Integer(0))); } /** * A unit test for JUnit */ public void test_add_set_clear() { filterModel.addFilter(0, new Integer(1)); filterModel.addFilter(0, new Integer(0)); assertEquals(filterModel.getFilterValueList(0).length, 2); filterModel.setFilter(0, new Integer(5)); assertEquals(filterModel.getFilterValueList(0).length, 1); assertEquals(filterModel.getFilterValue(0), new Integer(5)); filterModel.clearFilter(0); assertEquals(filterModel.getFilterValueList(0), null); } /** * A unit test for JUnit */ public void test_getValueAt_Error() { filterModel.setFilter(0, new Integer(1)); assertEquals(filterModel.getValueAt(8, 0), null); } /** * A unit test for JUnit */ public void test_setFilter_Combined() { filterModel.setFilter(0, new Integer(1)); filterModel.setFilter(1, new Integer(5)); assertEquals("Ligne", filterModel.getRowCount(), 1); assertEquals("Colonne", filterModel.getColumnCount(), 10); assertEquals("value ", filterModel.getValueAt(0, 1), new Integer(5)); model.simulateDataChange(); assertEquals("Ligne", filterModel.getRowCount(), 1); } /** * A unit test for JUnit */ public void test_getFilterValue() { filterModel.setFilter(0, new Integer(1)); assertEquals(filterModel.getFilterValue(0), new Integer(1)); } /** * The JUnit setup method * * @exception java.lang.Exception Description of Exception */ protected void setUp() throws java.lang.Exception { model = new BasicModel(); filterModel = new TableFilter(model); } /** * The teardown method for JUnit * * @exception java.lang.Exception Description of Exception */ protected void tearDown() throws java.lang.Exception {} /** * A unit test suite for JUnit * * @return The test suite */ public static Test suite() { return new TestSuite(TableFilterTest.class); } /** * Listener basic. * * @author $Author: rivierv $ * @version $Revision: 1.4 $ */ static class BasicListener implements PropertyChangeListener { /** */ public PropertyChangeEvent event = null; /** * DOCUMENT ME! * * @param evt */ public void propertyChange(PropertyChangeEvent evt) { event = evt; } } /** * Model de table basique pour les test de TableFilter. * * @author $Author: rivierv $ * @version $Revision: 1.4 $ */ static class BasicModel extends AbstractTableModel { private int value = 0; /** * DOCUMENT ME! * * @return The ColumnCount value */ public int getColumnCount() { return 10; } /** * DOCUMENT ME! * * @return The RowCount value */ public int getRowCount() { return 10; } /** * Gets the ColumnName attribute of the BasicModel object * * @param aColumn Description of Parameter * * @return The ColumnName value */ public String getColumnName(int aColumn) { return "COL_" + aColumn; } /** * DOCUMENT ME! * * @param row Description of Parameter * @param col Description of Parameter * * @return The ValueAt value */ public Object getValueAt(int row, int col) { if (col == 0) { return new Integer(row / 5 + value); } else { return new Integer(row * col + value); } } /** * Simule un changement dans le tableau */ public void simulateDataChange() { fireTableDataChanged(); } /** * Simule un changement dans le tableau avec modification du contenu. * * @param value Description of Parameter */ public void simulateDataChange(int value) { this.value = value; fireTableDataChanged(); } } }