246 lines
11 KiB
Java
246 lines
11 KiB
Java
package jmri.jmrit.roster.swing;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import javax.swing.JTable;
|
|
|
|
import jmri.jmrit.roster.Roster;
|
|
import jmri.jmrit.roster.RosterEntry;
|
|
import jmri.jmrit.roster.RosterEntryImplementations;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.swing.XTableColumnModel;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for the roster.swing.RosterTableModel class.
|
|
*
|
|
* @author Bob Jacobsen Copyright (C) 2009
|
|
*/
|
|
public class RosterTableModelTest {
|
|
|
|
@Test
|
|
public void testTableLength() {
|
|
RosterTableModel t = new RosterTableModel();
|
|
|
|
assertEquals(3, t.getRowCount());
|
|
t.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testColumnCount() {
|
|
RosterTableModel t = new RosterTableModel(true); // set Editable
|
|
|
|
// hard-coded value is number of columns expected
|
|
// 14 normal columns + 4 attribute columns
|
|
assertEquals(18, t.getColumnCount());
|
|
|
|
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.IDCOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.ADDRESSCOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.ICONCOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.DECODERMFGCOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.DECODERFAMILYCOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.DECODERMODELCOL));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.ROADNAMECOL));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.ROADNUMBERCOL));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.MFGCOL));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.MODELCOL));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.OWNERCOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.DATEUPDATECOL));
|
|
assertFalse(t.isCellEditable(0, RosterTableModel.PROTOCOL));
|
|
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.NUMCOL));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.NUMCOL+1));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.NUMCOL+2));
|
|
assertTrue(t.isCellEditable(0, RosterTableModel.NUMCOL+3));
|
|
|
|
t.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testColumnName() {
|
|
RosterTableModel t = new RosterTableModel(null); // no rosterGroup
|
|
|
|
assertEquals(Bundle.getMessage("FieldID"), t.getColumnName( RosterTableModel.IDCOL));
|
|
assertEquals(Bundle.getMessage("FieldDCCAddress"), t.getColumnName(RosterTableModel.ADDRESSCOL));
|
|
assertEquals(Bundle.getMessage("FieldIcon"), t.getColumnName(RosterTableModel.ICONCOL));
|
|
assertEquals(Bundle.getMessage("FieldDecoderModel"), t.getColumnName(RosterTableModel.DECODERMODELCOL));
|
|
assertEquals(Bundle.getMessage("FieldRoadName"), t.getColumnName(RosterTableModel.ROADNAMECOL));
|
|
assertEquals(Bundle.getMessage("FieldRoadNumber"), t.getColumnName(RosterTableModel.ROADNUMBERCOL));
|
|
assertEquals(Bundle.getMessage("FieldManufacturer"), t.getColumnName(RosterTableModel.MFGCOL));
|
|
assertEquals(Bundle.getMessage("FieldModel"), t.getColumnName(RosterTableModel.MODELCOL));
|
|
assertEquals(Bundle.getMessage("FieldOwner"), t.getColumnName(RosterTableModel.OWNERCOL));
|
|
assertEquals(Bundle.getMessage("FieldDateUpdated"), t.getColumnName(RosterTableModel.DATEUPDATECOL));
|
|
assertEquals(Bundle.getMessage("FieldProtocol"), t.getColumnName(RosterTableModel.PROTOCOL));
|
|
|
|
// the roster entries have 4 attributes
|
|
assertEquals("key a", t.getColumnName(RosterTableModel.NUMCOL));
|
|
assertEquals("key b", t.getColumnName(RosterTableModel.NUMCOL+1));
|
|
assertEquals("key c", t.getColumnName(RosterTableModel.NUMCOL+2));
|
|
assertEquals("key d", t.getColumnName(RosterTableModel.NUMCOL+3));
|
|
|
|
assertEquals("<UNKNOWN>", t.getColumnName(RosterTableModel.NUMCOL+4));
|
|
|
|
t.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testGetValueAt() {
|
|
RosterTableModel t = new RosterTableModel();
|
|
var table = new JTable(t);
|
|
table.setColumnModel(new XTableColumnModel());
|
|
t.setAssociatedTable(table);
|
|
|
|
assertEquals("id 1", t.getValueAt(0, RosterTableModel.IDCOL));
|
|
assertEquals(12, (int)t.getValueAt(0, RosterTableModel.ADDRESSCOL));
|
|
assertEquals("33", t.getValueAt(0, RosterTableModel.DECODERMODELCOL));
|
|
|
|
assertEquals("id 2", t.getValueAt(1, RosterTableModel.IDCOL));
|
|
assertEquals(13,(int) t.getValueAt(1, RosterTableModel.ADDRESSCOL));
|
|
assertEquals("34", t.getValueAt(1, RosterTableModel.DECODERMODELCOL));
|
|
|
|
assertEquals("id 3", t.getValueAt(2, RosterTableModel.IDCOL));
|
|
assertEquals(14, (int)t.getValueAt(2, RosterTableModel.ADDRESSCOL));
|
|
assertEquals("35", t.getValueAt(2, RosterTableModel.DECODERMODELCOL));
|
|
|
|
assertEquals("DCC Long", t.getValueAt(2, RosterTableModel.PROTOCOL));
|
|
|
|
|
|
assertEquals("value 11", t.getValueAt(1, RosterTableModel.NUMCOL));
|
|
assertEquals("value 12", t.getValueAt(1, RosterTableModel.NUMCOL+1));
|
|
assertEquals("value 13", t.getValueAt(1, RosterTableModel.NUMCOL+2));
|
|
assertEquals("value 14", t.getValueAt(1, RosterTableModel.NUMCOL+3));
|
|
|
|
t.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testSetValueAt() {
|
|
RosterTableModel t = new RosterTableModel(true); //editable
|
|
var table = new JTable(t);
|
|
table.setColumnModel(new XTableColumnModel());
|
|
t.setAssociatedTable(table);
|
|
|
|
assertEquals("id 1", t.getValueAt(0, RosterTableModel.IDCOL));
|
|
t.setValueAt("A New Id 1", 0, RosterTableModel.IDCOL);
|
|
t.setValueAt("A New Id 1", 0, RosterTableModel.IDCOL);
|
|
assertEquals("A New Id 1", t.getValueAt(0, RosterTableModel.IDCOL));
|
|
|
|
assertEquals("SP", t.getValueAt(0, RosterTableModel.ROADNAMECOL));
|
|
t.setValueAt("A New RoadName", 0, RosterTableModel.ROADNAMECOL);
|
|
assertEquals("A New RoadName", t.getValueAt(0, RosterTableModel.ROADNAMECOL));
|
|
|
|
assertEquals("431", t.getValueAt(0, RosterTableModel.ROADNUMBERCOL));
|
|
t.setValueAt("99", 0, RosterTableModel.ROADNUMBERCOL);
|
|
assertEquals("99", t.getValueAt(0, RosterTableModel.ROADNUMBERCOL));
|
|
|
|
assertEquals("Athearn", t.getValueAt(0, RosterTableModel.MFGCOL));
|
|
t.setValueAt("My MFG", 0, RosterTableModel.MFGCOL);
|
|
assertEquals("My MFG", t.getValueAt(0, RosterTableModel.MFGCOL));
|
|
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.MODELCOL));
|
|
t.setValueAt("Model Ref", 0, RosterTableModel.MODELCOL);
|
|
assertEquals("Model Ref", t.getValueAt(0, RosterTableModel.MODELCOL));
|
|
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.OWNERCOL));
|
|
t.setValueAt("Its my train!", 0, RosterTableModel.OWNERCOL);
|
|
assertEquals("Its my train!", t.getValueAt(0, RosterTableModel.OWNERCOL));
|
|
|
|
|
|
assertEquals("value 1", t.getValueAt(0, RosterTableModel.NUMCOL));
|
|
t.setValueAt("new value 1", 0, RosterTableModel.NUMCOL);
|
|
assertEquals("new value 1", t.getValueAt(0, RosterTableModel.NUMCOL));
|
|
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.NUMCOL+1));
|
|
t.setValueAt("new value B1", 0, RosterTableModel.NUMCOL+1);
|
|
assertEquals("new value B1", t.getValueAt(0, RosterTableModel.NUMCOL+1));
|
|
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.NUMCOL+2));
|
|
t.setValueAt("new value C2", 0, RosterTableModel.NUMCOL+2);
|
|
assertEquals("new value C2", t.getValueAt(0, RosterTableModel.NUMCOL+2));
|
|
|
|
t.setValueAt("", 0, RosterTableModel.NUMCOL+2);
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.NUMCOL+2));
|
|
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.NUMCOL+3));
|
|
t.setValueAt("new value D3", 0, RosterTableModel.NUMCOL+3);
|
|
assertEquals("new value D3", t.getValueAt(0, RosterTableModel.NUMCOL+3));
|
|
|
|
t.setValueAt(null, 0, RosterTableModel.NUMCOL+3);
|
|
assertEquals("", t.getValueAt(0, RosterTableModel.NUMCOL+3));
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testLastOperatedAttributes() {
|
|
Roster.getDefault().getEntry(0).deleteAttribute("key a");
|
|
Roster.getDefault().getEntry(0).putAttribute(RosterEntry.ATTRIBUTE_LAST_OPERATED, "2022-10-31T06:22:00.000+00:00");
|
|
Roster.getDefault().getEntry(0).putAttribute(RosterEntry.ATTRIBUTE_OPERATING_DURATION, "54321");
|
|
|
|
Roster.getDefault().getEntry(2).putAttribute(RosterEntry.ATTRIBUTE_LAST_OPERATED, "Not a Date / Time");
|
|
|
|
Roster.getDefault().getEntry(1).deleteAttribute("key a");
|
|
Roster.getDefault().getEntry(1).deleteAttribute("key b");
|
|
Roster.getDefault().getEntry(1).deleteAttribute("key c");
|
|
Roster.getDefault().getEntry(1).deleteAttribute("key d");
|
|
|
|
RosterTableModel t = new RosterTableModel(true); // set editable
|
|
var table = new JTable(t);
|
|
table.setColumnModel(new XTableColumnModel());
|
|
t.setAssociatedTable(table);
|
|
|
|
// hard-coded value is number of columns expected
|
|
// 14 normal columns + 2 attribute columns
|
|
assertEquals(16, t.getColumnCount());
|
|
assertTrue(java.util.Date.class == t.getColumnClass(RosterTableModel.NUMCOL));
|
|
|
|
assertNotNull(t.getValueAt(0, RosterTableModel.NUMCOL));
|
|
assertNull(t.getValueAt(1, RosterTableModel.NUMCOL));
|
|
assertNull(t.getValueAt(2, RosterTableModel.NUMCOL));
|
|
|
|
assertEquals(Bundle.getMessage(RosterEntry.ATTRIBUTE_LAST_OPERATED),t.getColumnName(RosterTableModel.NUMCOL));
|
|
assertEquals(Bundle.getMessage(RosterEntry.ATTRIBUTE_OPERATING_DURATION),t.getColumnName(RosterTableModel.NUMCOL+1));
|
|
|
|
|
|
t.dispose();
|
|
|
|
|
|
}
|
|
|
|
// create a standard test roster
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
|
|
JUnitUtil.resetProfileManager();
|
|
JUnitUtil.initRosterConfigManager();
|
|
|
|
// first entry
|
|
RosterEntry r = RosterEntryImplementations.id1();
|
|
Roster.getDefault().addEntry(r);
|
|
r.putAttribute("key a", "value 1");
|
|
|
|
r = RosterEntryImplementations.id2();
|
|
Roster.getDefault().addEntry(r);
|
|
r.putAttribute("key a", "value 11");
|
|
r.putAttribute("key b", "value 12");
|
|
r.putAttribute("key c", "value 13");
|
|
r.putAttribute("key d", "value 14");
|
|
|
|
r = RosterEntryImplementations.id3();
|
|
Roster.getDefault().addEntry(r);
|
|
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|