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

107 lines
3.7 KiB
Java

package jmri.jmrix.can.cbus.swing;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import javax.swing.JTable;
import javax.swing.TransferHandler;
import jmri.jmrix.can.CanSystemConnectionMemo;
import jmri.jmrix.can.cbus.eventtable.CbusEventTableDataModel;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* Test simple functioning of CbusSendEventPane
*
* @author Paul Bender Copyright (C) 2016
* @author Steve Young Copyright (C) 2020
*/
@jmri.util.junit.annotations.DisabledIfHeadless
public class CbusTableRowEventDnDHandlerTest {
@Test
public void testInitComponents() {
// for now, just makes sure there isn't an exception.
t = new CbusTableRowEventDnDHandler(null,null);
assertNotNull(t);
t.dispose();
}
@Test
public void testTransferable() throws java.awt.datatransfer.UnsupportedFlavorException, java.io.IOException {
dm = new CbusEventTableDataModel(memo,0,0);
dm.provideEvent(123, 456);
dm.provideEvent(222, 333);
JTable table = new JTable(dm);
table.setName("jmri.jmrix.can.cbus.eventtable.CbusEventTableDataModel");
t = new CbusTableRowEventDnDHandler(memo,table);
assertEquals(TransferHandler.COPY, t.getSourceActions(null));
assertNull(t.createTransferable(null));
assertNull(t.createTransferable(table));
t.mouseMoved(0,0);
new org.netbeans.jemmy.QueueTool().waitEmpty();
table.setRowSelectionInterval(0, 0);
Transferable trnfr = t.createTransferable(table);
JUnitUtil.waitFor(()->{ return(trnfr!=null); }, "Transferable Row 0 Not found");
assertEquals("+N123E456", trnfr.getTransferData(DataFlavor.stringFlavor));
table.setRowSelectionInterval(1, 1);
Transferable trnfrb = t.createTransferable(table);
JUnitUtil.waitFor(()->{ return(trnfrb!=null); }, "Transferable Row 1 Not found");
assertEquals("+N222E333", trnfrb.getTransferData(DataFlavor.stringFlavor));
t.mouseMoved(0,0);
new org.netbeans.jemmy.QueueTool().waitEmpty();
table.setName("jmri.jmrix.can.cbus.node.CbusNodeEventTableDataModel");
table.setRowSelectionInterval(0, 0);
Transferable trnfrc = t.createTransferable(table);
JUnitUtil.waitFor(()->{ return(trnfrc!=null); }, "Transferable NodeEv Row 0 Not found");
assertEquals("+N123E456", trnfrc.getTransferData(DataFlavor.stringFlavor));
table.setRowSelectionInterval(1, 1);
new org.netbeans.jemmy.QueueTool().waitEmpty();
Transferable trnfrd = t.createTransferable(table);
JUnitUtil.waitFor(()->{ return(trnfrd!=null); }, "Transferable NodeEv Row 1 Not found");
assertEquals("+N222E333", trnfrd.getTransferData(DataFlavor.stringFlavor));
table.setName("Incorrect Table");
assertNull(t.createTransferable(table));
dm.skipSaveOnDispose();
dm.dispose();
t.dispose();
}
private CanSystemConnectionMemo memo;
private CbusTableRowEventDnDHandler t;
private CbusEventTableDataModel dm;
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
memo = new CanSystemConnectionMemo();
memo.setProtocol(jmri.jmrix.can.CanConfigurationManager.SPROGCBUS);
memo.configureManagers();
}
@AfterEach
public void tearDown() {
dm = null;
Assertions.assertNotNull(memo);
memo.dispose();
memo = null;
t = null;
JUnitUtil.deregisterBlockManagerShutdownTask();
JUnitUtil.tearDown();
}
}