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.

90 lines
2.4 KiB

package network.MessageDecoders;
import network.Exceptions.InvalidMessageException;
import network.MessageEncoders.RaceVisionByteEncoder;
import network.Messages.Enums.RequestToJoinEnum;
import network.Messages.RequestToJoin;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Test for the RequestToJoin encoder and decoder
*/
public class RequestToJoinDecoderTest {
/**
* Encodes and decodes a given message.
* @param message Message to encode/decode.
* @return The decoded message.
* @throws InvalidMessageException If the message cannot be encoded.
*/
private RequestToJoin encodeDecodeMessage(RequestToJoin message) throws InvalidMessageException {
//Encode.
byte [] testEncodedMessage = RaceVisionByteEncoder.encode(message);
//Decode.
RequestToJoinDecoder testDecoder = new RequestToJoinDecoder();
testDecoder.decode(testEncodedMessage);
RequestToJoin decodedMessage = testDecoder.getMessage();
return decodedMessage;
}
/**
* Tests if a specific request type message can be encoded and decoded correctly.
* @param type The type of join request.
* @throws Exception if test fails.
*/
private void requestTypeTest(RequestToJoinEnum type) throws Exception {
//Prepare message.
RequestToJoin beforeMessage = new RequestToJoin(type);
//Encode/decode it.
RequestToJoin afterMessage = encodeDecodeMessage(beforeMessage);
//Compare.
assertEquals(beforeMessage.getRequestType().getValue(), afterMessage.getRequestType().getValue());
}
/**
* Tests if a spectator request message can be encoded and decoded correctly.
* @throws Exception if test fails.
*/
@Test
public void spectatorTest() throws Exception {
requestTypeTest(RequestToJoinEnum.SPECTATOR);
}
/**
* Tests if a participant request message can be encoded and decoded correctly.
* @throws Exception if test fails.
*/
@Test
public void participantTest() throws Exception {
requestTypeTest(RequestToJoinEnum.PARTICIPANT);
}
/**
* Tests if a ghost request message can be encoded and decoded correctly.
* @throws Exception if test fails.
*/
@Test
public void ghostTest() throws Exception {
requestTypeTest(RequestToJoinEnum.GHOST);
}
}