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.
87 lines
3.4 KiB
87 lines
3.4 KiB
package network;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
import seng302.Networking.Exceptions.InvalidMessageException;
|
|
import seng302.Networking.MessageDecoders.XMLMessageDecoder;
|
|
import seng302.Networking.MessageEncoders.XMLMessageEncoder;
|
|
import seng302.Networking.Messages.AC35Data;
|
|
import seng302.Networking.Messages.Enums.MessageType;
|
|
import seng302.Networking.Messages.XMLMessage;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
|
|
/**
|
|
* Created by hba56 on 21/04/17.
|
|
*/
|
|
public class BinaryMessageDecoderTest {
|
|
@Test
|
|
public void decodeTest(){
|
|
try{
|
|
StringBuilder xmlString;
|
|
BufferedReader br = new BufferedReader(new InputStreamReader(
|
|
this.getClass().getResourceAsStream(("../../raceXML/Regatta.xml"))));
|
|
String line;
|
|
xmlString = new StringBuilder();
|
|
while((line=br.readLine())!= null){
|
|
xmlString.append(line.trim());
|
|
}
|
|
long time = System.currentTimeMillis();
|
|
XMLMessageEncoder testEncoder = new XMLMessageEncoder((short)1, time, (byte)7, (short)1, (short)xmlString.length(), xmlString.toString());
|
|
|
|
byte[] encodedMessage = testEncoder.encode();
|
|
|
|
BinaryMessageEncoder testMessage = new BinaryMessageEncoder(MessageType.XMLMESSAGE, time, 1, (short)encodedMessage.length, encodedMessage);
|
|
|
|
BinaryMessageDecoder decoder = new BinaryMessageDecoder(testMessage.getFullMessage());
|
|
|
|
AC35Data message = null;
|
|
try {
|
|
message = decoder.decode();
|
|
}
|
|
catch (InvalidMessageException e) {
|
|
Assert.assertFalse(e.getMessage(), true);
|
|
}
|
|
|
|
if (!(message instanceof XMLMessage)){
|
|
Assert.assertFalse(true);
|
|
}
|
|
XMLMessage xmlMessage = (XMLMessage) message;
|
|
|
|
|
|
//message length
|
|
Assert.assertEquals((short) encodedMessage.length, decoder.getMessageBodyLength());
|
|
//time stamp
|
|
Assert.assertEquals(time, decoder.getHeaderTimeStamp());
|
|
//source ID
|
|
Assert.assertEquals((short) 1, decoder.getHeaderSourceID());
|
|
//message type
|
|
Assert.assertEquals(26, decoder.getHeaderMessageType());
|
|
|
|
XMLMessageDecoder decoderXML = new XMLMessageDecoder(decoder.getMessageBody());
|
|
decoderXML.decode();
|
|
|
|
//tests from seng302.Networking.MessageDecoders.XMLMessageDecoderTest to make sure the file is still good
|
|
Assert.assertEquals((byte)1, decoderXML.getMessageVersionNumber());
|
|
Assert.assertEquals((short)1, decoderXML.getAckNumber());
|
|
Assert.assertEquals(time, decoderXML.getTimeStamp());
|
|
Assert.assertEquals((byte)7, decoderXML.getXmlMsgSubType());
|
|
Assert.assertEquals((short)1, decoderXML.getSequenceNumber());
|
|
Assert.assertEquals((short)xmlString.length(), decoderXML.getXmlMsgLength());
|
|
|
|
// Reader reader = decoderXML.getXmlMessageInputStream().getCharacterStream();
|
|
// int c;
|
|
// String contents = "";
|
|
// while((c = reader.read()) != -1) {
|
|
// contents += (char)c;
|
|
// }
|
|
// Assert.assertEquals(xmlString.toString(), contents);
|
|
|
|
}catch (IOException e){
|
|
Assert.assertFalse(e.getMessage(), true);
|
|
}
|
|
}
|
|
}
|