234 lines
9.6 KiB
Java
234 lines
9.6 KiB
Java
package jmri.jmris.simpleserver;
|
|
|
|
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.SimpleReporterServer class
|
|
*
|
|
* @author Paul Bender
|
|
*/
|
|
public class SimpleReporterServerTest {
|
|
|
|
@Test
|
|
public void testCtor() {
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
// null output string drops characters
|
|
// could be replaced by one that checks for specific outputs
|
|
@Override
|
|
public void write(int b) {
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
assertThat(a).isNotNull();
|
|
}
|
|
|
|
@Test
|
|
public void testConnectionCtor() {
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
// null output string drops characters
|
|
// could be replaced by one that checks for specific outputs
|
|
@Override
|
|
public void write(int b) {
|
|
}
|
|
});
|
|
jmri.jmris.JmriConnectionScaffold jcs = new jmri.jmris.JmriConnectionScaffold(output);
|
|
SimpleReporterServer a = new SimpleReporterServer(jcs);
|
|
assertThat(a).isNotNull();
|
|
}
|
|
|
|
@Test
|
|
// test sending a message.
|
|
public void testSendMessage() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
// NOTE: this test uses reflection to test a private method.
|
|
Throwable thrown = catchThrowable( () -> {
|
|
java.lang.reflect.Method sendMessageMethod = a.getClass().getDeclaredMethod("sendMessage", String.class);
|
|
// override the default permissions.
|
|
assertThat(sendMessageMethod).isNotNull();
|
|
sendMessageMethod.setAccessible(true);
|
|
sendMessageMethod.invoke(a,"Hello World");
|
|
});
|
|
assertThat(thrown).withFailMessage("Exception sending Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("SendMessage Check").isEqualTo("Hello World");
|
|
}
|
|
|
|
@Test
|
|
// test sending a message.
|
|
public void testSendMessageWithConnection() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
jmri.jmris.JmriConnectionScaffold jcs = new jmri.jmris.JmriConnectionScaffold(output);
|
|
SimpleReporterServer a = new SimpleReporterServer(jcs);
|
|
// NOTE: this test uses reflection to test a private method.
|
|
Throwable thrown = catchThrowable( () -> {
|
|
java.lang.reflect.Method sendMessageMethod = a.getClass().getDeclaredMethod("sendMessage", String.class);
|
|
// override the default permissions.
|
|
assertThat(sendMessageMethod).isNotNull();
|
|
sendMessageMethod.setAccessible(true);
|
|
sendMessageMethod.invoke(a, "Hello World");
|
|
});
|
|
assertThat(thrown).withFailMessage("Exception sending Status").isNull();
|
|
assertThat(jcs.getOutput()).withFailMessage("SendMessage Check").isEqualTo("Hello World");
|
|
}
|
|
|
|
|
|
@Test
|
|
// test sending an error message.
|
|
public void testSendErrorStatus() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
Throwable thrown = catchThrowable( () -> a.sendErrorStatus("IT1"));
|
|
assertThat(thrown).withFailMessage("Exception sending Error Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("sendErrorStatus check").isEqualTo("REPORTER ERROR\n");
|
|
}
|
|
|
|
@Test
|
|
// test sending a Report message.
|
|
public void testSendReport() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
Throwable thrown = catchThrowable( () -> {
|
|
a.initReporter("IR1");
|
|
a.sendReport("IR1", "Hello World");
|
|
});
|
|
assertThat(thrown).withFailMessage("Exception sending Error Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("sendErrorStatus check").isEqualTo("REPORTER IR1 Hello World\n");
|
|
}
|
|
|
|
@Test
|
|
// test sending an ID tag as a Report message.
|
|
public void testSendIdTagReport() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
Throwable thrown = catchThrowable( () -> {
|
|
a.initReporter("IR1");
|
|
a.sendReport("IR1", new jmri.implementation.DefaultIdTag("ID1234", "Hello World"));
|
|
});
|
|
assertThat(thrown).withFailMessage("Exception sending Error Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("sendErrorStatus check").isEqualTo("REPORTER IR1 Hello World\n");
|
|
}
|
|
|
|
@Test
|
|
// test sending a null Report message.
|
|
public void testSendNullReport() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
Throwable thrown = catchThrowable( () -> {
|
|
a.initReporter("IR1");
|
|
a.sendReport("IR1", null);
|
|
});
|
|
// null report, sends back the reporter name only.
|
|
assertThat(thrown).withFailMessage("Exception sending Error Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("sendErrorStatus check").isEqualTo("REPORTER IR1\n");
|
|
}
|
|
|
|
@Test
|
|
// test parsing a Report message.
|
|
public void testParseStatus() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
Throwable thrown = catchThrowable( () ->
|
|
a.parseStatus("REPORTER IR1 Hello World\n\r"));
|
|
assertThat(thrown).withFailMessage("Exception sending Error Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("sendErrorStatus check").isEqualTo("REPORTER IR1 Hello World\n");
|
|
}
|
|
|
|
@Test
|
|
// test parsing a null Report message.
|
|
public void testParseNullStatus() {
|
|
StringBuilder sb = new StringBuilder();
|
|
java.io.DataOutputStream output = new java.io.DataOutputStream(
|
|
new java.io.OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
sb.append((char)b);
|
|
}
|
|
});
|
|
java.io.DataInputStream input = new java.io.DataInputStream(System.in);
|
|
SimpleReporterServer a = new SimpleReporterServer(input, output);
|
|
Throwable thrown = catchThrowable( () ->
|
|
a.parseStatus("REPORTER IR1\n\r"));
|
|
assertThat(thrown).withFailMessage("Exception sending Error Status").isNull();
|
|
assertThat(sb.toString()).withFailMessage("sendErrorStatus check").isEqualTo("REPORTER IR1\n");
|
|
}
|
|
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
|
|
jmri.util.JUnitUtil.initReporterManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|