Files
2026-06-17 14:00:51 +02:00

428 lines
13 KiB
Java

package jmri.jmris.srcp.parser;
import java.io.StringReader;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.catchThrowable;
/**
* Tests for the {@link jmri.jmris.srcp.parser.SRCPParser} class.
*
* @author Paul Bender Copyright (C) 2012,2017
*/
public class SRCPParserTest {
@Test
public void testParseFailure() {
String code = "POWER SET\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNotNull().isInstanceOf(ParseException.class);
}
// test valid power commands.
@Test
public void testSetPowerOn() throws ParseException {
String code = "SET 1 POWER ON\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
assertThat(p.command()).withFailMessage("SET Power On").isNotNull();
}
@Test
public void testSetPowerOff() throws ParseException {
String code = "SET 1 POWER OFF\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
assertThat(p.command()).withFailMessage("SET Power Off").isNotNull();
}
@Test
public void testCheckPowerOff() throws ParseException {
String code = "CHECK 1 POWER OFF\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
assertThat(p.command()).withFailMessage("Check Power Off").isNotNull();
}
@Test
public void testGetPower() {
String code = "GET 1 POWER\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testInitPower() {
String code = "Init 1 POWER\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTermPower() {
String code = "TERM 1 POWER\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// test valid Feedback (FB) commands.
@Test
public void testGetFB() {
String code = "GET 1 FB 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSetFB() {
String code = "SET 1 FB 42 1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testInitFB() {
String code = "INIT 1 FB\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTermFB() {
String code = "TERM 1 FB\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testWaitFB() {
String code = "WAIT 1 FB 42 1 10\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// test valid General Accessory (GA) commands.
@Test
public void testSetGAClosed() {
String code = "SET 1 GA 42 0 0 -1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSetGAThrown() {
String code = "SET 1 GA 42 0 1 -1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testInitGA() {
String code = "INIT 1 GA 42 N\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
//test SERVER commands
@Test
public void testGetServer() {
String code = "GET 0 SERVER\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testResetServer() {
String code = "RESET 0 SERVER\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTERMServer() {
String code = "TERM 0 SERVER\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// test TIME commands
@Test
public void testGETTime() {
String code = "GET 0 TIME\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testINITTime() {
String code = "INIT 0 TIME 1 2\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSETTime() {
String code = "SET 0 TIME 2014014 12 32 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTERMTime() {
String code = "TERM 0 TIME\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testWaitTime() {
String code = "WAIT 0 TIME 2014020 1 30 41\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// valid Generic Loco (GL) commands
@Test
public void testGetGL() {
String code = "GET 1 GL 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testInitGLShortAddress() {
String code = "INIT 1 GL 42 N 1 28 2\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testInitGLLongAddress() {
String code = "INIT 1 GL 1042 N 2 28 2\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSetGL() {
String code = "SET 1 GL 42 0 2 28 0 1 = 0 0 0 0 0\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTERMGL() {
String code = "TERM 1 GL 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// valid SESSION commands
@Test
public void testGetSESSION() {
String code = "GET 0 SESSION 12345\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// valid DESCRITPION commands
@Test
public void testGetBusDescription() {
String code = "GET 0 DESCRIPTION\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testGetDeviceGroupDescription() {
String code = "GET 0 DESCRIPTION GA\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testGetDeviceDescription() {
String code = "GET 0 DESCRIPTION GA 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// valid Service Mode (SM) commands
@Test
public void testSetCVValue() {
String code = "SET 1 SM 0 CV 1 1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testGetCVValue() {
String code = "GET 1 SM 0 CV 1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSetCVBITValue() {
String code = "SET 1 SM 0 CVBIT 1 1 0\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testGetCVBITValue() {
String code = "GET 1 SM 0 CVBIT 1 0\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSetRegValue() {
String code = "SET 1 SM 0 REG 1 1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testGetRegValue() {
String code = "GET 1 SM 0 REG 1\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testINITSM() {
String code = "INIT 1 SM NMRA\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTERMSM() {
String code = "TERM 1 SM\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testVerifyCVValue() {
String code = "VERIFY 1 SM 0 CV 1 2\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// valid LOCK commands
@Test
public void testGetLOCK() {
String code = "GET 1 LOCK GA 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testSetLOCK() {
String code = "SET 1 LOCK GA 42 60\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
@Test
public void testTermLOCK() {
String code = "TERM 1 LOCK GA 42\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
Throwable thrown = catchThrowable(p::command);
assertThat(thrown).isNull();
}
// handshake mode commands
// test the "GO" command
@Test
public void testGO() throws ParseException {
String code = "GO\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
SimpleNode n = p.handshakecommand();
assertThat(n).withFailMessage("Go node").isNotNull();
}
// test the "SET" command
@Test
public void testProtocolVersion() throws ParseException {
String code = "SET PROTOCOL SRCP 1.2.3\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
SimpleNode n = p.handshakecommand();
assertThat(n).withFailMessage("Set node").isNotNull();
}
@Test
public void testConnectionModeCommand() throws ParseException {
String code = "SET CONNECTIONMODE SRCP COMMAND\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
SimpleNode n = p.handshakecommand();
assertThat(n).withFailMessage("Set node").isNotNull();
}
@Test
public void testConnectionModeInfo() throws ParseException {
String code = "SET CONNECTIONMODE SRCP INFO\n\r";
SRCPParser p = new SRCPParser(new StringReader(code));
SimpleNode n = p.handshakecommand();
assertThat(n).withFailMessage("Set node").isNotNull();
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.resetProfileManager();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}