240 lines
9.7 KiB
Java
240 lines
9.7 KiB
Java
package jmri.jmrix.can.cbus.eventtable;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import java.io.File;
|
|
import jmri.jmrix.can.CanSystemConnectionMemo;
|
|
import jmri.jmrix.can.TrafficControllerScaffold;
|
|
import jmri.jmrix.can.cbus.*;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
|
|
import org.junit.jupiter.api.io.TempDir;
|
|
|
|
import org.netbeans.jemmy.operators.JButtonOperator;
|
|
import org.netbeans.jemmy.operators.JCheckBoxOperator;
|
|
import org.netbeans.jemmy.operators.JDialogOperator;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
* @author Steve Young Copyright (C) 2019
|
|
*/
|
|
public class CbusEventTableActionTest {
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
CbusEventTableAction t = new CbusEventTableAction(model);
|
|
assertNotNull(t);
|
|
}
|
|
|
|
@Test
|
|
@DisabledIfSystemProperty(named ="java.awt.headless", matches ="true")
|
|
public void testDeleteConfirm() {
|
|
|
|
assertEquals(0, model.getRowCount());
|
|
|
|
model.provideEvent(111, 222);
|
|
model.provideEvent(333, 444);
|
|
model.provideEvent(555, 666);
|
|
|
|
assertEquals(3, model.getRowCount());
|
|
|
|
|
|
Thread cancel_thread = new Thread(() -> {
|
|
JDialogOperator jfo = new JDialogOperator( Bundle.getMessage("DelEvPopTitle") );
|
|
new JButtonOperator(jfo,"Cancel").doClick();
|
|
});
|
|
cancel_thread.setName("CBUS Cancel Delete Event Dialog Table Close Thread");
|
|
cancel_thread.start();
|
|
|
|
model.ta.buttonDeleteClicked(1);
|
|
|
|
JUnitUtil.waitFor(()->{return !(cancel_thread.isAlive());}, "CBUS Cancel Delete Event Dialog closed");
|
|
assertEquals(3, model.getRowCount());
|
|
|
|
|
|
Thread dialog_thread = new Thread(() -> {
|
|
JDialogOperator jfo = new JDialogOperator( Bundle.getMessage("DelEvPopTitle") );
|
|
new JButtonOperator(jfo,"OK").doClick();
|
|
});
|
|
dialog_thread.setName("CBUS Delete Event Dialog Table Close Thread");
|
|
dialog_thread.start();
|
|
|
|
Thread dialog_thread2 = new Thread(() -> {
|
|
JDialogOperator jfo = new JDialogOperator( Bundle.getMessage("DelEvPopTitle") );
|
|
new JCheckBoxOperator(jfo,Bundle.getMessage("PopupSessionConfirmDel")).doClick();
|
|
new JButtonOperator(jfo,"OK").doClick();
|
|
});
|
|
dialog_thread2.setName("CBUS Delete Event Dialog Table Close Thread");
|
|
|
|
|
|
model.ta.buttonDeleteClicked(1);
|
|
|
|
JUnitUtil.waitFor(()->{return !(dialog_thread.isAlive());}, "CBUS Delete Event Dialog closed");
|
|
|
|
assertEquals(2, model.getRowCount());
|
|
// String events = model._mainArray.toString();
|
|
assertEquals("[NN:111 EN:222 , NN:555 EN:666 ]",model._mainArray.toString());
|
|
|
|
dialog_thread2.start();
|
|
|
|
model.ta.buttonDeleteClicked(0);
|
|
|
|
JUnitUtil.waitFor(()->{return !(dialog_thread2.isAlive());}, "CBUS Delete Event 2nd Dialog closed");
|
|
|
|
assertEquals(1, model.getRowCount());
|
|
assertEquals("[NN:555 EN:666 ]",model._mainArray.toString());
|
|
|
|
model.ta.buttonDeleteClicked(0);
|
|
assertEquals(0, model.getRowCount());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testAddBeanToEvent(){
|
|
|
|
assertEquals(0, model.getRowCount());
|
|
|
|
CbusTableEvent evA = model.provideEvent(111, 222);
|
|
assertEquals(1, model.getRowCount());
|
|
assertEquals(0, evA.getBeans(CbusEventDataElements.EvState.ON).getActionA().size());
|
|
assertEquals(0, evA.getBeans(CbusEventDataElements.EvState.ON).getActionB().size());
|
|
assertEquals(0, evA.getBeans(CbusEventDataElements.EvState.OFF).getActionA().size());
|
|
assertEquals(0, evA.getBeans(CbusEventDataElements.EvState.OFF).getActionB().size());
|
|
|
|
sm.provideSensor("+N111E222").setUserName("SensorA");
|
|
assertEquals(1, model.getRowCount());
|
|
assertEquals(1, evA.getBeans(CbusEventDataElements.EvState.ON).getActionA().size());
|
|
assertEquals(0, evA.getBeans(CbusEventDataElements.EvState.ON).getActionB().size());
|
|
assertEquals(0, evA.getBeans(CbusEventDataElements.EvState.OFF).getActionA().size());
|
|
assertEquals(1, evA.getBeans(CbusEventDataElements.EvState.OFF).getActionB().size());
|
|
assertEquals("Sensor Active: SensorA",evA.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("Sensor Inactive: SensorA",evA.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
sm.provideSensor("+N111E222").setInverted(true);
|
|
assertEquals("Sensor Inactive: SensorA",evA.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("Sensor Active: SensorA",evA.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
sm.provideSensor("+N111E222").setInverted(false);
|
|
assertEquals("Sensor Active: SensorA",evA.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("Sensor Inactive: SensorA",evA.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
lm.provideLight("-N333E444").setUserName("LightA");
|
|
assertEquals(2, model.getRowCount());
|
|
CbusTableEvent lE = model.provideEvent(333, 444);
|
|
assertEquals("Light Off: LightA",lE.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("Light On: LightA",lE.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
tm.provideTurnout("+123;+456").setUserName("TurnoutA");
|
|
assertEquals(4, model.getRowCount());
|
|
CbusTableEvent toEv1 = model.provideEvent(0, 123);
|
|
CbusTableEvent toEv2 = model.provideEvent(0, 456);
|
|
assertEquals(4, model.getRowCount());
|
|
|
|
assertEquals("Turnout Thrown: TurnoutA",toEv1.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("",toEv1.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
assertEquals("Turnout Closed: TurnoutA",toEv2.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("",toEv2.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
tm.provideTurnout("+123;+456").setInverted(true);
|
|
assertEquals("Turnout Closed: TurnoutA",toEv1.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("",toEv1.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
assertEquals("Turnout Thrown: TurnoutA",toEv2.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("",toEv2.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
lm.provideLight("+789;X0A").setUserName("LightB");
|
|
assertEquals(5, model.getRowCount());
|
|
CbusTableEvent lsE = model.provideEvent(0, 789);
|
|
assertEquals("Light On: LightB",lsE.getBeans(CbusEventDataElements.EvState.ON).toString());
|
|
assertEquals("",lsE.getBeans(CbusEventDataElements.EvState.OFF).toString());
|
|
|
|
sm.provideSensor("+N111E222").dispose();
|
|
lm.provideLight("-N333E444").dispose();
|
|
tm.provideTurnout("+123;+456").dispose();
|
|
lm.provideLight("+789;X0A").dispose();
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testResetSession(){
|
|
|
|
|
|
model.provideEvent(0, 1).bumpDirection(CbusConstants.EVENT_DIR_OUT);
|
|
model.provideEvent(0, 2).bumpDirection(CbusConstants.EVENT_DIR_IN);
|
|
model.provideEvent(0, 2).bumpDirection(CbusConstants.EVENT_DIR_IN);
|
|
|
|
model.provideEvent(0, 1).setState(CbusEventDataElements.EvState.ON);
|
|
model.provideEvent(0, 1).setState(CbusEventDataElements.EvState.OFF);
|
|
model.provideEvent(0, 2).setState(CbusEventDataElements.EvState.ON);
|
|
|
|
assertEquals(1, model.provideEvent(0, 1).getSessionInOut(false));
|
|
assertEquals(2, model.provideEvent(0, 2).getSessionInOut(true));
|
|
assertEquals(1, model.provideEvent(0, 1).getSessionOnOff(true));
|
|
assertEquals(1, model.provideEvent(0, 1).getSessionOnOff(false));
|
|
assertEquals(1, model.provideEvent(0, 2).getSessionOnOff(true));
|
|
|
|
model.ta.resetAllSessionTotals();
|
|
|
|
assertEquals(0, model.provideEvent(0, 1).getSessionInOut(false));
|
|
assertEquals(0, model.provideEvent(0, 2).getSessionInOut(true));
|
|
assertEquals(0, model.provideEvent(0, 1).getSessionOnOff(true));
|
|
assertEquals(0, model.provideEvent(0, 1).getSessionOnOff(false));
|
|
assertEquals(0, model.provideEvent(0, 2).getSessionOnOff(true));
|
|
|
|
}
|
|
|
|
private CbusEventTableDataModel model;
|
|
private TrafficControllerScaffold tcis;
|
|
private CanSystemConnectionMemo memo;
|
|
|
|
private CbusTurnoutManager tm;
|
|
private CbusLightManager lm;
|
|
private CbusSensorManager sm;
|
|
|
|
// InstanceManager.setDefault(jmri.SensorManager.class,new CbusSensorManager(memo));
|
|
|
|
@BeforeEach
|
|
public void setUp( @TempDir File tempDir) throws java.io.IOException {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetProfileManager( new jmri.profile.NullProfile( tempDir));
|
|
JUnitUtil.resetInstanceManager();
|
|
tcis = new TrafficControllerScaffold();
|
|
memo = new CanSystemConnectionMemo();
|
|
memo.setTrafficController(tcis);
|
|
|
|
memo.setProtocol(jmri.jmrix.can.CanConfigurationManager.MERGCBUS);
|
|
memo.configureManagers();
|
|
|
|
tm = (CbusTurnoutManager) memo.get(jmri.TurnoutManager.class);
|
|
sm = (CbusSensorManager) memo.get(jmri.SensorManager.class);
|
|
lm = (CbusLightManager) memo.get(jmri.LightManager.class);
|
|
|
|
model = memo.get(CbusConfigurationManager.class)
|
|
.provide(CbusEventTableDataModel.class);
|
|
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
|
|
model.skipSaveOnDispose();
|
|
model.dispose();
|
|
memo.dispose();
|
|
memo = null;
|
|
tcis.terminateThreads();
|
|
tcis = null;
|
|
lm.dispose();
|
|
tm.dispose();
|
|
sm.dispose();
|
|
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(CbusEventTableActionTest.class);
|
|
|
|
}
|