Updated C client unit tests.
- openTest now validates that "localhost" resolves to "127.0.0.1". - sendTEXTTest now sets and clears text. Note that since there is no way to externally verify the result of a TEXT command, the user must now step through this test using the debugger to fully verify functionality. - requestDREFTest renamed to getDREFTest. - getDREFTest now gets one dataref of each type except multidimensional arrays. - sendDREFTest now sets one dataref of each type except mulidimensional arrays. - sendDREFTest now attempts to set a read-only dataref. Need to work out how to test the result of this effectively. - psendCTRLTest & sendCTRLTest now test multiple values, default values and sending only some parameters. - Added psendPOSITest. - psendPOSITest & sendPOSIest now test multiple values, default values and sending only some parameters. - sendWYPTTest now clears waypoints before setting them.
This commit is contained in:
@@ -34,9 +34,10 @@ void runTest(int (*test)(), char* name)
|
|||||||
|
|
||||||
int openTest() // openUDP Test
|
int openTest() // openUDP Test
|
||||||
{
|
{
|
||||||
XPCSocket sock = openUDP("127.0.0.1", 49009, 49062);
|
XPCSocket sock = openUDP("localhost", 49009, 49062);
|
||||||
|
int result = strncmp(sock.xpIP, "127.0.0.1", 16);
|
||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
return 0;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int closeTest() // closeUDP test
|
int closeTest() // closeUDP test
|
||||||
@@ -82,93 +83,220 @@ int sendTEXTTest()
|
|||||||
XPCSocket sendPort = openUDP("127.0.0.1", 49009, 49064);
|
XPCSocket sendPort = openUDP("127.0.0.1", 49009, 49064);
|
||||||
int x = 100;
|
int x = 100;
|
||||||
int y = 700;
|
int y = 700;
|
||||||
char* msg = "XPlaneConnect test message. Now with 100% fewer new lines!";
|
char* msg = "This is an X-Plane Connect test message.\nThis should be a new line.\r\nThat will be parsed as two line breaks.";
|
||||||
|
|
||||||
// Test
|
// Test
|
||||||
sendTEXT(sendPort, msg, x, y);
|
sendTEXT(sendPort, msg, x, y);
|
||||||
// NOTE: Manually verify that msg appears on the screen in X-Plane!
|
// NOTE: Manually verify that msg appears on the screen in X-Plane!
|
||||||
|
|
||||||
|
sendTEXT(sendPort, "Another test message", x, y);
|
||||||
|
// NOTE: Manually verify that msg appears on the screen and that no part of the previous
|
||||||
|
// message is visible.
|
||||||
|
|
||||||
|
sendTEXT(sendPort, NULL, -1, -1);
|
||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
closeUDP(sendPort);
|
closeUDP(sendPort);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int requestDREFTest() // Request DREF Test (Required for next tests)
|
int getDREFTest() // Request DREF Test (Required for next tests)
|
||||||
{
|
{
|
||||||
// Initialization
|
// Initialization
|
||||||
char* drefs[100] =
|
// Get one DREF of each type (int, float, int[], float[], double, byte[])
|
||||||
|
#define COUNT 6
|
||||||
|
char* drefs[COUNT] =
|
||||||
{
|
{
|
||||||
"sim/cockpit/switches/gear_handle_status",
|
"sim/cockpit/switches/gear_handle_status", //int
|
||||||
"sim/cockpit2/switches/panel_brightness_ratio"
|
"sim/cockpit/autopilot/altitude", //float
|
||||||
|
"sim/aircraft/prop/acf_prop_type", //int[8]
|
||||||
|
"sim/cockpit2/switches/panel_brightness_ratio", //float[4]
|
||||||
|
"sim/aircraft/view/acf_tailnum", //byte[40]
|
||||||
|
"sim/flightmodel/position/elevation" //double
|
||||||
};
|
};
|
||||||
float* data[100];
|
float* data[COUNT];
|
||||||
int sizes[100];
|
int sizes[COUNT];
|
||||||
XPCSocket sock = openUDP("127.0.0.1", 49009, 49064);
|
XPCSocket sock = openUDP("127.0.0.1", 49009, 49064);
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
for (int i = 0; i < 100; ++i)
|
for (int i = 0; i < COUNT; ++i)
|
||||||
{
|
{
|
||||||
data[i] = (float*)malloc(40 * sizeof(float));
|
data[i] = (float*)malloc(40 * sizeof(float));
|
||||||
sizes[i] = 40;
|
sizes[i] = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execution
|
// Execution
|
||||||
int result = getDREFs(sock, drefs, data, 2, sizes);
|
int result = getDREFs(sock, drefs, data, COUNT, sizes);
|
||||||
|
|
||||||
// Close
|
// Close
|
||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
if ( result < 0)// Request 2 values
|
// Should get back the number of values we requested.
|
||||||
|
if (result != COUNT)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sizes[0] != 1 || sizes[1] != 4)
|
// Verify sizes
|
||||||
|
if (sizes[0] != 1 || sizes[1] != 1 || sizes[2] != 8
|
||||||
|
|| sizes[3] != 4 || sizes[4] != 40 || sizes[5] != 1)
|
||||||
{
|
{
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
// Verify integer drefs are integers
|
||||||
|
if ((float)((int)data[0][0]) != data[0][0])
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 8; ++i)
|
||||||
|
{
|
||||||
|
if ((float)((int)data[2][i]) != data[2][i])
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 40; ++i)
|
||||||
|
{
|
||||||
|
if ((float)((char)data[4][i]) != data[4][i])
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Verify tail number has at least one valid character
|
||||||
|
if (data[4][0] <= 0 || data[4][0] > 127)
|
||||||
|
{
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sendDREFTest() // sendDREF test
|
int sendDREFTest() // sendDREF test
|
||||||
{
|
{
|
||||||
// Initialization
|
// Initialization
|
||||||
char* drefs[100] =
|
// Set one DREF of each type (int, float, int[], float[], double, byte[])
|
||||||
|
// Also set one read-only to make sure it fails
|
||||||
|
#define COUNT 7
|
||||||
|
char* drefs[COUNT] =
|
||||||
{
|
{
|
||||||
"sim/cockpit/switches/gear_handle_status"
|
"sim/cockpit/switches/gear_handle_status", //int
|
||||||
|
"sim/cockpit/autopilot/altitude", //float
|
||||||
|
"sim/aircraft/prop/acf_prop_type", //int[8]
|
||||||
|
"sim/cockpit2/switches/panel_brightness_ratio", //float[4]
|
||||||
|
"sim/aircraft/view/acf_tailnum", //byte[40]
|
||||||
|
"sim/flightmodel/position/elevation" //double
|
||||||
|
"sim/cockpit/radios/nav type" //int[6] - Read only
|
||||||
};
|
};
|
||||||
float* data[100];
|
float* data[COUNT];
|
||||||
int sizes[100];
|
int sizes[COUNT];
|
||||||
XPCSocket sock = openUDP("127.0.0.1", 49009, 49066);
|
XPCSocket sock = aopenUDP("127.0.0.1", 49009);
|
||||||
float value = 1.0F;
|
float* values[COUNT];
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
for (int i = 0; i < 100; ++i)
|
sizes[0] = 1;
|
||||||
|
values[0] = (float*)malloc(sizes[0] * sizeof(float));
|
||||||
|
data[0] = (float*)malloc(sizes[0] * sizeof(float));
|
||||||
|
values[0][0] = 1;
|
||||||
|
|
||||||
|
sizes[1] = 1;
|
||||||
|
values[1] = (float*)malloc(sizes[1] * sizeof(float));
|
||||||
|
data[1] = (float*)malloc(sizes[1] * sizeof(float));
|
||||||
|
values[1][0] = 4000.0F;
|
||||||
|
|
||||||
|
sizes[2] = 8;
|
||||||
|
values[2] = (float*)malloc(sizes[2] * sizeof(float));
|
||||||
|
data[2] = (float*)malloc(sizes[2] * sizeof(float));
|
||||||
|
for (int i = 0; i < 8; ++i)
|
||||||
{
|
{
|
||||||
data[i] = (float*)malloc(40 * sizeof(float));
|
values[2][i] = 0;
|
||||||
sizes[i] = 40;
|
}
|
||||||
|
|
||||||
|
sizes[3] = 4;
|
||||||
|
values[3] = (float*)malloc(sizes[3] * sizeof(float));
|
||||||
|
data[3] = (float*)malloc(sizes[3] * sizeof(float));
|
||||||
|
for (int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
values[3][i] = 0.25F;
|
||||||
|
}
|
||||||
|
|
||||||
|
sizes[4] = 40;
|
||||||
|
values[4] = (float*)malloc(sizes[4] * sizeof(float));
|
||||||
|
data[4] = (float*)malloc(sizes[4] * sizeof(float));
|
||||||
|
values[0] = 78; //N
|
||||||
|
values[1] = 55; //7
|
||||||
|
values[2] = 52; //4
|
||||||
|
values[3] = 56; //8
|
||||||
|
values[4] = 53; //5
|
||||||
|
values[5] = 89; //Y
|
||||||
|
|
||||||
|
sizes[5] = 1;
|
||||||
|
values[5] = (float*)malloc(sizes[5] * sizeof(float));
|
||||||
|
data[5] = (float*)malloc(sizes[5] * sizeof(float));
|
||||||
|
values[5][0] = 5000.0F;
|
||||||
|
|
||||||
|
sizes[6] = 6;
|
||||||
|
values[6] = (float*)malloc(sizes[6] * sizeof(float));
|
||||||
|
data[6] = (float*)malloc(sizes[6] * sizeof(float));
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
values[6][i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execution
|
// Execution
|
||||||
sendDREF(sock, drefs[0], &value, 1);
|
for (int i = 0; i < COUNT; ++i)
|
||||||
int result = getDREFs(sock, drefs, data, 1, sizes);
|
{
|
||||||
|
sendDREF(sock, drefs[i], values[i], sizes[i]);
|
||||||
|
}
|
||||||
|
int result = getDREFs(sock, drefs, data, COUNT, sizes);
|
||||||
|
|
||||||
// Close
|
// Close
|
||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
if (result < 0)// Request 1 value
|
// Should get back as many values as we requested
|
||||||
|
if (result != COUNT)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sizes[0] != 1)
|
// Verify gear handle was set
|
||||||
{
|
if (sizes[0] != 1 || data[0][0] != 1)
|
||||||
return -2;
|
{
|
||||||
}
|
return -2;
|
||||||
if (data[0][0] != value)
|
|
||||||
{
|
|
||||||
return -3;
|
|
||||||
}
|
}
|
||||||
|
// Verify autopilot altitude was set
|
||||||
|
if (sizes[1] != 1 || data[1][0] != 4000.0F)
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
// Verify prop type was set
|
||||||
|
if (sizes[2] != 8)
|
||||||
|
{
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 8; ++i)
|
||||||
|
{
|
||||||
|
if (data[2][i] != values[2][i])
|
||||||
|
{
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Verify panel brightness was set
|
||||||
|
if (sizes[3] != 4)
|
||||||
|
{
|
||||||
|
return -5;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
if (data[3][i] != values[3][i])
|
||||||
|
{
|
||||||
|
return -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Verify aircraft elevation was set
|
||||||
|
if (sizes[4] != 1 || data[4][0] != 5000.0F)
|
||||||
|
{
|
||||||
|
return -6;
|
||||||
|
}
|
||||||
|
// TODO: Verify that read-only dref was not set.
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,7 +377,33 @@ int psendCTRLTest() // sendCTRL test
|
|||||||
sizes[i] = 40;
|
sizes[i] = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute
|
// Execute 1
|
||||||
|
// 0 pitch, roll, yaw
|
||||||
|
psendCTRL(sock, CTRL, 3);
|
||||||
|
int result = getDREFs(sock, drefs, data, 6, sizes);
|
||||||
|
|
||||||
|
// Close socket
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 6)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - CTRL[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
// Execute 2
|
||||||
|
// Set non-zero pitch, roll, & yaw. Also set throttle, gear, and flaps
|
||||||
|
CTRL[0] = 0.2F;
|
||||||
|
CTRL[1] = 0.1F;
|
||||||
|
CTRL[2] = 0.1F;
|
||||||
psendCTRL(sock, CTRL, 6);
|
psendCTRL(sock, CTRL, 6);
|
||||||
int result = getDREFs(sock, drefs, data, 6, sizes);
|
int result = getDREFs(sock, drefs, data, 6, sizes);
|
||||||
|
|
||||||
@@ -257,15 +411,40 @@ int psendCTRLTest() // sendCTRL test
|
|||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
if (result < 0)// Request 1 value
|
if (result != 6)
|
||||||
{
|
{
|
||||||
return -6;
|
return -2;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
if (fabs(data[i][0] - CTRL[i]) > 1e-4)
|
if (fabs(data[i][0] - CTRL[i]) > 1e-4)
|
||||||
{
|
{
|
||||||
return -i - 1;
|
return -i - 21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
// Execute 2
|
||||||
|
// Set non-zero pitch, roll, & yaw. Also set throttle, gear, and flaps
|
||||||
|
CTRL[0] = -998.0F;
|
||||||
|
CTRL[1] = -998.0F;
|
||||||
|
CTRL[2] = -998.0F;
|
||||||
|
psendCTRL(sock, CTRL, 6);
|
||||||
|
int result = getDREFs(sock, drefs, data, 6, sizes);
|
||||||
|
|
||||||
|
// Close socket
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 6)
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - CTRL[i]) > 1e-2)
|
||||||
|
{
|
||||||
|
return -i - 31;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,7 +475,33 @@ int sendCTRLTest()
|
|||||||
sizes[i] = 40;
|
sizes[i] = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute
|
// Execute 1
|
||||||
|
// 0 pitch, roll, yaw
|
||||||
|
sendCTRL(sock, CTRL, 3, 1);
|
||||||
|
int result = getDREFs(sock, drefs, data, 6, sizes);
|
||||||
|
|
||||||
|
// Close socket
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 6)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - CTRL[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
// Execute 2
|
||||||
|
// Set non-zero pitch, roll, & yaw. Also set throttle, gear, and flaps
|
||||||
|
CTRL[0] = 0.2F;
|
||||||
|
CTRL[1] = 0.1F;
|
||||||
|
CTRL[2] = 0.1F;
|
||||||
sendCTRL(sock, CTRL, 6, 1);
|
sendCTRL(sock, CTRL, 6, 1);
|
||||||
int result = getDREFs(sock, drefs, data, 6, sizes);
|
int result = getDREFs(sock, drefs, data, 6, sizes);
|
||||||
|
|
||||||
@@ -304,25 +509,50 @@ int sendCTRLTest()
|
|||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
if (result < 0)// Request 1 value
|
if (result != 6)
|
||||||
{
|
{
|
||||||
return -6;
|
return -2;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
if (fabs(data[i][0] - CTRL[i]) > 1e-4)
|
if (fabs(data[i][0] - CTRL[i]) > 1e-4)
|
||||||
{
|
{
|
||||||
return -i - 1;
|
return -i - 21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
// Execute 2
|
||||||
|
// Set non-zero pitch, roll, & yaw. Also set throttle, gear, and flaps
|
||||||
|
CTRL[0] = -998.0F;
|
||||||
|
CTRL[1] = -998.0F;
|
||||||
|
CTRL[2] = -998.0F;
|
||||||
|
sendCTRL(sock, CTRL, 6, 1);
|
||||||
|
int result = getDREFs(sock, drefs, data, 6, sizes);
|
||||||
|
|
||||||
|
// Close socket
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 6)
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - CTRL[i]) > 1e-2)
|
||||||
|
{
|
||||||
|
return -i - 31;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sendPOSITest() // sendPOSI test
|
int psendPOSITest() // sendPOSI test
|
||||||
{
|
{
|
||||||
// Initialization
|
// Initialization
|
||||||
int i; // Iterator
|
int i; // Iterator
|
||||||
char* drefs[100] =
|
char* drefs[100] =
|
||||||
{
|
{
|
||||||
"sim/flightmodel/position/latitude",
|
"sim/flightmodel/position/latitude",
|
||||||
@@ -335,42 +565,263 @@ int sendPOSITest() // sendPOSI test
|
|||||||
};
|
};
|
||||||
float* data[100];
|
float* data[100];
|
||||||
int sizes[100];
|
int sizes[100];
|
||||||
float POSI[8] = { 37.524F, -122.06899F, 2500, 0, 0, 0, 1 };
|
float POSI[7] = { 37.524F, -122.06899F, 2500, 0, 0, 0, 1 };
|
||||||
XPCSocket sock = openUDP("127.0.0.1", 49009, 49063);
|
XPCSocket sock = openUDP("127.0.0.1", 49009, 49063);
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
for (i = 0; i < 100; i++)
|
for (i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
data[i] = (float*)malloc(40 * sizeof(float));
|
data[i] = (float*)malloc(40 * sizeof(float));
|
||||||
sizes[i] = 40;
|
sizes[i] = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execution
|
// Execution 1
|
||||||
sendPOSI(sock, POSI, 7, 0);
|
pauseSim(sock, 1);
|
||||||
int result = getDREFs(sock, drefs, data, 7, sizes);
|
psendPOSI(sock, POSI, 7);
|
||||||
|
int result = getDREFs(sock, drefs, data, 7, sizes);
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
|
||||||
// Close
|
// Close
|
||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
if ( result < 0 )// Request 1 value
|
if (result != 7)// Request 1 value
|
||||||
{
|
{
|
||||||
return -7;
|
return -1;
|
||||||
}
|
}
|
||||||
for (i=0;i<7-1;i++)
|
for (i = 0; i < 7; ++i)
|
||||||
{
|
{
|
||||||
if (i == 2)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
||||||
{
|
{
|
||||||
return -i;
|
return -i - 11;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setup 2
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
POSI[0] = -998.0F;
|
||||||
|
POSI[1] = -998.0F;
|
||||||
|
POSI[2] = -998.0F;
|
||||||
|
POSI[3] = 5.0F;
|
||||||
|
POSI[4] = -5.0F;
|
||||||
|
POSI[5] = 10.0F;
|
||||||
|
POSI[6] = 0;
|
||||||
|
|
||||||
return 0;
|
// Execution 2
|
||||||
|
pauseSim(sock, 1);
|
||||||
|
float loc[3];
|
||||||
|
getDREFs(sock, drefs, loc, 3, sizes);
|
||||||
|
psendPOSI(sock, POSI, 7);
|
||||||
|
int result = getDREFs(sock, drefs, data, 7, sizes);
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
|
||||||
|
// Close
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 7)
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
// Compare position to make sure they weren't set
|
||||||
|
for (int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
// Note: Because the sim was paused when both of these were read, we really do expect *exactly*
|
||||||
|
// the same value even though we are comparing floats.
|
||||||
|
if (data[i][0] != loc[i])
|
||||||
|
{
|
||||||
|
return -i - 21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Compare everything else.
|
||||||
|
for (i = 3; i < 7; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup 3
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
POSI[0] = 37.524F;
|
||||||
|
POSI[1] = -122.06899;
|
||||||
|
POSI[2] = 20000;
|
||||||
|
POSI[3] = 15.0F;
|
||||||
|
POSI[4] = -25.0F;
|
||||||
|
POSI[5] = -10.0F;
|
||||||
|
POSI[6] = 1;
|
||||||
|
|
||||||
|
// Execution 2
|
||||||
|
pauseSim(sock, 1);
|
||||||
|
psendPOSI(sock, POSI, 3);
|
||||||
|
int result = getDREFs(sock, drefs, data, 7, sizes);
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
|
||||||
|
// Close
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 7)
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
// Compare position to make sure it was set.
|
||||||
|
for (int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Compare everything else to make sure it *wasn't*.
|
||||||
|
for (i = 3; i < 7; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) < 1)
|
||||||
|
{
|
||||||
|
return -i - 31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sendPOSITest() // sendPOSI test
|
||||||
|
{
|
||||||
|
// Initialization
|
||||||
|
int i; // Iterator
|
||||||
|
char* drefs[100] =
|
||||||
|
{
|
||||||
|
// TODO: Can't get global position for multiplayer a/c?
|
||||||
|
"sim/flightmodel/position/latitude",
|
||||||
|
"sim/flightmodel/position/longitude",
|
||||||
|
"sim/flightmodel/position/y_agl",
|
||||||
|
"sim/multiplayer/position/plane1_phi",
|
||||||
|
"sim/multiplayer/position/plane1_the",
|
||||||
|
"sim/multiplayer/position/plane1_psi",
|
||||||
|
"sim/multiplayer/position/plane1_gear_deploy"
|
||||||
|
};
|
||||||
|
float* data[100];
|
||||||
|
int sizes[100];
|
||||||
|
float POSI[7] = { 37.524F, -122.06899F, 2500, 0, 0, 0, 1 };
|
||||||
|
XPCSocket sock = openUDP("127.0.0.1", 49009, 49063);
|
||||||
|
|
||||||
|
// Setup
|
||||||
|
for (i = 0; i < 100; i++)
|
||||||
|
{
|
||||||
|
data[i] = (float*)malloc(40 * sizeof(float));
|
||||||
|
sizes[i] = 40;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Execution 1
|
||||||
|
pauseSim(sock, 1);
|
||||||
|
sendPOSI(sock, POSI, 7, 0);
|
||||||
|
int result = getDREFs(sock, drefs, data, 7, sizes);
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
|
||||||
|
// Close
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 7)// Request 1 value
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 7; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup 2
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
POSI[0] = -998.0F;
|
||||||
|
POSI[1] = -998.0F;
|
||||||
|
POSI[2] = -998.0F;
|
||||||
|
POSI[3] = 5.0F;
|
||||||
|
POSI[4] = -5.0F;
|
||||||
|
POSI[5] = 10.0F;
|
||||||
|
POSI[6] = 0;
|
||||||
|
|
||||||
|
// Execution 2
|
||||||
|
pauseSim(sock, 1);
|
||||||
|
float loc[3];
|
||||||
|
getDREFs(sock, drefs, loc, 3, sizes);
|
||||||
|
sendPOSI(sock, POSI, 7, 0);
|
||||||
|
int result = getDREFs(sock, drefs, data, 7, sizes);
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
|
||||||
|
// Close
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 7)
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
// Compare position to make sure they weren't set
|
||||||
|
for (int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
// Note: Because the sim was paused when both of these were read, we really do expect *exactly*
|
||||||
|
// the same value even though we are comparing floats.
|
||||||
|
if (data[i][0] != loc[i])
|
||||||
|
{
|
||||||
|
return -i - 21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Compare everything else.
|
||||||
|
for (i = 3; i < 7; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup 3
|
||||||
|
sock = aopenUDP("localhost", 49009);
|
||||||
|
POSI[0] = 37.524F;
|
||||||
|
POSI[1] = -122.06899;
|
||||||
|
POSI[2] = 20000;
|
||||||
|
POSI[3] = 15.0F;
|
||||||
|
POSI[4] = -25.0F;
|
||||||
|
POSI[5] = -10.0F;
|
||||||
|
POSI[6] = 1;
|
||||||
|
|
||||||
|
// Execution 2
|
||||||
|
pauseSim(sock, 1);
|
||||||
|
sendPOSI(sock, POSI, 3, 0);
|
||||||
|
int result = getDREFs(sock, drefs, data, 7, sizes);
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
|
||||||
|
// Close
|
||||||
|
closeUDP(sock);
|
||||||
|
|
||||||
|
// Tests
|
||||||
|
if (result != 7)
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
// Compare position to make sure it was set.
|
||||||
|
for (int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) > 1e-4)
|
||||||
|
{
|
||||||
|
return -i - 31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Compare everything else to make sure it *wasn't*.
|
||||||
|
for (i = 3; i < 7; ++i)
|
||||||
|
{
|
||||||
|
if (fabs(data[i][0] - POSI[i]) < 1)
|
||||||
|
{
|
||||||
|
return -i - 31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sendWYPTTest()
|
int sendWYPTTest()
|
||||||
@@ -397,6 +848,7 @@ int sendWYPTTest()
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Test
|
// Test
|
||||||
|
sendWYPT(sock, XPC_WYPT_CLR, NULL, 0);
|
||||||
sendWYPT(sock, XPC_WYPT_ADD, points, 15);
|
sendWYPT(sock, XPC_WYPT_ADD, points, 15);
|
||||||
// NOTE: Visually ensure waypoints are added in the sim
|
// NOTE: Visually ensure waypoints are added in the sim
|
||||||
|
|
||||||
@@ -408,7 +860,9 @@ int sendWYPTTest()
|
|||||||
int pauseTest() // pauseSim test
|
int pauseTest() // pauseSim test
|
||||||
{
|
{
|
||||||
// Initialize
|
// Initialize
|
||||||
int i; // Iterator
|
// Note: Always run this test to the end so that the sim ends up unpaused in the
|
||||||
|
// case where commands are working but reading results isn't.
|
||||||
|
int result = 0;
|
||||||
char* drefs[100] =
|
char* drefs[100] =
|
||||||
{
|
{
|
||||||
"sim/operation/override/override_planepath"
|
"sim/operation/override/override_planepath"
|
||||||
@@ -418,7 +872,7 @@ int pauseTest() // pauseSim test
|
|||||||
XPCSocket sock = openUDP("127.0.0.1", 49009, 49064);
|
XPCSocket sock = openUDP("127.0.0.1", 49009, 49064);
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
for (i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
data[i] = (float*)malloc(40 * sizeof(float));
|
data[i] = (float*)malloc(40 * sizeof(float));
|
||||||
sizes[i] = 40;
|
sizes[i] = 40;
|
||||||
@@ -428,40 +882,37 @@ int pauseTest() // pauseSim test
|
|||||||
pauseSim(sock, 1);
|
pauseSim(sock, 1);
|
||||||
int result = getDREF(sock, drefs[0], data[0], sizes);
|
int result = getDREF(sock, drefs[0], data[0], sizes);
|
||||||
|
|
||||||
// Close
|
|
||||||
closeUDP(sock);
|
|
||||||
|
|
||||||
// Test
|
// Test
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
{
|
{
|
||||||
return -1;
|
result = -1;
|
||||||
}
|
}
|
||||||
if (data[0][0] != 1)
|
if (data[0][0] != 1)
|
||||||
{
|
{
|
||||||
return -2;
|
result = -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reopen
|
if (result == 0)
|
||||||
sock = openUDP("127.0.0.1", 49009, 49064);
|
{
|
||||||
|
// Execute 2
|
||||||
|
pauseSim(sock, 0);
|
||||||
|
result = getDREF(sock, drefs[0], data[0], sizes);
|
||||||
|
|
||||||
// Execute 2
|
// Test 2
|
||||||
pauseSim(sock, 0);
|
if (result < 0)
|
||||||
result = getDREF(sock, drefs[0], data[0], sizes);
|
{
|
||||||
|
result = -3;
|
||||||
|
}
|
||||||
|
if (data[0][0] != 0)
|
||||||
|
{
|
||||||
|
result = -4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Close 2
|
// Close
|
||||||
closeUDP(sock);
|
closeUDP(sock);
|
||||||
|
|
||||||
// Test 2
|
return result;
|
||||||
if (result < 0)
|
|
||||||
{
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
if (data[0][0] != 0)
|
|
||||||
{
|
|
||||||
return -4;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int connTest() // setConn test
|
int connTest() // setConn test
|
||||||
@@ -515,15 +966,16 @@ int main(int argc, const char * argv[])
|
|||||||
runTest(openTest, "open");
|
runTest(openTest, "open");
|
||||||
runTest(closeTest, "close");
|
runTest(closeTest, "close");
|
||||||
runTest(sendReadTest, "send/read");
|
runTest(sendReadTest, "send/read");
|
||||||
runTest(sendTEXTTest, "TEXT");
|
runTest(pauseTest, "SIMU");
|
||||||
runTest(requestDREFTest, "GETD");
|
runTest(getDREFTest, "GETD");
|
||||||
runTest(sendDREFTest, "DREF");
|
runTest(sendDREFTest, "DREF");
|
||||||
runTest(sendDATATest, "DATA");
|
runTest(sendDATATest, "DATA");
|
||||||
runTest(sendCTRLTest, "CTRL");
|
runTest(sendCTRLTest, "CTRL");
|
||||||
runTest(psendCTRLTest, "CTRL (player)");
|
runTest(psendCTRLTest, "CTRL (player)");
|
||||||
runTest(sendPOSITest, "POSI");
|
runTest(sendPOSITest, "POSI");
|
||||||
|
runTest(psendPOSITest, "POSI (player)");
|
||||||
runTest(sendWYPTTest, "WYPT");
|
runTest(sendWYPTTest, "WYPT");
|
||||||
runTest(pauseTest, "SIMU");
|
runTest(sendTEXTTest, "TEXT");
|
||||||
runTest(connTest, "CONN");
|
runTest(connTest, "CONN");
|
||||||
|
|
||||||
printf( "----------------\nTest Summary\n\tFailed: %i\n\tPassed: %i\n", testFailed, testPassed );
|
printf( "----------------\nTest Summary\n\tFailed: %i\n\tPassed: %i\n", testFailed, testPassed );
|
||||||
|
|||||||
Reference in New Issue
Block a user