You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
3.0 KiB

package network.MessageDecoders;
import network.MessageEncoders.BoatStatusEncoder;
import network.MessageEncoders.RaceVisionByteEncoder;
import network.Messages.BoatStatus;
import network.Messages.Enums.BoatStatusEnum;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Test for the BoatStatus encoder and decoder
*/
public class BoatStatusDecoderTest {
/**
* Creates a BoatStatus message, encodes it, decodes it, and checks that the result matches the starting message.
* @throws Exception if test fails.
*/
@Test
public void boatStatusEncodeDecodeTest() throws Exception {
long time = System.currentTimeMillis();
//Create data to serialize.
int boatSourceID = 5;
BoatStatusEnum boatStatusEnum = BoatStatusEnum.RACING;
byte boatLegNumber = 5;
byte boatPenaltiesAwarded = 4;
byte boatPenaltiesServed = 2;
long boatTimeAtNextMark = time + (1000 * 3);
long boatTimeAtFinish = boatTimeAtNextMark + (1000 * 15);
BoatStatus boatStatus = new BoatStatus(
boatSourceID,
boatStatusEnum,
boatLegNumber,
boatPenaltiesAwarded,
boatPenaltiesServed,
boatTimeAtNextMark,
boatTimeAtFinish );
BoatStatus boatStatusDecoded = encodeDecodeBoatStatus(boatStatus);
compareBoatStatusMessages(boatStatus, boatStatusDecoded);
}
/**
* Encodes and decodes a BoatStatus, and returns it.
* @param boatStatus The BoatStatus to encode and decode.
* @return The decoded BoatStatus.
*/
private static BoatStatus encodeDecodeBoatStatus(BoatStatus boatStatus) {
BoatStatusEncoder boatStatusEncoder = new BoatStatusEncoder();
byte[] boatStatusEncoded = boatStatusEncoder.encode(boatStatus);
BoatStatusDecoder boatStatusDecoder = new BoatStatusDecoder();
BoatStatus boatStatusDecoded = boatStatusDecoder.decode(boatStatusEncoded);
return boatStatusDecoded;
}
/**
* Compares two BoatStatus messages to check that they are equal.
* @param original The original BoatStatus message.
* @param decoded The decoded BoatStatus message.
*/
public static void compareBoatStatusMessages(BoatStatus original, BoatStatus decoded) {
Assert.assertEquals(original.getSourceID(), decoded.getSourceID());
Assert.assertEquals(original.getBoatStatus(), decoded.getBoatStatus());
Assert.assertEquals(original.getLegNumber(), decoded.getLegNumber());
Assert.assertEquals(original.getNumPenaltiesAwarded(), decoded.getNumPenaltiesAwarded());
Assert.assertEquals(original.getNumPenaltiesServed(), decoded.getNumPenaltiesServed());
Assert.assertEquals(original.getEstTimeAtNextMark(), decoded.getEstTimeAtNextMark());
Assert.assertEquals(original.getEstTimeAtFinish(), decoded.getEstTimeAtFinish());
}
}