test for RaceStartStatusDecoder added

-update to race start status decoder

#story[782]
main
hba56 9 years ago
parent f5000eea11
commit 23e007bd11

@ -1,25 +0,0 @@
package seng302.Networking.MessageDecoders;
import java.util.Arrays;
/**
* Created by hba56 on 21/04/17.
*/
public class RaceStartStatus {
byte messageVersion;
byte[] timestamp;
byte[] ackNumber;
byte[] raceStartTime;
byte[] raceIdentifier;
byte notificationType;
public RaceStartStatus(byte[] encodedRaceStartStatus) {
messageVersion = encodedRaceStartStatus[0];
timestamp = Arrays.copyOfRange(encodedRaceStartStatus, 1, 7);
ackNumber = Arrays.copyOfRange(encodedRaceStartStatus, 7, 9);
raceStartTime = Arrays.copyOfRange(encodedRaceStartStatus, 9, 15);
raceIdentifier = Arrays.copyOfRange(encodedRaceStartStatus, 15, 19);
notificationType = encodedRaceStartStatus[19];
}
}

@ -0,0 +1,102 @@
package seng302.Networking.MessageDecoders;
import seng302.Model.BoatInRace;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Arrays;
/**
* Created by hba56 on 21/04/17.
*/
public class RaceStartStatusDecoder {
private byte messageVersion;
private byte[] timestamp;
private byte[] ackNumber;
private byte[] raceStartTime;
private byte[] raceIdentifier;
private byte notificationType;
private long time;
private short ack;
private long startTime;
private int raceID;
private char notification;
public RaceStartStatusDecoder(byte[] encodedRaceStartStatus) {
messageVersion = encodedRaceStartStatus[0];
timestamp = Arrays.copyOfRange(encodedRaceStartStatus, 1, 7);
ackNumber = Arrays.copyOfRange(encodedRaceStartStatus, 7, 9);
raceStartTime = Arrays.copyOfRange(encodedRaceStartStatus, 9, 15);
raceIdentifier = Arrays.copyOfRange(encodedRaceStartStatus, 15, 19);
notificationType = encodedRaceStartStatus[19];
time = bytesToLong(timestamp);
ack = bytesToShort(ackNumber);
startTime = bytesToLong(raceStartTime);
raceID = bytesToInt(raceIdentifier);
notification = byteToChar(notificationType);
}
private char byteToChar(byte bytesInt){
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer.put((byte)0);
byteBuffer.put(bytesInt);
char num = byteBuffer.getChar(0);
return num;
}
private short bytesToShort(byte[] bytesShort){
ByteBuffer wrapped = ByteBuffer.wrap(bytesShort);
short num = wrapped.getShort();
return num;
}
private int bytesToInt(byte[] bytesInt){
ByteBuffer wrapped = ByteBuffer.wrap(bytesInt);
int num = wrapped.getInt();
return num;
}
private long bytesToLong(byte[] bytesLong){
ByteBuffer byteBuffer = ByteBuffer.allocate(8);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer.put((byte)0);
byteBuffer.put((byte)0);
byteBuffer.put(bytesLong[0]);
byteBuffer.put(bytesLong[1]);
byteBuffer.put(bytesLong[2]);
byteBuffer.put(bytesLong[3]);
byteBuffer.put(bytesLong[4]);
byteBuffer.put(bytesLong[5]);
long longVal = byteBuffer.getLong(0);
return longVal;
}
public byte getMessageVersion() {
return messageVersion;
}
public long getTime() {
return time;
}
public short getAck() {
return ack;
}
public long getStartTime() {
return startTime;
}
public int getRaceID() {
return raceID;
}
public char getNotification() {
return notification;
}
}

@ -108,7 +108,7 @@ public class RaceVisionByteEncoder {
byte[] ackNumber = convert(ack, 2);
byte[] raceStartTime = convert(startTime, 6);
int raceIdentifier = raceID;
char notificationType = notification;
byte[] notificationType = convert(notification, 1);
ByteBuffer result = ByteBuffer.allocate(20);
result.put(convert(messageVersion, 1));
@ -116,7 +116,7 @@ public class RaceVisionByteEncoder {
result.put(ackNumber);
result.put(raceStartTime);
result.putInt(raceIdentifier);
result.putChar(notificationType);
result.put(notificationType);
return result.array();
}

@ -0,0 +1,30 @@
package seng302.Networking.MessageDecoders;
import org.junit.Assert;
import org.junit.Test;
import seng302.Networking.RaceVisionByteEncoder;
/**
* Created by hba56 on 23/04/17.
*/
public class RaceStartStatusDecoderTest {
@Test
public void getByteArrayTest(){
long time = System.currentTimeMillis();
RaceVisionByteEncoder raceVisionByteEncoder = new RaceVisionByteEncoder();
long time2 = System.currentTimeMillis();
byte[] encodedRaceStartStatus = raceVisionByteEncoder.raceStartStatus(time, (short)1,
time2, 2, (char)3);
RaceStartStatusDecoder testDecoder = new RaceStartStatusDecoder(encodedRaceStartStatus);
Assert.assertEquals(0b1, testDecoder.getMessageVersion());
Assert.assertEquals(time, testDecoder.getTime());
Assert.assertEquals(1, testDecoder.getAck());
Assert.assertEquals(time2, testDecoder.getStartTime());
Assert.assertEquals(2, testDecoder.getRaceID());
Assert.assertEquals((char)3, testDecoder.getNotification());
}
}
Loading…
Cancel
Save