/*
* Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org
* Use is subject to license terms. See license.txt.
*/
package org.beanfabrics.swing.table;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.LinkedList;
import java.util.List;
import junit.framework.JUnit4TestAdapter;
import org.beanfabrics.Path;
import org.beanfabrics.model.AbstractPM;
import org.beanfabrics.model.MapPM;
import org.beanfabrics.model.PMManager;
import org.beanfabrics.model.PresentationModel;
import org.beanfabrics.model.TextPM;
import org.junit.Before;
import org.junit.Test;
/**
* @author Michael Karneim
*/
public class ListModelTableModelTest {
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(ListModelTableModelTest.class);
}
private MapPM<String, MyModel> mapProperty;
private List<BnColumn> def;
public static class MyModel extends AbstractPM {
protected final TextPM text = new TextPM();
public MyModel() {
PMManager.setup(this);
}
}
@Before
public void setUp()
throws Exception {
this.mapProperty = this.createMapProperty();
this.def = this.createTableColumnDefinition();
}
private List<BnColumn> createTableColumnDefinition() {
final LinkedList<BnColumn> list = new LinkedList<BnColumn>();
list.add(new BnColumn(new Path("this.text"), "Text"));
return list;
}
private MapPM<String, MyModel> createMapProperty() {
final MapPM<String, MyModel> map = new MapPM<String, MyModel>();
final MyModel pModel1 = new MyModel();
pModel1.text.setText("Hello");
final MyModel pModel2 = new MyModel();
pModel2.text.setText("world");
map.put("pModel1", pModel1);
map.put("pModel2", pModel2);
return map;
}
@Test
public void testListPropertyTableModel() {
final BnTableModel model = new BnTableModel(this.mapProperty, this.def, true);
assertNotNull(model);
}
@Test
public void testGetColumnCount() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
assertEquals("pModel.getColumnCount()", 1, pModel.getColumnCount());
}
@Test
public void testGetRowCount() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
assertEquals("pModel.getRowCount()", 2, pModel.getRowCount());
}
@Test
public void testGetValueAt() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
final Object o = pModel.getValueAt(0, 0);
assertNotNull(o);
assertTrue(o instanceof TextPM);
final TextPM pM = (TextPM)o;
assertEquals("pModel.getText()", "Hello", pM.getText());
}
@Test
public void testAddRow() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
final MyModel pModel1 = new MyModel();
pModel1.text.setText("!");
this.mapProperty.put("pModel", pModel1);
assertEquals("pModel.getRowCount()", 3, pModel.getRowCount());
}
@Test
public void testDeleteRow() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
this.mapProperty.removeKey("pModel1");
assertEquals("pModel.getRowCount()", 1, pModel.getRowCount());
}
@Test
public void testReplaceRow() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
final MyModel pModel1 = new MyModel();
pModel1.text.setText("!");
this.mapProperty.put("pModel1", pModel1);
assertEquals("pModel.getRowCount()", 2, pModel.getRowCount());
}
@Test
public void testUpdateRow() {
final BnTableModel model = new BnTableModel(this.mapProperty, this.def, true);
this.mapProperty.getAt(0).text.setText("Salute");
final TextPM pModel = (TextPM)model.getValueAt(0, 0);
assertEquals("pModel.getText()", "Salute", pModel.getText());
}
@Test
public void testGetColumnName() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
assertEquals("pModel.getColumnName( 0)", "Text", pModel.getColumnName(0));
}
@Test
public void testFindColumn() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
assertEquals("pModel.findColumn(\"text\")", 0, pModel.findColumn("Text"));
}
@Test
public void testGetColumnClass() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
assertEquals("pModel.getColumnClass(0)", PresentationModel.class, pModel.getColumnClass(0));
}
@Test
public void testIsCellEditable() {
final BnTableModel pModel = new BnTableModel(this.mapProperty, this.def, true);
assertTrue("pModel.isCellEditable( 0,0)", pModel.isCellEditable(0, 0));
final MyModel pModel1 = this.mapProperty.getAt(0);
pModel1.text.setEditable(false);
assertFalse("pModel.isCellEditable( 0,0)", pModel.isCellEditable(0, 0));
}
}