74 lines
2.1 KiB
Java
74 lines
2.1 KiB
Java
package gov.nasa.xpc.test;
|
|
|
|
import static org.junit.Assert.*;
|
|
|
|
import gov.nasa.xpc.discovery.Beacon;
|
|
import gov.nasa.xpc.discovery.BeaconParser;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
import java.io.IOException;
|
|
import java.net.DatagramPacket;
|
|
|
|
|
|
public class XPlaneDiscoveryTests {
|
|
|
|
private BeaconParser parser;
|
|
private DatagramPacket packet;
|
|
|
|
@Before
|
|
public void setup() {
|
|
parser = new BeaconParser();
|
|
byte[] bytes = HexHelper.decodeHexString("4245434E0071BFFC2B0000312E332D72632E310000000000000000");
|
|
packet = new DatagramPacket(bytes, 0, bytes.length);
|
|
}
|
|
|
|
@Test
|
|
public void readBeaconParsesPort() throws IOException {
|
|
Beacon beacon = parser.readBCN(packet);
|
|
assertEquals(beacon.getPluginPort(), 49009);
|
|
}
|
|
|
|
@Test
|
|
public void readBeaconParsesXplaneVersion() throws IOException {
|
|
Beacon beacon = parser.readBCN(packet);
|
|
assertEquals(beacon.getXplaneVersion(), "112.60");
|
|
|
|
}
|
|
|
|
@Test
|
|
public void readBeaconParsesPluginVersion() throws IOException {
|
|
Beacon beacon = parser.readBCN(packet);
|
|
assertEquals(beacon.getPluginVersion(), "1.3-rc.1");
|
|
}
|
|
}
|
|
|
|
class HexHelper {
|
|
static byte[] decodeHexString(String hexString) {
|
|
if (hexString.length() % 2 == 1) {
|
|
throw new IllegalArgumentException("Invalid hexadecimal String supplied.");
|
|
}
|
|
|
|
byte[] bytes = new byte[hexString.length() / 2];
|
|
for (int i = 0; i < hexString.length(); i += 2) {
|
|
bytes[i / 2] = hexToByte(hexString.substring(i, i + 2));
|
|
}
|
|
return bytes;
|
|
}
|
|
|
|
private static byte hexToByte(String hexString) {
|
|
int firstDigit = toDigit(hexString.charAt(0));
|
|
int secondDigit = toDigit(hexString.charAt(1));
|
|
return (byte) ((firstDigit << 4) + secondDigit);
|
|
}
|
|
|
|
private static int toDigit(char hexChar) {
|
|
int digit = Character.digit(hexChar, 16);
|
|
if (digit == -1) {
|
|
throw new IllegalArgumentException(
|
|
"Invalid Hexadecimal Character: " + hexChar);
|
|
}
|
|
return digit;
|
|
}
|
|
}
|