Files
JIMRI/java/test/jmri/jmrix/can/cbus/swing/CbusCreateBeanPaneTest.java
2026-06-17 14:00:51 +02:00

152 lines
4.7 KiB
Java

package jmri.jmrix.can.cbus.swing;
import java.awt.datatransfer.Transferable;
import java.io.File;
import java.io.IOException;
import javax.swing.JLabel;
import javax.swing.JTable;
import jmri.NamedBean;
import jmri.jmrix.can.CanSystemConnectionMemo;
import jmri.jmrix.can.TrafficControllerScaffold;
import jmri.jmrix.can.cbus.eventtable.CbusEventTableDataModel;
import jmri.jmrix.can.swing.CanPanel;
import jmri.util.*;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.io.TempDir;
import org.netbeans.jemmy.operators.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* Test simple functioning of CbusCreateBeanPane
*
* @author Paul Bender Copyright (C) 2016
* @author Steve Young Copyright (C) 2020
*/
@jmri.util.junit.annotations.DisabledIfHeadless
public class CbusCreateBeanPaneTest {
@Test
public void testInitComponents() {
// for now, just makes sure there isn't an exception.
assertNotNull(new CbusCreateBeanPane(mainPane));
}
@Test
public void testCreateBean() {
// for now, just makes sure there isn't an exception.
CbusCreateBeanPane t = new CbusCreateBeanPane(mainPane);
JmriJFrame f = new JmriJFrame();
f.add(t);
f.setTitle("Test CBUS Create Bean");
ThreadingUtil.runOnGUI( () -> {
f.pack();
f.setVisible(true);
});
JFrameOperator jfo = new JFrameOperator( "Test CBUS Create Bean" );
dm = new CbusEventTableDataModel(memo,0,0);
dm.provideEvent(123, 456).setName("TestEvent1");
dm.provideEvent(0, 7);
JTable table = new JTable(dm);
table.setName("jmri.jmrix.can.cbus.eventtable.CbusEventTableDataModel");
CbusTableRowEventDnDHandler dh = new CbusTableRowEventDnDHandler(memo,table);
table.setRowSelectionInterval(0, 0);
Transferable trnfr = dh.createTransferable(table);
Thread dialog_thread = new Thread(() -> {
JDialogOperator jdo = new JDialogOperator( Bundle.getMessage("ReminderTitle") );
new JCheckBoxOperator(jdo,Bundle.getMessage("HideFurtherDialog")).setSelected(true);
new JButtonOperator(jdo,"OK").doClick();
});
dialog_thread.setName("Reminder Dialog Close Thread");
dialog_thread.start();
t.transferArray[0].importData(new JLabel("Turnout"), trnfr);
JUnitUtil.waitFor(()->{return !(dialog_thread.isAlive());}, "Reminder Dialog closed");
t.transferArray[0].importData(new JLabel("NotABeanType"), trnfr);
assertNotNull(memo);
NamedBean bean = memo.get(jmri.TurnoutManager.class).getBySystemName("MT+N123E456");
NamedBean notAbean = memo.get(jmri.TurnoutManager.class).getBySystemName("NotABean");
assertNotNull(bean);
assertNull(notAbean);
table.setRowSelectionInterval(1, 1);
trnfr = dh.createTransferable(table);
t.transferArray[2].importData(new JLabel("Light"), trnfr);
t.transferArray[2].importData(new JLabel("Light"), trnfr);
bean = memo.get(jmri.LightManager.class).getBySystemName("ML+7");
notAbean = memo.get(jmri.LightManager.class).getBySystemName("NotABean");
assertNotNull(bean);
assertNull(notAbean);
new JTextFieldOperator(jfo,0).setText("NewName");
new JButtonOperator(jfo,0).doClick();
assertEquals("NewName",bean.getUserName());
dh.dispose();
JUnitUtil.dispose(f);
jfo.waitClosed();
}
private static class TestPane extends CanPanel{
}
private CanSystemConnectionMemo memo = null;
private TrafficControllerScaffold tcis = null;
private TestPane mainPane = null;
private CbusEventTableDataModel dm;
@BeforeEach
public void setUp ( @TempDir File tempDir ) throws IOException {
JUnitUtil.setUp();
JUnitUtil.resetInstanceManager();
JUnitUtil.resetProfileManager( new jmri.profile.NullProfile( tempDir));
memo = new CanSystemConnectionMemo();
tcis = new TrafficControllerScaffold();
memo.setTrafficController(tcis);
memo.setProtocol(jmri.jmrix.can.CanConfigurationManager.MERGCBUS);
memo.configureManagers();
mainPane = new TestPane();
mainPane.initComponents(memo);
}
@AfterEach
public void tearDown() {
assertNotNull(memo);
memo.dispose();
memo = null;
assertNotNull(tcis);
tcis.terminateThreads();
tcis = null;
assertNotNull(mainPane);
mainPane.dispose();
mainPane = null;
if (dm!=null){
dm.skipSaveOnDispose();
dm.dispose();
}
JUnitUtil.deregisterBlockManagerShutdownTask();
JUnitUtil.tearDown();
}
}