Files
JIMRI/java/test/jmri/jmrix/can/adapters/lawicell/LawicellTrafficControllerTest.java
T
2026-06-17 14:00:51 +02:00

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();
}
}