100 lines
3.0 KiB
Java
100 lines
3.0 KiB
Java
package jmri.jmrix.can.adapters.lawicell;
|
|
|
|
import java.io.IOException;
|
|
|
|
import jmri.jmrix.AbstractPortControllerScaffold;
|
|
import jmri.jmrix.can.*;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for LawicellTrafficController.
|
|
* @author Paul Bender Copyright (C) 2016
|
|
* @author Steve Young Copyright (C) 2022
|
|
*/
|
|
@Timeout(10)
|
|
public class LawicellTrafficControllerTest extends jmri.jmrix.can.TrafficControllerTest {
|
|
|
|
@Test
|
|
// @SuppressWarnings("AssertEqualsBetweenInconvertibleTypes") // CanReply and CanMessage can be tested via Equals
|
|
public void sendRtrAsCanReplyCanMessageTest() throws IOException {
|
|
LawicellTrafficController ltc = (LawicellTrafficController)tc;
|
|
|
|
DummyCanListener listener = new DummyCanListener(ltc);
|
|
CanSystemConnectionMemo memo = new CanSystemConnectionMemo();
|
|
|
|
AbstractPortControllerScaffold pcs = new AbstractPortControllerScaffold(memo);
|
|
ltc.connectPort(pcs);
|
|
|
|
Reply g = new Reply("r1230\r");
|
|
CanReply r = g.createReply();
|
|
ltc.sendCanReply(r, null);
|
|
JUnitUtil.waitFor(() -> {
|
|
return !listener.getReplies().isEmpty();
|
|
},"rtr reply did not happen");
|
|
|
|
CanReply rr = listener.getReplies().get(0);
|
|
Assertions.assertEquals(r,rr,"CanReply matches");
|
|
|
|
ltc.sendCanMessage(new CanMessage(r), null);
|
|
JUnitUtil.waitFor(() -> {
|
|
return !listener.getMessages().isEmpty();
|
|
},"rtr message did not happen");
|
|
|
|
CanMessage mm = listener.getMessages().get(0);
|
|
Assertions.assertEquals(r,mm,"CanMessage matches");
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return pcs.getOutputStream().size() >= g.getNumDataElements();
|
|
},"dos size ok, message sent.");
|
|
|
|
listener.dispose();
|
|
ltc.disconnectPort(pcs);
|
|
pcs.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testIncomingRtr() throws IOException {
|
|
|
|
DummyCanListener listener = new DummyCanListener((LawicellTrafficController)tc);
|
|
CanSystemConnectionMemo memo = new CanSystemConnectionMemo();
|
|
|
|
AbstractPortControllerScaffold pcs = new AbstractPortControllerScaffold(memo);
|
|
tc.connectPort(pcs);
|
|
pcs.getRedirectedToInputStream().writeBytes("r1230\r"); // RTR CanFrame
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !listener.getReplies().isEmpty();
|
|
},"rtr reply did not happen");
|
|
|
|
CanReply reply = listener.getReplies().get(0);
|
|
Assertions.assertNotNull(reply, "CanReply generated and not null");
|
|
Assertions.assertEquals(0,reply.getNumDataElements(),"no data elements");
|
|
Assertions.assertTrue(reply.isRtr(),"rtr flag set");
|
|
|
|
listener.dispose();
|
|
tc.disconnectPort(pcs);
|
|
pcs.dispose();
|
|
|
|
}
|
|
|
|
@Override
|
|
@BeforeEach
|
|
public void setUp() {
|
|
jmri.util.JUnitUtil.setUp();
|
|
JUnitUtil.resetInstanceManager();
|
|
tc = new LawicellTrafficController();
|
|
}
|
|
|
|
@Override
|
|
@AfterEach
|
|
public void tearDown(){
|
|
tc.terminateThreads();
|
|
tc = null;
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
}
|