diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/org/traccar/ProtocolEncoderTest.java | 52 | ||||
-rw-r--r-- | test/org/traccar/protocol/MeiligaoProtocolEncoderTest.java | 41 |
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")); + + } + +} |