shared.dataInput:
Added shared.enums.XMLFileType, which is used to specify if a string contains a file path or file contents. Updated the XML readers to use it. Testing: Moved the networking tests and resources into racevisionGame module. Moved the remaining tests from visualiser into racevisionGame, and added a few empty tests to implement later.
This commit is contained in:
Binary file not shown.
@@ -1,119 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<BoatConfig>
|
||||
<Modified>2017-04-19T15:49:40+1200</Modified>
|
||||
<Version>1</Version>
|
||||
<Settings>
|
||||
<RaceBoatType Type="AC45" />
|
||||
<BoatDimension BoatLength="14.019" HullLength="13.449" />
|
||||
<ZoneSize MarkZoneSize="40.347" CourseZoneSize="40.347" />
|
||||
<ZoneLimits Limit1="200" Limit2="100" Limit3="40.347" Limit4="0" Limit5="-100" />
|
||||
</Settings>
|
||||
<BoatShapes>
|
||||
<BoatShape ShapeID="0">
|
||||
<Vertices>
|
||||
<Vtx Seq="1" Y="0" X="-2.659" />
|
||||
<Vtx Seq="2" Y="18.359" X="-2.659" />
|
||||
<Vtx Seq="3" Y="18.359" X="2.659" />
|
||||
<Vtx Seq="4" Y="0" X="2.659" />
|
||||
</Vertices>
|
||||
</BoatShape>
|
||||
<BoatShape ShapeID="1">
|
||||
<Vertices>
|
||||
<Vtx Seq="1" Y="0" X="-1.278" />
|
||||
<Vtx Seq="2" Y="8.876" X="-1.278" />
|
||||
<Vtx Seq="3" Y="8.876" X="1.278" />
|
||||
<Vtx Seq="4" Y="0" X="1.278" />
|
||||
</Vertices>
|
||||
</BoatShape>
|
||||
<BoatShape ShapeID="2">
|
||||
<Vertices>
|
||||
<Vtx Seq="1" Y="0" X="-1.1" />
|
||||
<Vtx Seq="2" Y="8.3" X="-1.1" />
|
||||
<Vtx Seq="3" Y="8.3" X="1.1" />
|
||||
<Vtx Seq="4" Y="0" X="1.1" />
|
||||
</Vertices>
|
||||
</BoatShape>
|
||||
<BoatShape ShapeID="3">
|
||||
<Vertices>
|
||||
<Vtx Seq="1" Y="0" X="-0.75" />
|
||||
<Vtx Seq="2" Y="3" X="-0.75" />
|
||||
<Vtx Seq="3" Y="3" X="0.75" />
|
||||
<Vtx Seq="4" Y="0" X="0.75" />
|
||||
</Vertices>
|
||||
</BoatShape>
|
||||
<BoatShape ShapeID="4">
|
||||
<Vertices>
|
||||
<Vtx Seq="1" Y="0" X="-3.46" />
|
||||
<Vtx Seq="2" Y="13.449" X="-3.46" />
|
||||
<Vtx Seq="3" Y="14.019" X="0" />
|
||||
<Vtx Seq="4" Y="13.449" X="3.46" />
|
||||
<Vtx Seq="5" Y="0" X="3.46" />
|
||||
</Vertices>
|
||||
<Catamaran>
|
||||
<Vtx Seq="1" Y="1.769" X="-2.752" />
|
||||
<Vtx Seq="2" Y="0" X="-2.813" />
|
||||
<Vtx Seq="3" Y="0" X="-3.34" />
|
||||
<Vtx Seq="4" Y="5.351" X="-3.46" />
|
||||
<Vtx Seq="5" Y="10.544" X="-3.387" />
|
||||
<Vtx Seq="6" Y="13.449" X="-3.075" />
|
||||
<Vtx Seq="7" Y="10.851" X="-2.793" />
|
||||
<Vtx Seq="8" Y="6.669" X="-2.699" />
|
||||
<Vtx Seq="9" Y="6.669" X="2.699" />
|
||||
<Vtx Seq="10" Y="10.851" X="2.793" />
|
||||
<Vtx Seq="11" Y="13.449" X="3.075" />
|
||||
<Vtx Seq="12" Y="10.544" X="3.387" />
|
||||
<Vtx Seq="13" Y="5.351" X="3.46" />
|
||||
<Vtx Seq="14" Y="0" X="3.34" />
|
||||
<Vtx Seq="15" Y="0" X="2.813" />
|
||||
<Vtx Seq="16" Y="1.769" X="2.752" />
|
||||
</Catamaran>
|
||||
<Bowsprit>
|
||||
<Vtx Seq="1" Y="6.669" X="-0.2" />
|
||||
<Vtx Seq="2" Y="11.377" X="-0.2" />
|
||||
<Vtx Seq="3" Y="14.019" X="0" />
|
||||
<Vtx Seq="4" Y="11.377" X="0.2" />
|
||||
<Vtx Seq="5" Y="6.669" X="0.2" />
|
||||
</Bowsprit>
|
||||
<Trampoline>
|
||||
<Vtx Seq="1" Y="2" X="-2.699" />
|
||||
<Vtx Seq="2" Y="6.438" X="-2.699" />
|
||||
<Vtx Seq="3" Y="6.438" X="2.699" />
|
||||
<Vtx Seq="4" Y="2" X="2.699" />
|
||||
</Trampoline>
|
||||
</BoatShape>
|
||||
<BoatShape ShapeID="5" />
|
||||
</BoatShapes>
|
||||
<Boats>>
|
||||
<Boat Type="Yacht" SourceID="101" ShapeID="4" HullNum="AC4501" ShortName="USA"
|
||||
BoatName="ORACLE TEAM USA" Country="USA">
|
||||
<GPSposition Z="1.738" Y="0.625" X="0.001" />
|
||||
<MastTop Z="21.496" Y="4.233" X="0.000" />
|
||||
</Boat>
|
||||
<Boat Type="Yacht" SourceID="102" ShapeID="4" HullNum="AC4502" ShortName="GBR"
|
||||
BoatName="Land Rover BAR" Country="United Kingdom">
|
||||
<GPSposition Z="1.738" Y="0.625" X="0.001" />
|
||||
<MastTop Z="21.496" Y="4.233" X="0.000" />
|
||||
</Boat>
|
||||
<Boat Type="Yacht" SourceID="103" ShapeID="4" HullNum="AC4503" ShortName="JPN"
|
||||
BoatName="SoftBank Team Japan" Country="Japan">
|
||||
<GPSposition Z="1.738" Y="0.625" X="0.001" />
|
||||
<MastTop Z="21.496" Y="4.233" X="0.000" />
|
||||
</Boat>
|
||||
<Boat Type="Yacht" SourceID="104" ShapeID="4" HullNum="AC4504" ShortName="FRA"
|
||||
BoatName="Groupama Team France" Country="France">
|
||||
<GPSposition Z="1.738" Y="0.625" X="0.001" />
|
||||
<MastTop Z="21.496" Y="4.233" X="0.000" />
|
||||
</Boat>
|
||||
<Boat Type="Yacht" SourceID="105" ShapeID="4" HullNum="AC4505" ShortName="SWE"
|
||||
BoatName="Artemis Racing" Country="Sweden">
|
||||
<GPSposition Z="1.738" Y="0.625" X="0.001" />
|
||||
<MastTop Z="21.496" Y="4.233" X="0.000" />
|
||||
</Boat>
|
||||
<Boat Type="Yacht" SourceID="106" ShapeID="4" HullNum="AC4506" ShortName="NZL"
|
||||
BoatName="Emirates Team New Zealand" Country="New Zealand">
|
||||
<GPSposition Z="1.738" Y="0.625" X="0.001" />
|
||||
<MastTop Z="21.496" Y="4.233" X="0.000" />
|
||||
</Boat>
|
||||
</Boats>
|
||||
</BoatConfig>
|
||||
@@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Race>
|
||||
<RaceID>17041901</RaceID>
|
||||
<RaceType>Fleet</RaceType>
|
||||
<CreationTimeDate>2017-04-19T15:30:00+1200</CreationTimeDate >
|
||||
<RaceStartTime Time="2019-06-01T13:30:00-0400" Postpone="false" />
|
||||
<Participants>
|
||||
<Yacht SourceID="001" Entry="Port" />
|
||||
<Yacht SourceID="002" Entry="Port" />
|
||||
<Yacht SourceID="003" Entry="Port" />
|
||||
<Yacht SourceID="004" Entry="Port" />
|
||||
<Yacht SourceID="005" Entry="Port" />
|
||||
<Yacht SourceID="006" Entry="Port" />
|
||||
</Participants>
|
||||
<Course>
|
||||
<CompoundMark CompoundMarkID="1" Name="StartLine">
|
||||
<Mark SeqID="1" Name="PRO" TargetLat="32.296577" TargetLng="-64.854304" SourceID="101" />
|
||||
<Mark SeqID="2" Name="PIN" TargetLat="32.293771" TargetLng="-64.855242" SourceID="102" />
|
||||
</CompoundMark>
|
||||
<CompoundMark CompoundMarkID="2" Name="M1">
|
||||
<Mark Name="M1" TargetLat="32.293039" TargetLng="-64.843983" SourceID="103" />
|
||||
</CompoundMark>
|
||||
<CompoundMark CompoundMarkID="3" Name="WindwardGate">
|
||||
<Mark SeqID="1" Name="G1" TargetLat="32.284680" TargetLng="-64.850045" SourceID="104" />
|
||||
<Mark SeqID="2" Name="G2" TargetLat="32.280164" TargetLng="-64.847591" SourceID="105" />
|
||||
</CompoundMark>
|
||||
<CompoundMark CompoundMarkID="4" Name="LeewardGate">
|
||||
<Mark SeqID="1" Name="G1" TargetLat="32.309693" TargetLng="-64.835249" SourceID="106" />
|
||||
<Mark SeqID="2" Name="G2" TargetLat="32.308046" TargetLng="-64.831785" SourceID="107" />
|
||||
</CompoundMark>
|
||||
<CompoundMark CompoundMarkID="5" Name="FinishLine">
|
||||
<Mark SeqID="1" Name="PRO" TargetLat="32.317379" TargetLng="-64.839291" SourceID="108" />
|
||||
<Mark SeqID="2" Name="PIN" TargetLat="32.317257" TargetLng="-64.836260" SourceID="109" />
|
||||
</CompoundMark>
|
||||
</Course>
|
||||
<CompoundMarkSequence>
|
||||
<Corner SeqID="1" CompoundMarkID="1" Rounding="SP" ZoneSize="3" />
|
||||
<Corner SeqID="2" CompoundMarkID="2" Rounding="Port" ZoneSize="3" />
|
||||
<Corner SeqID="3" CompoundMarkID="3" Rounding="Port" ZoneSize="3" />
|
||||
<Corner SeqID="4" CompoundMarkID="4" Rounding="Port" ZoneSize="3" />
|
||||
<Corner SeqID="3" CompoundMarkID="3" Rounding="Port" ZoneSize="3" />
|
||||
<Corner SeqID="5" CompoundMarkID="5" Rounding="SP" ZoneSize="3"/>
|
||||
</CompoundMarkSequence>
|
||||
<CourseLimit>
|
||||
<Limit SeqID="1" Lat="32.313922" Lon="-64.837168"/>
|
||||
<Limit SeqID="2" Lat="32.317379" Lon="-64.839291"/>
|
||||
<Limit SeqID="3" Lat="32.317911" Lon="-64.836996"/>
|
||||
<Limit SeqID="4" Lat="32.317257" Lon="-64.836260"/>
|
||||
<Limit SeqID="5" Lat="32.304273" Lon="-64.822834"/>
|
||||
|
||||
<Limit SeqID="6" Lat="32.279097" Lon="-64.841545"/>
|
||||
<Limit SeqID="7" Lat="32.279604" Lon="-64.849871"/>
|
||||
<Limit SeqID="8" Lat="32.289545" Lon="-64.854162"/>
|
||||
<Limit SeqID="9" Lat="32.290198" Lon="-64.858711"/>
|
||||
<Limit SeqID="10" Lat="32.297164" Lon="-64.856394"/>
|
||||
<Limit SeqID="11" Lat="32.296148" Lon="-64.849184"/>
|
||||
</CourseLimit>
|
||||
</Race>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<RegattaConfig>
|
||||
<RegattaID>1</RegattaID>
|
||||
<RegattaName>Seng302 Mock Test</RegattaName>
|
||||
<CourseName>Bermuda AC35</CourseName>
|
||||
<CentralLatitude>-32.296577</CentralLatitude>
|
||||
<CentralLongitude>64.854304</CentralLongitude>
|
||||
<CentralAltitude>0.00</CentralAltitude>
|
||||
<UtcOffset>-4</UtcOffset>
|
||||
<MagneticVariation>-14.78</MagneticVariation>
|
||||
</RegattaConfig>
|
||||
@@ -1,40 +0,0 @@
|
||||
package seng302.Networking;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static seng302.Networking.Utils.AC35UnitConverter.*;
|
||||
|
||||
/**
|
||||
* Created by fwy13 on 4/05/17.
|
||||
*/
|
||||
public class AC35UnitConverter {
|
||||
|
||||
@Test
|
||||
public void testConvertGPS(){
|
||||
assertTrue(convertGPS(0) == 0);
|
||||
assertTrue(convertGPS(Integer.MAX_VALUE) == (double)Integer.MAX_VALUE * 180.0 / Math.pow(2, 31));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testConvertGPSToInt(){
|
||||
assertTrue(convertGPSToInt(0) == 0);
|
||||
assertTrue(convertGPSToInt(180) == (int)2147483648.0);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvertHeading(){
|
||||
assertTrue(convertHeading(0) == 0);
|
||||
assertTrue(convertHeading(65536) == 360.0);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testConvertTrueWindAngle(){
|
||||
assertTrue(convertTrueWindAngle(0) == 0);
|
||||
assertTrue(convertTrueWindAngle(32768) == 180.0);
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
package seng302.Networking;
|
||||
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,163 +0,0 @@
|
||||
package seng302.Networking;
|
||||
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.Utils.ByteConverter;
|
||||
|
||||
import java.nio.ByteOrder;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
|
||||
/**
|
||||
* Created by fwy13 on 25/04/17.
|
||||
*/
|
||||
public class ByteConverterTest {
|
||||
|
||||
@Test
|
||||
public void testLargerIntToByte(){
|
||||
int int1 = 1532158456; //100 in bytes
|
||||
byte[] bytes1 = {(byte)0xF8, (byte)0xE1, 0x52, 0x5B};//this is in little endian
|
||||
assertTrue(testArrayContents(ByteConverter.intToBytes(int1), bytes1));
|
||||
byte[] bytes2 = {0x5B, 0x52, (byte)0xE1, (byte)0xF8};// this is big endian
|
||||
assertTrue(testArrayContents(ByteConverter.intToBytes(int1, ByteConverter.IntegerSize, ByteOrder.BIG_ENDIAN), bytes2));
|
||||
//test chopping
|
||||
byte[] chopped1 = ByteConverter.intToBytes(int1, 3, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes3 = {(byte)0xF8, (byte)0xE1, 0x52};
|
||||
assertTrue(testArrayContents(chopped1, bytes3));
|
||||
byte[] chopped2 = ByteConverter.intToBytes(int1, 2, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes4 = {(byte)0xF8, (byte)0xE1};
|
||||
assertTrue(testArrayContents(chopped2, bytes4));
|
||||
byte[] chopped3 = ByteConverter.intToBytes(int1, 1, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes5 = {(byte)0xF8};
|
||||
assertTrue(testArrayContents(chopped3, bytes5));
|
||||
|
||||
byte[] chopped4 = ByteConverter.intToBytes(int1, 3, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes6 = {0x52, (byte)0xE1, (byte)0xF8};
|
||||
assertTrue(testArrayContents(chopped4, bytes6));
|
||||
byte[] chopped5 = ByteConverter.intToBytes(int1, 2, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes7 = {(byte)0xE1, (byte)0xF8};
|
||||
assertTrue(testArrayContents(chopped5, bytes7));
|
||||
byte[] chopped6 = ByteConverter.intToBytes(int1, 1, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes8 = {(byte)0xF8};
|
||||
assertTrue(testArrayContents(chopped6, bytes8));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testByteToInt(){
|
||||
int int1 = 100; //100 in bytes
|
||||
byte[] bytes1 = {100, 0, 0, 0};//this is in little endian
|
||||
assertTrue(ByteConverter.bytesToInt(bytes1) == int1);
|
||||
assertTrue(ByteConverter.bytesToInt(bytes1, ByteOrder.LITTLE_ENDIAN) == int1);
|
||||
byte[] bytes2 = {0, 0, 0, 100};// this is big endian
|
||||
assertTrue(ByteConverter.bytesToInt(bytes2, ByteOrder.BIG_ENDIAN) == int1);
|
||||
//check single bytes to integers
|
||||
assertTrue(ByteConverter.bytesToInt((byte)100) == int1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testByteToLong(){
|
||||
long lng1 = 15; //100 in bytes
|
||||
byte[] bytes1 = {15, 0, 0, 0, 0, 0, 0, 0};//this is in little endian
|
||||
assertTrue(ByteConverter.bytesToLong(bytes1) == lng1);
|
||||
assertTrue(ByteConverter.bytesToLong(bytes1, ByteOrder.LITTLE_ENDIAN) == lng1);
|
||||
byte[] bytes2 = {0, 0, 0, 0, 0, 0, 0, 15};// this is big endian
|
||||
assertTrue(ByteConverter.bytesToLong(bytes2, ByteOrder.BIG_ENDIAN) == lng1);
|
||||
//check single bytes to integers
|
||||
assertTrue(ByteConverter.bytesToLong((byte)15) == lng1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testByteToShort(){
|
||||
short short1 = 20; //100 in bytes
|
||||
byte[] bytes1 = {20, 0};//this is in little endian
|
||||
assertTrue(ByteConverter.bytesToShort(bytes1) == short1);
|
||||
assertTrue(ByteConverter.bytesToShort(bytes1, ByteOrder.LITTLE_ENDIAN) == short1);
|
||||
byte[] bytes2 = {0, 20};// this is big endian
|
||||
assertTrue(ByteConverter.bytesToShort(bytes2, ByteOrder.BIG_ENDIAN) == short1);
|
||||
//check single bytes to integers
|
||||
assertTrue(ByteConverter.bytesToShort((byte)20) == short1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testByteToChar(){
|
||||
char char1 = 20; //100 in bytes
|
||||
byte[] bytes1 = {20, 0};//this is in little endian
|
||||
assertTrue(ByteConverter.bytesToChar(bytes1) == char1);
|
||||
assertTrue(ByteConverter.bytesToChar(bytes1, ByteOrder.LITTLE_ENDIAN) == char1);
|
||||
byte[] bytes2 = {0, 20};// this is big endian
|
||||
assertTrue(ByteConverter.bytesToChar(bytes2, ByteOrder.BIG_ENDIAN) == char1);
|
||||
//check single bytes to integers
|
||||
assertTrue(ByteConverter.bytesToChar((byte)20) == char1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIntToByte(){
|
||||
int int1 = 100; //100 in bytes
|
||||
byte[] bytes1 = {100, 0, 0, 0};//this is in little endian
|
||||
assertTrue(testArrayContents(ByteConverter.intToBytes(int1), bytes1));
|
||||
byte[] bytes2 = {0, 0, 0, 100};// this is big endian
|
||||
assertTrue(testArrayContents(ByteConverter.intToBytes(int1, ByteConverter.IntegerSize, ByteOrder.BIG_ENDIAN), bytes2));
|
||||
//test chopping
|
||||
byte[] chopped1 = ByteConverter.intToBytes(int1, 3, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes3 = {100, 0, 0};
|
||||
assertTrue(testArrayContents(chopped1, bytes3));
|
||||
byte[] chopped2 = ByteConverter.intToBytes(int1, 2, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes4 = {100, 0};
|
||||
assertTrue(testArrayContents(chopped2, bytes4));
|
||||
byte[] chopped3 = ByteConverter.intToBytes(int1, 1, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes5 = {100};
|
||||
assertTrue(testArrayContents(chopped3, bytes5));
|
||||
|
||||
byte[] chopped4 = ByteConverter.intToBytes(int1, 3, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes6 = {0, 0, 100};
|
||||
assertTrue(testArrayContents(chopped4, bytes6));
|
||||
byte[] chopped5 = ByteConverter.intToBytes(int1, 2, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes7 = {0, 100};
|
||||
assertTrue(testArrayContents(chopped5, bytes7));
|
||||
byte[] chopped6 = ByteConverter.intToBytes(int1, 1, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes8 = {100};
|
||||
assertTrue(testArrayContents(chopped6, bytes8));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLongToBytes(){
|
||||
long lng1 = 15; //100 in bytes
|
||||
byte[] bytes1 = {15, 0, 0, 0, 0, 0, 0, 0};//this is in little endian
|
||||
assertTrue(testArrayContents(ByteConverter.longToBytes(lng1), bytes1));
|
||||
byte[] bytes2 = {0, 0, 0, 0, 0, 0, 0, 15};// this is big endian
|
||||
assertTrue(testArrayContents(ByteConverter.longToBytes(lng1, ByteConverter.LongSize, ByteOrder.BIG_ENDIAN), bytes2));
|
||||
//test chopping
|
||||
byte[] chopped1 = ByteConverter.longToBytes(lng1, 3, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes3 = {15, 0, 0};
|
||||
assertTrue(testArrayContents(chopped1, bytes3));
|
||||
byte[] chopped2 = ByteConverter.longToBytes(lng1, 2, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes4 = {15, 0};
|
||||
assertTrue(testArrayContents(chopped2, bytes4));
|
||||
byte[] chopped3 = ByteConverter.longToBytes(lng1, 1, ByteOrder.LITTLE_ENDIAN);
|
||||
byte[] bytes5 = {15};
|
||||
assertTrue(testArrayContents(chopped3, bytes5));
|
||||
|
||||
byte[] chopped4 = ByteConverter.longToBytes(lng1, 3, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes6 = {0, 0, 15};
|
||||
assertTrue(testArrayContents(chopped4, bytes6));
|
||||
byte[] chopped5 = ByteConverter.longToBytes(lng1, 2, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes7 = {0, 15};
|
||||
assertTrue(testArrayContents(chopped5, bytes7));
|
||||
byte[] chopped6 = ByteConverter.longToBytes(lng1, 1, ByteOrder.BIG_ENDIAN);
|
||||
byte[] bytes8 = {15};
|
||||
assertTrue(testArrayContents(chopped6, bytes8));
|
||||
}
|
||||
|
||||
public boolean testArrayContents(byte[] bytes1, byte[] bytes2){
|
||||
if (bytes1.length != bytes2.length){
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < bytes1.length; i++){
|
||||
if (bytes1[i] != bytes2[i]){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
package seng302.Networking.MessageDecoders;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.Messages.BoatLocation;
|
||||
import seng302.Networking.MessageEncoders.RaceVisionByteEncoder;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hba56 on 23/04/17.
|
||||
*/
|
||||
public class BoatLocationDecoderTest {
|
||||
@Test
|
||||
public void getByteArrayTest(){
|
||||
long time = System.currentTimeMillis();
|
||||
BoatLocation testMessage = new BoatLocation((byte) 1, time, 2,
|
||||
3, (byte) 1, 180, -180, 4, 5,
|
||||
(short) 6, (short) 7, 8, 9, 10, 11,
|
||||
(short) 12, 13, 14 , (short) 15,
|
||||
16, 17, (short) 18);
|
||||
RaceVisionByteEncoder raceVisionByteEncoder = new RaceVisionByteEncoder();
|
||||
byte [] testEncodedMessage = raceVisionByteEncoder.boatLocation(testMessage);
|
||||
|
||||
BoatLocationDecoder testDecoder = new BoatLocationDecoder(testEncodedMessage);
|
||||
BoatLocation decodedTest = testDecoder.getMessage();
|
||||
|
||||
Assert.assertEquals(testMessage.getMessageVersionNumber(), decodedTest.getMessageVersionNumber());
|
||||
Assert.assertEquals(testMessage.getTime(), decodedTest.getTime());
|
||||
Assert.assertEquals(testMessage.getSequenceNumber(), decodedTest.getSequenceNumber());
|
||||
Assert.assertEquals(testMessage.getDeviceType(), decodedTest.getDeviceType());
|
||||
Assert.assertEquals(testMessage.getLatitude(), decodedTest.getLatitude());
|
||||
Assert.assertEquals(testMessage.getLongitude(), decodedTest.getLongitude());
|
||||
Assert.assertEquals(testMessage.getAltitude(), decodedTest.getAltitude());
|
||||
Assert.assertEquals(testMessage.getHeading(), decodedTest.getHeading());
|
||||
Assert.assertEquals(testMessage.getPitch(), decodedTest.getPitch());
|
||||
Assert.assertEquals(testMessage.getRoll(), decodedTest.getRoll());
|
||||
Assert.assertEquals(testMessage.getBoatSpeed(), decodedTest.getBoatSpeed());
|
||||
|
||||
Assert.assertEquals(testMessage.getBoatCOG(), decodedTest.getBoatCOG());
|
||||
Assert.assertEquals(testMessage.getBoatSOG(), decodedTest.getBoatSOG());
|
||||
Assert.assertEquals(testMessage.getApparentWindSpeed(), decodedTest.getApparentWindSpeed());
|
||||
Assert.assertEquals(testMessage.getTrueWindSpeed(), decodedTest.getTrueWindSpeed());
|
||||
Assert.assertEquals(testMessage.getTrueWindDirection(), decodedTest.getTrueWindDirection());
|
||||
Assert.assertEquals(testMessage.getTrueWindAngle(), decodedTest.getTrueWindAngle());
|
||||
Assert.assertEquals(testMessage.getCurrentDrift(), decodedTest.getCurrentDrift());
|
||||
Assert.assertEquals(testMessage.getCurrentSet(), decodedTest.getCurrentSet());
|
||||
Assert.assertEquals(testMessage.getRudderAngle(), decodedTest.getRudderAngle());
|
||||
}
|
||||
}
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
package seng302.Networking.MessageDecoders;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.Messages.CourseWind;
|
||||
import seng302.Networking.MessageEncoders.RaceVisionByteEncoder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hba56 on 23/04/17.
|
||||
*/
|
||||
public class CourseWindDecoderTest {
|
||||
@Test
|
||||
public void getByteArrayTest(){
|
||||
long time = System.currentTimeMillis();
|
||||
CourseWind testCourseWind1 = new CourseWind(1, time, 2,
|
||||
3, 4, 5,
|
||||
7, 6);
|
||||
|
||||
long time2 = System.currentTimeMillis();
|
||||
CourseWind testCourseWind2 = new CourseWind(2, time2, 2,
|
||||
3, 4, 5,
|
||||
7, 6);
|
||||
|
||||
ArrayList<CourseWind> testCourseWinds = new ArrayList<CourseWind>();
|
||||
testCourseWinds.add(testCourseWind1);
|
||||
testCourseWinds.add(testCourseWind2);
|
||||
|
||||
|
||||
RaceVisionByteEncoder raceVisionByteEncoder = new RaceVisionByteEncoder();
|
||||
|
||||
byte[] testEncodedCourseWind = raceVisionByteEncoder.courseWind((byte) 1, testCourseWinds);
|
||||
|
||||
CourseWindDecoder testDecoder = new CourseWindDecoder(testEncodedCourseWind);
|
||||
|
||||
ArrayList<CourseWind> testDecodedCourseWinds = testDecoder.getLoopMessages();
|
||||
|
||||
Assert.assertEquals(testCourseWinds.get(0).getID(), testDecodedCourseWinds.get(0).getID());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getTime(), testDecodedCourseWinds.get(0).getTime());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getRaceID(), testDecodedCourseWinds.get(0).getRaceID());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getWindDirection(), testDecodedCourseWinds.get(0).getWindDirection());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getWindSpeed(), testDecodedCourseWinds.get(0).getWindSpeed());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getBestUpwindAngle(), testDecodedCourseWinds.get(0).getBestUpwindAngle());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getBestDownwindAngle(), testDecodedCourseWinds.get(0).getBestDownwindAngle());
|
||||
Assert.assertEquals(testCourseWinds.get(0).getFlags(), testDecodedCourseWinds.get(0).getFlags());
|
||||
|
||||
Assert.assertEquals(testCourseWinds.get(1).getID(), testDecodedCourseWinds.get(1).getID());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getTime(), testDecodedCourseWinds.get(1).getTime());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getRaceID(), testDecodedCourseWinds.get(1).getRaceID());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getWindDirection(), testDecodedCourseWinds.get(1).getWindDirection());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getWindSpeed(), testDecodedCourseWinds.get(1).getWindSpeed());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getBestUpwindAngle(), testDecodedCourseWinds.get(1).getBestUpwindAngle());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getBestDownwindAngle(), testDecodedCourseWinds.get(1).getBestDownwindAngle());
|
||||
Assert.assertEquals(testCourseWinds.get(1).getFlags(), testDecodedCourseWinds.get(1).getFlags());
|
||||
|
||||
}
|
||||
}
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
package seng302.Networking.MessageDecoders;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.MessageEncoders.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());
|
||||
|
||||
}
|
||||
}
|
||||
-75
@@ -1,75 +0,0 @@
|
||||
package seng302.Networking.MessageDecoders;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.MessageEncoders.RaceVisionByteEncoder;
|
||||
import seng302.Networking.Messages.BoatStatus;
|
||||
import seng302.Networking.Messages.RaceStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by hba56 on 23/04/17.
|
||||
*/
|
||||
public class RaceStatusDecoderTest {
|
||||
@Test
|
||||
public void getByteArrayTest(){
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
//Create data to serialize.
|
||||
int boat1SourceID = 5;
|
||||
int boat2SourceID = 8;
|
||||
byte boat1Status = 2;
|
||||
byte boat2Status = 2;
|
||||
byte boat1LegNumber = 5;
|
||||
byte boat2LegNumber = 3;
|
||||
byte boat1PenaltiesAwarded = 4;
|
||||
byte boat2PenaltiesAwarded = 0;
|
||||
byte boat1PenaltiesServed = 2;
|
||||
byte boat2PenaltiesServed = 0;
|
||||
long boat1TimeAtNextMark = time + (1000 * 3);
|
||||
long boat2TimeAtNextMark = time + (1000 * 2);
|
||||
long boat1TimeAtFinish = boat1TimeAtNextMark + (1000 * 15);
|
||||
long boat2TimeAtFinish = boat2TimeAtNextMark + (1000 * 7);
|
||||
|
||||
BoatStatus boatStatus1 = new BoatStatus(boat1SourceID, boat1Status, boat1LegNumber, boat1PenaltiesAwarded, boat1PenaltiesServed, boat1TimeAtNextMark, boat1TimeAtFinish);
|
||||
BoatStatus boatStatus2 = new BoatStatus(boat2SourceID, boat2Status, boat2LegNumber, boat2PenaltiesAwarded, boat2PenaltiesServed, boat2TimeAtNextMark, boat2TimeAtFinish);
|
||||
|
||||
int raceID = 585;
|
||||
int raceStatus = 3;
|
||||
long raceStartTime = time - (1000 * 31);
|
||||
int windDirection = 2341;
|
||||
int windSpeed = 10201;
|
||||
int raceType = 1;
|
||||
ArrayList<BoatStatus> boatStatuses = new ArrayList<>(2);
|
||||
boatStatuses.add(boatStatus1);
|
||||
boatStatuses.add(boatStatus2);
|
||||
|
||||
RaceStatus raceStatusObject = new RaceStatus(time, raceID, raceStatus, raceStartTime, windDirection, windSpeed, raceType, boatStatuses);
|
||||
|
||||
|
||||
byte[] encodedRaceStatus = RaceVisionByteEncoder.raceStatus(raceStatusObject);
|
||||
|
||||
RaceStatusDecoder decoderTest = new RaceStatusDecoder(encodedRaceStatus);
|
||||
|
||||
Assert.assertEquals(0b10, decoderTest.getVersionNum());
|
||||
Assert.assertEquals(time, decoderTest.getTime());
|
||||
Assert.assertEquals(raceID, decoderTest.getRace());
|
||||
Assert.assertEquals(raceStatus, decoderTest.getRaceState());
|
||||
Assert.assertEquals(raceStartTime, decoderTest.getStartTime());
|
||||
Assert.assertEquals(windDirection, decoderTest.getRaceWindDir());
|
||||
Assert.assertEquals(windSpeed, decoderTest.getRaceWindSpeed());
|
||||
|
||||
|
||||
BoatStatus boat1 = decoderTest.getBoats().get(0);
|
||||
|
||||
Assert.assertEquals(boat1SourceID, boat1.getSourceID());
|
||||
Assert.assertEquals(boat1Status, boat1.getBoatStatus());
|
||||
Assert.assertEquals(boat1LegNumber, boat1.getLegNumber());
|
||||
Assert.assertEquals(boat1PenaltiesAwarded, boat1.getNumPenaltiesAwarded());
|
||||
Assert.assertEquals(boat1PenaltiesServed, boat1.getNumPenaltiesServed());
|
||||
Assert.assertEquals(boat1TimeAtNextMark, boat1.getEstTimeAtNextMark());
|
||||
Assert.assertEquals(boat1TimeAtFinish, boat1.getEstTimeAtFinish());
|
||||
|
||||
}
|
||||
}
|
||||
-46
@@ -1,46 +0,0 @@
|
||||
package seng302.Networking.MessageDecoders;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.MessageEncoders.XMLMessageEncoder;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
/**
|
||||
* Created by hba56 on 20/04/17.
|
||||
*/
|
||||
public class XMLMessageDecoderTest {
|
||||
@Test
|
||||
public void getByteArrayTest(){
|
||||
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[] encodedXML = testEncoder.encode();
|
||||
|
||||
XMLMessageDecoder decoderXML = new XMLMessageDecoder(encodedXML);
|
||||
decoderXML.decode();
|
||||
|
||||
|
||||
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());
|
||||
|
||||
}catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package seng302.Networking;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import seng302.Networking.MessageEncoders.XMLMessageEncoder;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* Created by hba56 on 19/04/17.
|
||||
*/
|
||||
public class XMLMessageEncoderTest {
|
||||
@Test
|
||||
public void getByteArrayTest(){
|
||||
StringBuilder xmlString;
|
||||
try{
|
||||
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());
|
||||
}
|
||||
XMLMessageEncoder testEncoder = new XMLMessageEncoder((short)1, System.currentTimeMillis(), (byte)7, (short)1, (short)xmlString.length(), xmlString.toString());
|
||||
|
||||
byte[] encodedXML = testEncoder.encode();
|
||||
|
||||
//1 + 2 + 6 + 1 + 2 + 2 + 374
|
||||
Assert.assertEquals(388, encodedXML.length);
|
||||
}catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getByteArrayNullTest(){
|
||||
StringBuilder xmlString;
|
||||
try{
|
||||
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());
|
||||
}
|
||||
XMLMessageEncoder testEncoder = new XMLMessageEncoder((short)1, System.currentTimeMillis(), (byte)7, (short)1, (short)1, xmlString.toString());
|
||||
|
||||
byte[] encodedXML = testEncoder.encode();
|
||||
|
||||
Assert.assertEquals(null, encodedXML);
|
||||
}catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<RegattaConfig>
|
||||
<RegattaID>1</RegattaID>
|
||||
<RegattaName>Seng302 Mock Test</RegattaName>
|
||||
<CourseName>Bermuda AC35</CourseName>
|
||||
<CentralLatitude>-32.296577</CentralLatitude>
|
||||
<CentralLongitude>64.854304</CentralLongitude>
|
||||
<CentralAltitude>0.00</CentralAltitude>
|
||||
<UtcOffset>-4</UtcOffset>
|
||||
<MagneticVariation>-14.78</MagneticVariation>
|
||||
</RegattaConfig>
|
||||
Reference in New Issue
Block a user