aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/org/traccar/ProtocolEncoderTest.java52
-rw-r--r--test/org/traccar/protocol/MeiligaoProtocolEncoderTest.java41
2 files changed, 93 insertions, 0 deletions
diff --git a/test/org/traccar/ProtocolEncoderTest.java b/test/org/traccar/ProtocolEncoderTest.java
new file mode 100644
index 000000000..e8b5bb4eb
--- /dev/null
+++ b/test/org/traccar/ProtocolEncoderTest.java
@@ -0,0 +1,52 @@
+package org.traccar;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.Assert;
+import org.traccar.model.Command;
+
+import javax.xml.bind.DatatypeConverter;
+import java.nio.ByteOrder;
+import java.nio.charset.Charset;
+
+public class ProtocolEncoderTest {
+
+ private String concatenateStrings(String... strings) {
+ StringBuilder builder = new StringBuilder();
+ for (String s : strings) {
+ builder.append(s);
+ }
+ return builder.toString();
+ }
+
+ protected ChannelBuffer binary(String... data) {
+ return binary(ByteOrder.BIG_ENDIAN, data);
+ }
+
+ protected ChannelBuffer binary(ByteOrder endianness, String... data) {
+ return ChannelBuffers.wrappedBuffer(
+ endianness, DatatypeConverter.parseHexBinary(concatenateStrings(data)));
+ }
+
+ protected String text(String... data) {
+ return concatenateStrings(data);
+ }
+
+ protected ChannelBuffer buffer(String... data) {
+ return ChannelBuffers.copiedBuffer(concatenateStrings(data), Charset.defaultCharset());
+ }
+
+ protected void verifyCommand(
+ BaseProtocolEncoder encoder, Command command, ChannelBuffer expected) throws Exception {
+ verifyDecodedCommand(encoder.encodeCommand(command), expected);
+ }
+
+ private void verifyDecodedCommand(Object decodedObject, ChannelBuffer expected) {
+
+ Assert.assertNotNull("command is null", decodedObject);
+ Assert.assertTrue("not a buffer", decodedObject instanceof ChannelBuffer);
+ Assert.assertEquals(ChannelBuffers.hexDump(expected), ChannelBuffers.hexDump((ChannelBuffer) decodedObject));
+
+ }
+
+}
diff --git a/test/org/traccar/protocol/MeiligaoProtocolEncoderTest.java b/test/org/traccar/protocol/MeiligaoProtocolEncoderTest.java
new file mode 100644
index 000000000..b4a8b9f02
--- /dev/null
+++ b/test/org/traccar/protocol/MeiligaoProtocolEncoderTest.java
@@ -0,0 +1,41 @@
+package org.traccar.protocol;
+
+import org.junit.Test;
+import org.traccar.ProtocolEncoderTest;
+import org.traccar.model.Command;
+
+public class MeiligaoProtocolEncoderTest extends ProtocolEncoderTest {
+
+ @Test
+ public void testEncode() throws Exception {
+
+ MeiligaoProtocolEncoder encoder = new MeiligaoProtocolEncoder();
+
+ Command command = new Command();
+ command.setDeviceId(1);
+ command.setType(Command.TYPE_POSITION_SINGLE);
+
+ verifyCommand(encoder, command, binary("404000111234567890123441016cf70d0a"));
+
+ command.setType(Command.TYPE_POSITION_PERIODIC);
+ command.set(Command.KEY_FREQUENCY, 100);
+
+ verifyCommand(encoder, command, binary("40400013123456789012344102000a2f4f0d0a"));
+
+ command.setType(Command.TYPE_SET_TIMEZONE);
+ command.set(Command.KEY_TIMEZONE, 480 * 60);
+
+ verifyCommand(encoder, command, binary("4040001412345678901234413234383030ad0d0a"));
+
+ command.setType(Command.TYPE_REBOOT_DEVICE);
+
+ verifyCommand(encoder, command, binary("40400011123456789012344902d53d0d0a"));
+
+ command.setType(Command.TYPE_MOVEMENT_ALARM);
+ command.set(Command.KEY_RADIUS, 1000);
+
+ verifyCommand(encoder, command, binary("4040001312345678901234410603e87bb00d0a"));
+
+ }
+
+}