aboutsummaryrefslogtreecommitdiff
path: root/test/org/traccar/protocol/Arnavi4FrameDecoderTest.java
blob: 2203cdafc0e2b39e0f1b2b775600f8085ebb4f60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package org.traccar.protocol;

import org.junit.Assert;
import org.junit.Test;
import org.traccar.ProtocolTest;

import java.nio.ByteOrder;

public class Arnavi4FrameDecoderTest extends ProtocolTest {

    @Test
    public void testDecodeValidPackets() throws Exception {

        Arnavi4FrameDecoder decoder = new Arnavi4FrameDecoder();

        Assert.assertEquals( // Valid HEADER v1 packet with IMEI
                binary(ByteOrder.LITTLE_ENDIAN, "ff22f30c45f5c90f0300"),
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "ff22f30c45f5c90f0300")));

        Assert.assertEquals( // Valid HEADER v2 packet with IMEI
                binary(ByteOrder.LITTLE_ENDIAN, "ff23f30c45f5c90f0300"),
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "ff23f30c45f5c90f0300")));

        Assert.assertEquals( // Valid PACKAGE with answer to server on file transfer
                null,
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "5bfd005d")));

        Assert.assertEquals( // Valid PACKAGE with one DATA packet
                binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa37010000295d"),
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa37010000295d")));

        Assert.assertEquals( // Valid PACKAGE with two DATA packet
                binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa3701000029012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa37010000295d"),
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa3701000029012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa37010000295d")));

        Assert.assertEquals( // Valid PACKAGE with one TEXT packet.
                null,
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "030700e3f16b50747261636361721b")));

        Assert.assertEquals( // Valid PACKAGE with one BINARY packet.
                null,
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "062000e3f16b5003298b5e4204cbd514420500191000080400ff021b")));

    }

    @Test
    public void testDecodeInvalidPackets() throws Exception {

        Arnavi4FrameDecoder decoder = new Arnavi4FrameDecoder();

        Assert.assertEquals( // Invalid PACKAGE with one DATA packet (missing last byte with end sign)
                null,
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa3701000029")));

        Assert.assertEquals( // Invalid PACKAGE with two DATA packet (missing last 10 bytes)
                null,
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa3701000029012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d00")));

        Assert.assertEquals( // Valid PACKAGE with useless extra bytes at the end
                binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa37010000295d"),
                decoder.decode(null, null, binary(ByteOrder.LITTLE_ENDIAN, "5b01012800a3175f5903513934420447221c42055402781E0900f0c5215b4e0084005c00007c005d0000a300fa37010000295d010203040506070809")));

    }

}