267 lines
11 KiB
Java
267 lines
11 KiB
Java
package jmri.jmris.simpleserver.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 jmri.jmris.simpleserver.parser.JmriServerTokenizer class.
|
|
*
|
|
* @author Paul Bender
|
|
*/
|
|
public class JmriServerTokenizerTest {
|
|
|
|
// numeric values
|
|
@Test
|
|
public void testTokenizeAddr() {
|
|
String cmd = "1234\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for ADDR").isEqualTo(JmriServerParserConstants.ADDR);
|
|
assertThat(t.image).withFailMessage("Wrong image for ADDR").isEqualTo("1234");
|
|
}
|
|
|
|
// constants.
|
|
@Test
|
|
public void testTokenizeONOFF() {
|
|
String cmd = "ON OFF\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for ON").isEqualTo(JmriServerParserConstants.ONOFF);
|
|
t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for OFF").isEqualTo(JmriServerParserConstants.ONOFF);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTHROWNCLOSED() {
|
|
String cmd = "THROWN CLOSED\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for THROWN").isEqualTo(JmriServerParserConstants.THROWNCLOSED);
|
|
t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for CLOSED").isEqualTo(JmriServerParserConstants.THROWNCLOSED);
|
|
}
|
|
|
|
// command types
|
|
@Test
|
|
public void testTokenizePower() {
|
|
String cmd = "POWER ON\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for POWER").isEqualTo(JmriServerParserConstants.POWER);
|
|
t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for ON").isEqualTo(JmriServerParserConstants.ONOFF);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTurnout() {
|
|
String cmd = "TURNOUT\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TURNOUT").isEqualTo(JmriServerParserConstants.TURNOUT);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeReporeter() {
|
|
String cmd = "REPORTER\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for REPORTER").isEqualTo(JmriServerParserConstants.REPORTER);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeLight() {
|
|
String cmd = "LIGHT\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for LIGHT").isEqualTo(JmriServerParserConstants.LIGHT);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeSENSOR() {
|
|
String cmd = "SENSOR\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for SENSOR").isEqualTo(JmriServerParserConstants.SENSOR);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeThrottle() {
|
|
String cmd = "THROTTLE\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for THROTTLE").isEqualTo(JmriServerParserConstants.THROTTLE);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeOperations() {
|
|
String cmd = "OPERATIONS\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for OPERATIONS").isEqualTo(JmriServerParserConstants.OPERATIONS);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrain() {
|
|
String cmd = "TRAIN\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAIN").isEqualTo(JmriServerParserConstants.TRAIN);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrains() {
|
|
String cmd = "TRAINS\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINS").isEqualTo(JmriServerParserConstants.TRAINS);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrainWeight() {
|
|
String cmd = "TRAINWEIGHT\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINWEIGHT").isEqualTo(JmriServerParserConstants.TRAINWEIGHT);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrainCars() {
|
|
String cmd = "TRAINCARS\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINCARS").isEqualTo(JmriServerParserConstants.TRAINCARS);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrainLeadLoco() {
|
|
String cmd = "TRAINLEADLOCO\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINLEADLOCO").isEqualTo(JmriServerParserConstants.TRAINLEADLOCO);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrainCaboose() {
|
|
String cmd = "TRAINCABOOSE\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINCABOOSE").isEqualTo(JmriServerParserConstants.TRAINCABOOSE);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrainStatus() {
|
|
String cmd = "TRAINSTATUS\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINSTATUS").isEqualTo(JmriServerParserConstants.TRAINSTATUS);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTrainLocation() {
|
|
String cmd = "TRAINLOCATION\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TRAINLOCATION").isEqualTo(JmriServerParserConstants.TRAINLOCATION);
|
|
}
|
|
|
|
@Test
|
|
public void testTokenizeTerminate() {
|
|
String cmd = "TERMINATE\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for TERMINANTE").isEqualTo(JmriServerParserConstants.TERMINATE);
|
|
}
|
|
|
|
|
|
// device names
|
|
@Test
|
|
public void testTurnoutDevice() {
|
|
String cmd = "IT1\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
stm.SwitchTo(JmriServerParserConstants.DEVICENAME);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for Turnout Name").isEqualTo(JmriServerParserConstants.JMRITURNOUT);
|
|
}
|
|
|
|
@Test
|
|
public void testSensorDevice() {
|
|
String cmd = "IS1\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
stm.SwitchTo(JmriServerParserConstants.DEVICENAME);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for Sensor Name").isEqualTo(JmriServerParserConstants.JMRISENSOR);
|
|
}
|
|
|
|
@Test
|
|
public void testLightDevice() {
|
|
String cmd = "IL1\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
stm.SwitchTo(JmriServerParserConstants.DEVICENAME);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for Light Name").isEqualTo(JmriServerParserConstants.JMRILIGHT);
|
|
}
|
|
|
|
@Test
|
|
public void testReporterDevice() {
|
|
String cmd = "IR1\n\r";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
stm.SwitchTo(JmriServerParserConstants.DEVICENAME);
|
|
Token t = stm.getNextToken();
|
|
assertThat(t.kind).withFailMessage("Wrong token kind for Reporter Name").isEqualTo(JmriServerParserConstants.JMRIREPORTER);
|
|
}
|
|
|
|
// This used to be an error.
|
|
// now should check to see that the token produced
|
|
// is the BADTOKEN token.
|
|
@Test
|
|
public void testTokenizeFailure() {
|
|
Throwable thrown = catchThrowable( () -> {
|
|
String cmd = "this should fail";
|
|
SimpleCharStream cs = new SimpleCharStream(new StringReader(cmd));
|
|
JmriServerParserTokenManager stm = new JmriServerParserTokenManager(cs);
|
|
stm.getNextToken(); // called to provoke TokenMgrError
|
|
});
|
|
assertThat(thrown).isNotNull();
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|