@ -226,7 +226,7 @@ void MissionItemTest::_testFactSignals(void)
@@ -226,7 +226,7 @@ void MissionItemTest::_testFactSignals(void)
void MissionItemTest : : _checkExpectedMissionItem ( const MissionItem & missionItem )
{
QCOMPARE ( missionItem . sequenceNumber ( ) , 10 ) ;
QCOMPARE ( missionItem . sequenceNumber ( ) , _seq ) ;
QCOMPARE ( missionItem . isCurrentItem ( ) , false ) ;
QCOMPARE ( missionItem . frame ( ) , ( MAV_FRAME ) 3 ) ;
QCOMPARE ( missionItem . command ( ) , ( MAV_CMD ) 80 ) ;
@ -264,33 +264,71 @@ void MissionItemTest::_testSimpleLoadFromStream(void)
@@ -264,33 +264,71 @@ void MissionItemTest::_testSimpleLoadFromStream(void)
_checkExpectedMissionItem ( simpleMissionItem . missionItem ( ) ) ;
}
void MissionItemTest : : _testLoadFromJson ( void )
void MissionItemTest : : _testLoadFromJsonV1 ( void )
{
MissionItem missionItem ;
QString errorString ;
QJsonArray coordinateArray ;
coordinateArray < < - 10.0 < < - 20.0 < < - 30.0 ;
QJsonObject jsonObject ;
jsonObject . insert ( " autoContinue " , true ) ;
jsonObject . insert ( " command " , 80 ) ;
jsonObject . insert ( " frame " , 3 ) ;
jsonObject . insert ( " id " , 10 ) ;
jsonObject . insert ( " param1 " , 10 ) ;
jsonObject . insert ( " param2 " , 20 ) ;
jsonObject . insert ( " param3 " , 30 ) ;
jsonObject . insert ( " param4 " , 40 ) ;
jsonObject . insert ( " type " , " missionItem " ) ;
jsonObject . insert ( " coordinate " , coordinateArray ) ;
jsonObject . insert ( MissionItem : : _jsonAutoContinueKey , true ) ;
jsonObject . insert ( MissionItem : : _jsonCommandKey , 80 ) ;
jsonObject . insert ( MissionItem : : _jsonFrameKey , 3 ) ;
jsonObject . insert ( MissionItem : : _jsonParam1Key , 10 ) ;
jsonObject . insert ( MissionItem : : _jsonParam2Key , 20 ) ;
jsonObject . insert ( MissionItem : : _jsonParam3Key , 30 ) ;
jsonObject . insert ( MissionItem : : _jsonParam4Key , 40 ) ;
jsonObject . insert ( VisualMissionItem : : jsonTypeKey , VisualMissionItem : : jsonTypeSimpleItemValue ) ;
jsonObject . insert ( MissionItem : : _jsonCoordinateKey , coordinateArray ) ;
// We only need to test the differences between V1 and V2
QStringList removeKeys ;
removeKeys < < MissionItem : : _jsonParam1Key < < MissionItem : : _jsonParam2Key < < MissionItem : : _jsonParam3Key < < MissionItem : : _jsonParam4Key ;
foreach ( const QString & removeKey , removeKeys ) {
QJsonObject badObject = jsonObject ;
badObject . remove ( removeKey ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
}
// Test good load
QVERIFY ( missionItem . load ( jsonObject , _seq , errorString ) ) ;
_checkExpectedMissionItem ( missionItem ) ;
}
void MissionItemTest : : _testLoadFromJsonV2 ( void )
{
MissionItem missionItem ;
QString errorString ;
QJsonArray coordinateArray ;
coordinateArray < < - 10.0 < < - 20.0 < < - 30.0 ;
QJsonObject jsonObject ;
jsonObject . insert ( MissionItem : : _jsonAutoContinueKey , true ) ;
jsonObject . insert ( MissionItem : : _jsonCommandKey , 80 ) ;
jsonObject . insert ( MissionItem : : _jsonFrameKey , 3 ) ;
jsonObject . insert ( VisualMissionItem : : jsonTypeKey , VisualMissionItem : : jsonTypeSimpleItemValue ) ;
jsonObject . insert ( MissionItem : : _jsonCoordinateKey , coordinateArray ) ;
QJsonArray rgParams = { 10 , 20 , 30 , 40 } ;
jsonObject . insert ( MissionItem : : _jsonParamsKey , rgParams ) ;
// Test missing key detection
QStringList removeKeys ;
removeKeys < < " autoContinue " < < " command " < < " frame " < < " id " < < " param1 " < < " param2 " < < " param3 " < < " param4 " < < " type " < < " coordinate " ;
removeKeys < < MissionItem : : _jsonAutoContinueKey < <
MissionItem : : _jsonCommandKey < <
MissionItem : : _jsonFrameKey < <
MissionItem : : _jsonParamsKey < <
VisualMissionItem : : jsonTypeKey < <
MissionItem : : _jsonCoordinateKey ;
foreach ( const QString & removeKey , removeKeys ) {
QJsonObject badObject = jsonObject ;
badObject . remove ( removeKey ) ;
QCOMPARE ( missionItem . load ( badObject , errorString ) , false ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
}
@ -300,7 +338,7 @@ void MissionItemTest::_testLoadFromJson(void)
@@ -300,7 +338,7 @@ void MissionItemTest::_testLoadFromJson(void)
QJsonObject badObject = jsonObject ;
badObject . remove ( " coordinate " ) ;
badObject [ " coordinate " ] = 10 ;
QCOMPARE ( missionItem . load ( badObject , errorString ) , false ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
@ -309,7 +347,7 @@ void MissionItemTest::_testLoadFromJson(void)
@@ -309,7 +347,7 @@ void MissionItemTest::_testLoadFromJson(void)
badObject = jsonObject ;
badObject . remove ( " coordinate " ) ;
badObject [ " coordinate " ] = badCoordinateArray ;
QCOMPARE ( missionItem . load ( badObject , errorString ) , false ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
@ -318,7 +356,7 @@ void MissionItemTest::_testLoadFromJson(void)
@@ -318,7 +356,7 @@ void MissionItemTest::_testLoadFromJson(void)
badObject = jsonObject ;
badObject . remove ( " coordinate " ) ;
badObject [ " coordinate " ] = badCoordinateArray_second ;
QCOMPARE ( missionItem . load ( badObject , errorString ) , false ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
@ -329,7 +367,7 @@ void MissionItemTest::_testLoadFromJson(void)
@@ -329,7 +367,7 @@ void MissionItemTest::_testLoadFromJson(void)
badObject = jsonObject ;
badObject . remove ( " coordinate " ) ;
badObject [ " coordinate " ] = badCoordinateArray_third ;
QCOMPARE ( missionItem . load ( badObject , errorString ) , false ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
@ -338,13 +376,17 @@ void MissionItemTest::_testLoadFromJson(void)
@@ -338,13 +376,17 @@ void MissionItemTest::_testLoadFromJson(void)
badObject = jsonObject ;
badObject . remove ( " type " ) ;
badObject [ " type " ] = " foo " ;
QCOMPARE ( missionItem . load ( badObject , errorString ) , false ) ;
QCOMPARE ( missionItem . load ( badObject , _seq , errorString ) , false ) ;
QVERIFY ( ! errorString . isEmpty ( ) ) ;
qDebug ( ) < < errorString ;
// Test good load
QVERIFY ( missionItem . load ( jsonObject , errorString ) ) ;
bool result = missionItem . load ( jsonObject , _seq , errorString ) ;
if ( ! result ) {
qDebug ( ) < < errorString ;
QVERIFY ( result ) ;
}
_checkExpectedMissionItem ( missionItem ) ;
}
@ -356,21 +398,19 @@ void MissionItemTest::_testSimpleLoadFromJson(void)
@@ -356,21 +398,19 @@ void MissionItemTest::_testSimpleLoadFromJson(void)
SimpleMissionItem simpleMissionItem ( NULL ) ;
QString errorString ;
QJsonArray coordinateArray ;
coordinateArray < < - 10.0 < < - 20.0 < < - 30.0 ;
QJsonObject jsonObject ;
jsonObject . insert ( " autoContinue " , true ) ;
jsonObject . insert ( " command " , 80 ) ;
jsonObject . insert ( " frame " , 3 ) ;
jsonObject . insert ( " id " , 10 ) ;
jsonObject . insert ( " param1 " , 10 ) ;
jsonObject . insert ( " param2 " , 20 ) ;
jsonObject . insert ( " param3 " , 30 ) ;
jsonObject . insert ( " param4 " , 40 ) ;
jsonObject . insert ( " type " , " missionItem " ) ;
jsonObject . insert ( " coordinate " , coordinateArray ) ;
QVERIFY ( simpleMissionItem . load ( jsonObject , errorString ) ) ;
coordinateArray < < - 10.0 < < - 20.0 < < - 30.0 ;
jsonObject . insert ( MissionItem : : _jsonAutoContinueKey , true ) ;
jsonObject . insert ( MissionItem : : _jsonCommandKey , 80 ) ;
jsonObject . insert ( MissionItem : : _jsonFrameKey , 3 ) ;
jsonObject . insert ( VisualMissionItem : : jsonTypeKey , VisualMissionItem : : jsonTypeSimpleItemValue ) ;
jsonObject . insert ( MissionItem : : _jsonCoordinateKey , coordinateArray ) ;
QJsonArray rgParams = { 10 , 20 , 30 , 40 } ;
jsonObject . insert ( MissionItem : : _jsonParamsKey , rgParams ) ;
QVERIFY ( simpleMissionItem . load ( jsonObject , _seq , errorString ) ) ;
_checkExpectedMissionItem ( simpleMissionItem . missionItem ( ) ) ;
}
@ -378,7 +418,7 @@ void MissionItemTest::_testSaveToJson(void)
@@ -378,7 +418,7 @@ void MissionItemTest::_testSaveToJson(void)
{
MissionItem missionItem ;
missionItem . setSequenceNumber ( 10 ) ;
missionItem . setSequenceNumber ( _seq ) ;
missionItem . setIsCurrentItem ( true ) ;
missionItem . setFrame ( ( MAV_FRAME ) 3 ) ;
missionItem . setCommand ( ( MAV_CMD ) 80 ) ;
@ -395,9 +435,9 @@ void MissionItemTest::_testSaveToJson(void)
@@ -395,9 +435,9 @@ void MissionItemTest::_testSaveToJson(void)
QJsonObject jsonObject ;
QString errorString ;
missionItem . save ( jsonObject ) ;
QVERIFY ( missionItem . load ( jsonObject , errorString ) ) ;
QVERIFY ( missionItem . load ( jsonObject , _seq , errorString ) ) ;
QCOMPARE ( missionItem . sequenceNumber ( ) , 10 ) ;
QCOMPARE ( missionItem . sequenceNumber ( ) , _seq ) ;
QCOMPARE ( missionItem . isCurrentItem ( ) , false ) ;
QCOMPARE ( missionItem . frame ( ) , ( MAV_FRAME ) 3 ) ;
QCOMPARE ( missionItem . command ( ) , ( MAV_CMD ) 80 ) ;
@ -410,295 +450,3 @@ void MissionItemTest::_testSaveToJson(void)
@@ -410,295 +450,3 @@ void MissionItemTest::_testSaveToJson(void)
QCOMPARE ( missionItem . param7 ( ) , - 30.1234567 ) ;
QCOMPARE ( missionItem . autoContinue ( ) , true ) ;
}
#if 0
void MissionItemTest : : _writeItems ( MockLinkMissionItemHandler : : FailureMode_t failureMode )
{
_mockLink - > setMissionItemFailureMode ( failureMode ) ;
// Setup our test case data
QList < MissionItem * > missionItems ;
// Editor has a home position item on the front, so we do the same
MissionItem * homeItem = new MissionItem ( NULL /* Vehicle */ , this ) ;
homeItem - > setCommand ( MAV_CMD_NAV_WAYPOINT ) ;
homeItem - > setCoordinate ( QGeoCoordinate ( 47.3769 , 8.549444 , 0 ) ) ;
homeItem - > setSequenceNumber ( 0 ) ;
missionItems . append ( homeItem ) ;
for ( size_t i = 0 ; i < _cTestCases ; i + + ) {
const TestCase_t * testCase = & _rgTestCases [ i ] ;
MissionItem * missionItem = new MissionItem ( this ) ;
QTextStream loadStream ( testCase - > itemStream , QIODevice : : ReadOnly ) ;
QVERIFY ( missionItem - > load ( loadStream ) ) ;
// Mission Manager expects to get 1-base sequence numbers for write
missionItem - > setSequenceNumber ( missionItem - > sequenceNumber ( ) + 1 ) ;
missionItems . append ( missionItem ) ;
}
// Send the items to the vehicle
_missionManager - > writeMissionItems ( missionItems ) ;
// writeMissionItems should emit these signals before returning:
// inProgressChanged
// newMissionItemsAvailable
QVERIFY ( _missionManager - > inProgress ( ) ) ;
QCOMPARE ( _multiSpyMissionManager - > checkSignalByMask ( inProgressChangedSignalMask | newMissionItemsAvailableSignalMask ) , true ) ;
_checkInProgressValues ( true ) ;
_multiSpyMissionManager - > clearAllSignals ( ) ;
if ( failureMode = = MockLinkMissionItemHandler : : FailNone ) {
// This should be clean run
// Wait for write sequence to complete. We should get:
// inProgressChanged(false) signal
_multiSpyMissionManager - > waitForSignalByIndex ( inProgressChangedSignalIndex , _missionManagerSignalWaitTime ) ;
QCOMPARE ( _multiSpyMissionManager - > checkOnlySignalByMask ( inProgressChangedSignalMask ) , true ) ;
// Validate inProgressChanged signal value
_checkInProgressValues ( false ) ;
// Validate item count in mission manager
int expectedCount = ( int ) _cTestCases ;
if ( _mockLink - > getFirmwareType ( ) = = MAV_AUTOPILOT_ARDUPILOTMEGA ) {
// Home position at position 0 comes from vehicle
expectedCount + + ;
}
QCOMPARE ( _missionManager - > missionItems ( ) . count ( ) , expectedCount ) ;
} else {
// This should be a failed run
setExpectedMessageBox ( QMessageBox : : Ok ) ;
// Wait for write sequence to complete. We should get:
// inProgressChanged(false) signal
// error(errorCode, QString) signal
_multiSpyMissionManager - > waitForSignalByIndex ( inProgressChangedSignalIndex , _missionManagerSignalWaitTime ) ;
QCOMPARE ( _multiSpyMissionManager - > checkSignalByMask ( inProgressChangedSignalMask | errorSignalMask ) , true ) ;
// Validate inProgressChanged signal value
_checkInProgressValues ( false ) ;
// Validate error signal values
QSignalSpy * spy = _multiSpyMissionManager - > getSpyByIndex ( errorSignalIndex ) ;
QList < QVariant > signalArgs = spy - > takeFirst ( ) ;
QCOMPARE ( signalArgs . count ( ) , 2 ) ;
qDebug ( ) < < signalArgs [ 1 ] . toString ( ) ;
checkExpectedMessageBox ( ) ;
}
_multiSpyMissionManager - > clearAllSignals ( ) ;
}
void MissionItemTest : : _roundTripItems ( MockLinkMissionItemHandler : : FailureMode_t failureMode )
{
_writeItems ( MockLinkMissionItemHandler : : FailNone ) ;
_mockLink - > setMissionItemFailureMode ( failureMode ) ;
// Read the items back from the vehicle
_missionManager - > requestMissionItems ( ) ;
// requestMissionItems should emit inProgressChanged signal before returning so no need to wait for it
QVERIFY ( _missionManager - > inProgress ( ) ) ;
QCOMPARE ( _multiSpyMissionManager - > checkOnlySignalByMask ( inProgressChangedSignalMask ) , true ) ;
_checkInProgressValues ( true ) ;
_multiSpyMissionManager - > clearAllSignals ( ) ;
if ( failureMode = = MockLinkMissionItemHandler : : FailNone ) {
// This should be clean run
// Now wait for read sequence to complete. We should get:
// inProgressChanged(false) signal to signal completion
// newMissionItemsAvailable signal
_multiSpyMissionManager - > waitForSignalByIndex ( inProgressChangedSignalIndex , _missionManagerSignalWaitTime ) ;
QCOMPARE ( _multiSpyMissionManager - > checkSignalByMask ( newMissionItemsAvailableSignalMask | inProgressChangedSignalMask ) , true ) ;
_checkInProgressValues ( false ) ;
} else {
// This should be a failed run
setExpectedMessageBox ( QMessageBox : : Ok ) ;
// Wait for read sequence to complete. We should get:
// inProgressChanged(false) signal to signal completion
// error(errorCode, QString) signal
// newMissionItemsAvailable signal
_multiSpyMissionManager - > waitForSignalByIndex ( inProgressChangedSignalIndex , _missionManagerSignalWaitTime ) ;
QCOMPARE ( _multiSpyMissionManager - > checkSignalByMask ( newMissionItemsAvailableSignalMask | inProgressChangedSignalMask | errorSignalMask ) , true ) ;
// Validate inProgressChanged signal value
_checkInProgressValues ( false ) ;
// Validate error signal values
QSignalSpy * spy = _multiSpyMissionManager - > getSpyByIndex ( errorSignalIndex ) ;
QList < QVariant > signalArgs = spy - > takeFirst ( ) ;
QCOMPARE ( signalArgs . count ( ) , 2 ) ;
qDebug ( ) < < signalArgs [ 1 ] . toString ( ) ;
checkExpectedMessageBox ( ) ;
}
_multiSpyMissionManager - > clearAllSignals ( ) ;
// Validate returned items
size_t cMissionItemsExpected ;
if ( failureMode = = MockLinkMissionItemHandler : : FailNone ) {
cMissionItemsExpected = ( int ) _cTestCases ;
if ( _mockLink - > getFirmwareType ( ) = = MAV_AUTOPILOT_ARDUPILOTMEGA ) {
// Home position at position 0 comes from vehicle
cMissionItemsExpected + + ;
}
} else {
cMissionItemsExpected = 0 ;
}
QCOMPARE ( _missionManager - > missionItems ( ) . count ( ) , ( int ) cMissionItemsExpected ) ;
size_t firstActualItem = 0 ;
if ( _mockLink - > getFirmwareType ( ) = = MAV_AUTOPILOT_ARDUPILOTMEGA ) {
// First item is home position, don't validate it
firstActualItem + + ;
}
int testCaseIndex = 0 ;
for ( size_t actualItemIndex = firstActualItem ; actualItemIndex < cMissionItemsExpected ; actualItemIndex + + ) {
const TestCase_t * testCase = & _rgTestCases [ testCaseIndex ] ;
int expectedSequenceNumber = testCase - > expectedItem . sequenceNumber ;
if ( _mockLink - > getFirmwareType ( ) = = MAV_AUTOPILOT_ARDUPILOTMEGA ) {
// Account for home position in first item
expectedSequenceNumber + + ;
}
MissionItem * actual = _missionManager - > missionItems ( ) [ actualItemIndex ] ;
qDebug ( ) < < " Test case " < < testCaseIndex ;
QCOMPARE ( actual - > sequenceNumber ( ) , expectedSequenceNumber ) ;
QCOMPARE ( actual - > coordinate ( ) . latitude ( ) , testCase - > expectedItem . coordinate . latitude ( ) ) ;
QCOMPARE ( actual - > coordinate ( ) . longitude ( ) , testCase - > expectedItem . coordinate . longitude ( ) ) ;
QCOMPARE ( actual - > coordinate ( ) . altitude ( ) , testCase - > expectedItem . coordinate . altitude ( ) ) ;
QCOMPARE ( ( int ) actual - > command ( ) , ( int ) testCase - > expectedItem . command ) ;
QCOMPARE ( actual - > param1 ( ) , testCase - > expectedItem . param1 ) ;
QCOMPARE ( actual - > param2 ( ) , testCase - > expectedItem . param2 ) ;
QCOMPARE ( actual - > param3 ( ) , testCase - > expectedItem . param3 ) ;
QCOMPARE ( actual - > param4 ( ) , testCase - > expectedItem . param4 ) ;
QCOMPARE ( actual - > autoContinue ( ) , testCase - > expectedItem . autocontinue ) ;
QCOMPARE ( actual - > frame ( ) , testCase - > expectedItem . frame ) ;
testCaseIndex + + ;
}
}
void MissionItemTest : : _testWriteFailureHandlingWorker ( void )
{
/*
/// Called to send a MISSION_ACK message while the MissionManager is in idle state
void sendUnexpectedMissionAck ( MAV_MISSION_RESULT ackType ) { _missionItemHandler . sendUnexpectedMissionAck ( ackType ) ; }
/// Called to send a MISSION_ITEM message while the MissionManager is in idle state
void sendUnexpectedMissionItem ( void ) { _missionItemHandler . sendUnexpectedMissionItem ( ) ; }
/// Called to send a MISSION_REQUEST message while the MissionManager is in idle state
void sendUnexpectedMissionRequest ( void ) { _missionItemHandler . sendUnexpectedMissionRequest ( ) ; }
*/
typedef struct {
const char * failureText ;
MockLinkMissionItemHandler : : FailureMode_t failureMode ;
} TestCase_t ;
static const TestCase_t rgTestCases [ ] = {
{ " No Failure " , MockLinkMissionItemHandler : : FailNone } ,
{ " FailWriteRequest0NoResponse " , MockLinkMissionItemHandler : : FailWriteRequest0NoResponse } ,
{ " FailWriteRequest1NoResponse " , MockLinkMissionItemHandler : : FailWriteRequest1NoResponse } ,
{ " FailWriteRequest0IncorrectSequence " , MockLinkMissionItemHandler : : FailWriteRequest0IncorrectSequence } ,
{ " FailWriteRequest1IncorrectSequence " , MockLinkMissionItemHandler : : FailWriteRequest1IncorrectSequence } ,
{ " FailWriteRequest0ErrorAck " , MockLinkMissionItemHandler : : FailWriteRequest0ErrorAck } ,
{ " FailWriteRequest1ErrorAck " , MockLinkMissionItemHandler : : FailWriteRequest1ErrorAck } ,
{ " FailWriteFinalAckNoResponse " , MockLinkMissionItemHandler : : FailWriteFinalAckNoResponse } ,
{ " FailWriteFinalAckErrorAck " , MockLinkMissionItemHandler : : FailWriteFinalAckErrorAck } ,
{ " FailWriteFinalAckMissingRequests " , MockLinkMissionItemHandler : : FailWriteFinalAckMissingRequests } ,
} ;
for ( size_t i = 0 ; i < sizeof ( rgTestCases ) / sizeof ( rgTestCases [ 0 ] ) ; i + + ) {
qDebug ( ) < < " TEST CASE " < < rgTestCases [ i ] . failureText ;
_writeItems ( rgTestCases [ i ] . failureMode ) ;
_mockLink - > resetMissionItemHandler ( ) ;
}
}
void MissionItemTest : : _testReadFailureHandlingWorker ( void )
{
/*
/// Called to send a MISSION_ACK message while the MissionManager is in idle state
void sendUnexpectedMissionAck ( MAV_MISSION_RESULT ackType ) { _missionItemHandler . sendUnexpectedMissionAck ( ackType ) ; }
/// Called to send a MISSION_ITEM message while the MissionManager is in idle state
void sendUnexpectedMissionItem ( void ) { _missionItemHandler . sendUnexpectedMissionItem ( ) ; }
/// Called to send a MISSION_REQUEST message while the MissionManager is in idle state
void sendUnexpectedMissionRequest ( void ) { _missionItemHandler . sendUnexpectedMissionRequest ( ) ; }
*/
typedef struct {
const char * failureText ;
MockLinkMissionItemHandler : : FailureMode_t failureMode ;
} TestCase_t ;
static const TestCase_t rgTestCases [ ] = {
{ " No Failure " , MockLinkMissionItemHandler : : FailNone } ,
{ " FailReadRequestListNoResponse " , MockLinkMissionItemHandler : : FailReadRequestListNoResponse } ,
{ " FailReadRequest0NoResponse " , MockLinkMissionItemHandler : : FailReadRequest0NoResponse } ,
{ " FailReadRequest1NoResponse " , MockLinkMissionItemHandler : : FailReadRequest1NoResponse } ,
{ " FailReadRequest0IncorrectSequence " , MockLinkMissionItemHandler : : FailReadRequest0IncorrectSequence } ,
{ " FailReadRequest1IncorrectSequence " , MockLinkMissionItemHandler : : FailReadRequest1IncorrectSequence } ,
{ " FailReadRequest0ErrorAck " , MockLinkMissionItemHandler : : FailReadRequest0ErrorAck } ,
{ " FailReadRequest1ErrorAck " , MockLinkMissionItemHandler : : FailReadRequest1ErrorAck } ,
} ;
for ( size_t i = 0 ; i < sizeof ( rgTestCases ) / sizeof ( rgTestCases [ 0 ] ) ; i + + ) {
qDebug ( ) < < " TEST CASE " < < rgTestCases [ i ] . failureText ;
_roundTripItems ( rgTestCases [ i ] . failureMode ) ;
_mockLink - > resetMissionItemHandler ( ) ;
_multiSpyMissionManager - > clearAllSignals ( ) ;
}
}
void MissionItemTest : : _testWriteFailureHandlingAPM ( void )
{
_initForFirmwareType ( MAV_AUTOPILOT_ARDUPILOTMEGA ) ;
_testWriteFailureHandlingWorker ( ) ;
}
void MissionItemTest : : _testReadFailureHandlingAPM ( void )
{
_initForFirmwareType ( MAV_AUTOPILOT_ARDUPILOTMEGA ) ;
_testReadFailureHandlingWorker ( ) ;
}
void MissionItemTest : : _testWriteFailureHandlingPX4 ( void )
{
_initForFirmwareType ( MAV_AUTOPILOT_PX4 ) ;
_testWriteFailureHandlingWorker ( ) ;
}
void MissionItemTest : : _testReadFailureHandlingPX4 ( void )
{
_initForFirmwareType ( MAV_AUTOPILOT_PX4 ) ;
_testReadFailureHandlingWorker ( ) ;
}
# endif