sendPOSI command change (double for lat/lon/h) (#111)
* Updated POSI to use doubles for lat/lon/alt, as step size for floats was unacceptably large at high longitudes.
This commit is contained in:
committed by
Jason Watkins
parent
48656f2b4c
commit
0e493920fa
@@ -23,7 +23,7 @@ int doCTRLTest(XPCSocket *sock, char* drefs[7], float values[], int size, int ac
|
||||
{
|
||||
result = getDREFs(*sock, drefs, data, 7, sizes);
|
||||
}
|
||||
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
return -1;
|
||||
@@ -102,7 +102,7 @@ int basicCTRLTest(char** drefs, int ac)
|
||||
CTRL[4] = -998;
|
||||
CTRL[5] = -998;
|
||||
result = doCTRLTest(&sock, drefs, CTRL, 6, ac, expected);
|
||||
|
||||
|
||||
pauseSim(sock, 0);
|
||||
closeUDP(sock);
|
||||
if (result < 0)
|
||||
|
||||
@@ -244,4 +244,4 @@ int testDREF()
|
||||
return doDREFTest(drefs, values, expected, 6, sizes);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "Test.h"
|
||||
#include "xplaneConnect.h"
|
||||
|
||||
int doPOSITest(char* drefs[7], float values[], int size, int ac, float expected[7])
|
||||
int doPOSITest(char* drefs[7], double values[], int size, int ac, double expected[7])
|
||||
{
|
||||
float* data[7];
|
||||
int sizes[7];
|
||||
@@ -32,15 +32,15 @@ int doPOSITest(char* drefs[7], float values[], int size, int ac, float expected[
|
||||
}
|
||||
|
||||
// Test values
|
||||
float actual[7];
|
||||
double actual[7];
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
actual[i] = data[i][0];
|
||||
}
|
||||
return compareArray(expected, actual, 7);
|
||||
return compareDoubleArray(expected, actual, 7);
|
||||
}
|
||||
|
||||
int doGETPTest(float values[7], int ac, float expected[7])
|
||||
int doGETPTest(double values[7], int ac, double expected[7])
|
||||
{
|
||||
// Execute Test
|
||||
float actual[7];
|
||||
@@ -70,8 +70,8 @@ int doGETPTest(float values[7], int ac, float expected[7])
|
||||
int basicPOSITest(char** drefs, int ac)
|
||||
{
|
||||
// Set psoition and initial orientation
|
||||
float POSI[7] = { 37.524F, -122.06899F, 2500, 0, 0, 0, 1 };
|
||||
float expected[7] = { 37.524F, -122.06899F, 2500, 0, 0, 0, 1 };
|
||||
double POSI[7] = { 37.524, -122.06899, 2500, 0, 0, 0, 1 };
|
||||
double expected[7] = { 37.524, -122.06899, 2500, 0, 0, 0, 1 };
|
||||
int result = doPOSITest(drefs, POSI, 7, ac, expected);
|
||||
if (result < 0)
|
||||
{
|
||||
@@ -79,9 +79,9 @@ int basicPOSITest(char** drefs, int ac)
|
||||
}
|
||||
|
||||
// Set orientation
|
||||
POSI[0] = -998.0F;
|
||||
POSI[1] = -998.0F;
|
||||
POSI[2] = -998.0F;
|
||||
POSI[0] = -998.0;
|
||||
POSI[1] = -998.0;
|
||||
POSI[2] = -998.0;
|
||||
POSI[3] = 5.0F;
|
||||
POSI[4] = -5.0F;
|
||||
POSI[5] = 10.0F;
|
||||
@@ -101,10 +101,10 @@ int basicPOSITest(char** drefs, int ac)
|
||||
expected[0] = loc[0][0];
|
||||
expected[1] = loc[1][0];
|
||||
expected[2] = loc[2][0];
|
||||
expected[3] = 5.0F;
|
||||
expected[4] = -5.0F;
|
||||
expected[5] = 10.0F;
|
||||
expected[6] = 0.0F;
|
||||
expected[3] = 5.0;
|
||||
expected[4] = -5.0;
|
||||
expected[5] = 10.0;
|
||||
expected[6] = 0.0;
|
||||
result = doPOSITest(drefs, POSI, 7, ac, expected);
|
||||
if (result < 0)
|
||||
{
|
||||
@@ -145,14 +145,14 @@ int testPOSI_NonPlayer()
|
||||
|
||||
int testGetPOSI_Player()
|
||||
{
|
||||
float POSI[7] = { 37.524F, -122.06899F, 2500, 0, 0, 0, 1 };
|
||||
double POSI[7] = { 37.524, -122.06899, 2500, 0, 0, 0, 1 };
|
||||
return doGETPTest(POSI, 0, POSI);
|
||||
}
|
||||
|
||||
int testGetPOSI_NonPlayer()
|
||||
{
|
||||
float POSI[7] = { 37.624F, -122.06899F, 1500, 0, 0, 0, 1 };
|
||||
double POSI[7] = { 37.624, -122.06899, 1500, 0, 0, 0, 1 };
|
||||
return doGETPTest(POSI, 3, POSI);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -16,7 +16,7 @@ int doSIMUTest(int value, float expected)
|
||||
int result = pauseSim(sock, value);
|
||||
if (result >= 0)
|
||||
{
|
||||
result = getDREF(sock, dref, &actual, &size);
|
||||
result = getDREF(sock, dref, actual, &size);
|
||||
}
|
||||
closeUDP(sock);
|
||||
if (result < 0)
|
||||
@@ -78,4 +78,4 @@ int testSIMU_Toggle()
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -56,4 +56,28 @@ int compareArrays(float* expected[], int esizes[], float* actual[], int asizes[]
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int compareDoubleArray(double expected[], double actual[], int size)
|
||||
{
|
||||
return compareDoubleArrays(&expected, &size, &actual, &size, 1);
|
||||
}
|
||||
|
||||
int compareDoubleArrays(double* expected[], int esizes[], double* actual[], int asizes[], int count)
|
||||
{
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
if (esizes[i] != asizes[i])
|
||||
{
|
||||
return -100 - i;
|
||||
}
|
||||
for (int j = 0; j < esizes[i]; ++j)
|
||||
{
|
||||
if (!feq(actual[i][j], expected[i][j]) && !isnan(expected[i][j]))
|
||||
{
|
||||
return -1000 - i * 100 - j;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -33,5 +33,7 @@ void runTest(int(*test)(), char* name);
|
||||
int compareFloat(float expected, float actual);
|
||||
int compareArray(float expected[], float actual[], int size);
|
||||
int compareArrays(float* expected[], int esizes[], float* actual[], int asizes[], int count);
|
||||
int compareDoubleArray(double expected[], double actual[], int size);
|
||||
int compareDoubleArrays(double* expected[], int esizes[], double* actual[], int asizes[], int count);
|
||||
|
||||
#endif
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
printf("XPC Tests-c ");
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
printf("(Windows)\n");
|
||||
#elif (__APPLE__)
|
||||
@@ -23,7 +23,7 @@ int main(int argc, const char * argv[]) {
|
||||
#else
|
||||
printf("(Unable to determine operating system) \n")
|
||||
#endif
|
||||
|
||||
|
||||
// Basic Networking
|
||||
runTest(testOpen, "open");
|
||||
crossPlatformUSleep(SLEEP_AMOUNT);
|
||||
@@ -78,11 +78,11 @@ int main(int argc, const char * argv[]) {
|
||||
// setConn
|
||||
crossPlatformUSleep(SLEEP_AMOUNT);
|
||||
runTest(testCONN, "CONN");
|
||||
|
||||
|
||||
printf( "----------------\nTest Summary\n\tFailed: %i\n\tPassed: %i\n", testFailed, testPassed );
|
||||
printf("Press any key to exit.");
|
||||
getchar();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user