154 lines
3.9 KiB
Java
154 lines
3.9 KiB
Java
package jmri.jmrix.lenz;
|
|
|
|
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.assertSame;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
*
|
|
* @author Bob Jacobsen Copyright 2002
|
|
*/
|
|
public class XNetTrafficRouterTest {
|
|
|
|
@Test
|
|
public void testConnectAndSend() {
|
|
// scaffold for upstream
|
|
XNetInterfaceScaffold upstream = new XNetInterfaceScaffold(new LenzCommandStation());
|
|
|
|
// create object
|
|
XNetTrafficRouter router = new XNetTrafficRouter(new LenzCommandStation()) {
|
|
@Override
|
|
protected void connectionWarn() {
|
|
}
|
|
|
|
@Override
|
|
public void receiveLoop() {
|
|
}
|
|
|
|
@Override
|
|
protected void portWarn(Exception e) {
|
|
}
|
|
};
|
|
assertNotNull( router, "exists");
|
|
|
|
// connect
|
|
router.connect(upstream);
|
|
assertTrue( router.status(), "connected");
|
|
|
|
// send a message
|
|
XNetMessage m = new XNetMessage(3);
|
|
m.setElement(0, 0x01);
|
|
m.setElement(1, 0x04);
|
|
m.setElement(2, 0x05);
|
|
router.sendXNetMessage(m, null);
|
|
|
|
// check receipt
|
|
assertEquals( 1, upstream.outbound.size(), "one message sent");
|
|
assertSame(upstream.outbound.elementAt(0), m);
|
|
}
|
|
|
|
private static int count = 0;
|
|
|
|
static void resetCount() {
|
|
count = 0;
|
|
}
|
|
|
|
static void incrementCount() {
|
|
count++;
|
|
}
|
|
|
|
@Test
|
|
public void testReceiveAndForward() {
|
|
// create object
|
|
XNetTrafficRouter router = new XNetTrafficRouter(new LenzCommandStation()) {
|
|
@Override
|
|
protected void connectionWarn() {
|
|
}
|
|
|
|
@Override
|
|
public void receiveLoop() {
|
|
}
|
|
|
|
@Override
|
|
protected void portWarn(Exception e) {
|
|
}
|
|
};
|
|
assertNotNull( router, "exists");
|
|
|
|
resetCount();
|
|
// register a listener
|
|
XNetListener l = new XNetListener() {
|
|
@Override
|
|
public void message(XNetReply m) {
|
|
incrementCount();
|
|
}
|
|
|
|
@Override
|
|
public void message(XNetMessage m) {
|
|
}
|
|
|
|
@Override
|
|
public void notifyTimeout(XNetMessage m) {
|
|
}
|
|
};
|
|
router.addXNetListener(~0, l);
|
|
// send a message
|
|
XNetReply m = new XNetReply();
|
|
m.setElement(0, 0x01);
|
|
m.setElement(1, 0x04);
|
|
m.setElement(2, 0x05);
|
|
router.forwardReply(l, m);
|
|
|
|
// check receipt
|
|
assertEquals( 1, count, "one message sent");
|
|
}
|
|
|
|
@Test
|
|
public void testConnectAndDisconnect() {
|
|
// scaffold for upstream
|
|
XNetInterfaceScaffold upstream = new XNetInterfaceScaffold(new LenzCommandStation()) {
|
|
@Override
|
|
protected void connectionWarn() {
|
|
}
|
|
|
|
@Override
|
|
public void receiveLoop() {
|
|
}
|
|
|
|
@Override
|
|
protected void portWarn(Exception e) {
|
|
}
|
|
};
|
|
|
|
// create object
|
|
XNetTrafficRouter router = new XNetTrafficRouter(new LenzCommandStation());
|
|
assertNotNull( router, "exists");
|
|
|
|
// connect
|
|
router.connect(upstream);
|
|
assertTrue( router.status(), "connected");
|
|
|
|
// disconnect
|
|
router.disconnectPort(upstream);
|
|
assertFalse(router.status());
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.clearShutDownManager(); // put in place because AbstractMRTrafficController implementing subclass was not terminated properly
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|