Files
JIMRI/java/test/jmri/jmrit/beantable/LightTableTabActionTest.java
T
2026-06-17 14:00:51 +02:00

154 lines
5.4 KiB
Java

package jmri.jmrit.beantable;
import jmri.InstanceManager;
import jmri.Light;
import jmri.LightManager;
import jmri.jmrix.internal.InternalLightManager;
import jmri.jmrix.internal.InternalSystemConnectionMemo;
import jmri.managers.AbstractProxyManager;
import jmri.managers.ProxyLightManager;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
import org.netbeans.jemmy.operators.*;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class LightTableTabActionTest extends AbstractTableTabActionBase {
@Test
public void testCTor() {
Assert.assertNotNull("exists", a);
}
@Override
public String getTableFrameName() {
return Bundle.getMessage("TitleLightTable");
}
/**
* Check the return value of includeAddButton.
* <p>
* The table generated by this action includes an Add Button.
*/
@Override
@Test
public void testIncludeAddButton() {
Assert.assertTrue("Default include add button", a.includeAddButton());
}
@Test
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
public void testMultiSystemTabs(){
JUnitUtil.resetInstanceManager();
// Not returning null v4.23.4ish
// Assert.assertNull("No Manager at start",InstanceManager.getNullableDefault(LightManager.class));
ProxyLightManager l = new ProxyLightManager(); // has 2 systems: JL, IL
l.addManager(new InternalLightManager(new InternalSystemConnectionMemo("J", "Juliet")));
l.addManager(new InternalLightManager(new InternalSystemConnectionMemo("I", "India")));
InstanceManager.setLightManager(l);
// Test that Proxy Light Manager has Juliet, India, and nothing else.
LightManager plm = InstanceManager.getDefault(LightManager.class);
if (!(plm instanceof AbstractProxyManager)) {
Assert.fail("Instance LightManager Not a proxy Light Manager");
}
try {
@SuppressWarnings("unchecked")
AbstractProxyManager<Light> proxy = (AbstractProxyManager<Light>) plm;
int numLm = proxy.getDisplayOrderManagerList().size();
Assert.assertEquals("2 Light Managers, Juliet, India",2, numLm);
String s = proxy.getDisplayOrderManagerList().get(0).getMemo().getUserName();
Assert.assertEquals("Light Manager 0 , Juliet","Juliet", s);
s = proxy.getDisplayOrderManagerList().get(1).getMemo().getUserName();
Assert.assertEquals("Light Manager 1, India","India", s);
} catch (ClassCastException e){
Assert.fail("catch Instance LightManager Not a proxy Light Manager");
}
InstanceManager.getDefault(LightManager.class).provideLight("IL1");
InstanceManager.getDefault(LightManager.class).provideLight("IL2");
InstanceManager.getDefault(LightManager.class).provideLight("IL3");
InstanceManager.getDefault(LightManager.class).provideLight("IL4");
InstanceManager.getDefault(LightManager.class).provideLight("IL5");
InstanceManager.getDefault(LightManager.class).provideLight("JL8");
InstanceManager.getDefault(LightManager.class).provideLight("JL9");
TabbedLightTableFrame sf = new TabbedLightTableFrame();
sf.initTables();
sf.initComponents();
sf.pack();
jmri.util.ThreadingUtil.runOnGUI( () -> sf.setVisible(true));
JFrameOperator jfo = new JFrameOperator(sf.getTitle());
JTabbedPaneOperator tabOperator = new JTabbedPaneOperator(jfo);
Assert.assertEquals("3 manager tabs",3, tabOperator.getTabCount());
tabOperator.selectPage("All");
new org.netbeans.jemmy.QueueTool().waitEmpty();
JTableOperator controltbl = new JTableOperator(jfo, 0);
Assert.assertEquals("All tab 7 Lights",7, controltbl.getRowCount());
tabOperator.selectPage("Juliet");
new org.netbeans.jemmy.QueueTool().waitEmpty();
controltbl = new JTableOperator(jfo, 0);
Assert.assertEquals("Juliet tab 2 Lights",2, controltbl.getRowCount());
tabOperator.selectPage("India");
new org.netbeans.jemmy.QueueTool().waitEmpty();
controltbl = new JTableOperator(jfo, 0);
Assert.assertEquals("India tab 5 Lights",5, controltbl.getRowCount());
jfo.requestClose();
jfo.waitClosed();
}
private static class TabbedLightTableFrame extends ListedTableFrame<Light> {
public TabbedLightTableFrame(){
super();
tabbedTableItemListArrayArray.clear(); // reset static BeanTable list
}
@Override
public void initTables() {
addTable("jmri.jmrit.beantable.LightTableTabAction", Bundle.getMessage("MenuItemLightTable"), false);
}
}
@BeforeEach
@Override
public void setUp() {
JUnitUtil.setUp();
jmri.util.JUnitUtil.resetProfileManager();
jmri.util.JUnitUtil.initInternalLightManager();
jmri.util.JUnitUtil.initDefaultUserMessagePreferences();
helpTarget = "package.jmri.jmrit.beantable.LightTable";
a = new LightTableTabAction();
}
@AfterEach
@Override
public void tearDown() {
a = null;
JUnitUtil.tearDown();
}
// private static final Logger log = LoggerFactory.getLogger(LightTableTabActionTest.class);
}