21 changed files with 466 additions and 361 deletions
@ -0,0 +1,151 @@
@@ -0,0 +1,151 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
#include "SendMavCommandTest.h" |
||||
#include "MultiVehicleManager.h" |
||||
#include "QGCApplication.h" |
||||
|
||||
void SendMavCommandTest::_noFailure(void) |
||||
{ |
||||
_connectMockLink(); |
||||
|
||||
MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); |
||||
Vehicle* vehicle = vehicleMgr->activeVehicle(); |
||||
QVERIFY(vehicle); |
||||
|
||||
vehicle->sendMavCommand(MAV_COMP_ID_ALL, MAV_CMD_USER_1, true /* showError */); |
||||
|
||||
QSignalSpy spyResult(vehicle, SIGNAL(mavCommandResult(int, int, int, int, bool))); |
||||
QCOMPARE(spyResult.wait(10000), true); |
||||
QList<QVariant> arguments = spyResult.takeFirst(); |
||||
QCOMPARE(arguments.count(), 5); |
||||
QCOMPARE(arguments.at(0).toInt(), vehicle->id()); |
||||
QCOMPARE(arguments.at(2).toInt(), (int)MAV_CMD_USER_1); |
||||
QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_ACCEPTED); |
||||
QCOMPARE(arguments.at(4).toBool(), false); |
||||
} |
||||
|
||||
void SendMavCommandTest::_failureShowError(void) |
||||
{ |
||||
// Will pop error about request failure
|
||||
setExpectedMessageBox(QMessageBox::Ok); |
||||
|
||||
_connectMockLink(); |
||||
|
||||
MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); |
||||
Vehicle* vehicle = vehicleMgr->activeVehicle(); |
||||
QVERIFY(vehicle); |
||||
|
||||
vehicle->sendMavCommand(MAV_COMP_ID_ALL, MAV_CMD_USER_2, true /* showError */); |
||||
|
||||
QSignalSpy spyResult(vehicle, SIGNAL(mavCommandResult(int, int, int, int, bool))); |
||||
QCOMPARE(spyResult.wait(10000), true); |
||||
QList<QVariant> arguments = spyResult.takeFirst(); |
||||
QCOMPARE(arguments.count(), 5); |
||||
QCOMPARE(arguments.at(0).toInt(), vehicle->id()); |
||||
QCOMPARE(arguments.at(2).toInt(), (int)MAV_CMD_USER_2); |
||||
QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_FAILED); |
||||
QCOMPARE(arguments.at(4).toBool(), false); |
||||
|
||||
// User should have been notified
|
||||
checkExpectedMessageBox(); |
||||
} |
||||
|
||||
void SendMavCommandTest::_failureNoShowError(void) |
||||
{ |
||||
_connectMockLink(); |
||||
|
||||
MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); |
||||
Vehicle* vehicle = vehicleMgr->activeVehicle(); |
||||
QVERIFY(vehicle); |
||||
|
||||
vehicle->sendMavCommand(MAV_COMP_ID_ALL, MAV_CMD_USER_2, false /* showError */); |
||||
|
||||
QSignalSpy spyResult(vehicle, SIGNAL(mavCommandResult(int, int, int, int, bool))); |
||||
QCOMPARE(spyResult.wait(10000), true); |
||||
QList<QVariant> arguments = spyResult.takeFirst(); |
||||
QCOMPARE(arguments.count(), 5); |
||||
QCOMPARE(arguments.at(0).toInt(), vehicle->id()); |
||||
QCOMPARE(arguments.at(2).toInt(), (int)MAV_CMD_USER_2); |
||||
QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_FAILED); |
||||
QCOMPARE(arguments.at(4).toBool(), false); |
||||
} |
||||
|
||||
void SendMavCommandTest::_noFailureAfterRetry(void) |
||||
{ |
||||
_connectMockLink(); |
||||
|
||||
MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); |
||||
Vehicle* vehicle = vehicleMgr->activeVehicle(); |
||||
QVERIFY(vehicle); |
||||
|
||||
vehicle->sendMavCommand(MAV_COMP_ID_ALL, MAV_CMD_USER_3, true /* showError */); |
||||
|
||||
QSignalSpy spyResult(vehicle, SIGNAL(mavCommandResult(int, int, int, int, bool))); |
||||
QCOMPARE(spyResult.wait(10000), true); |
||||
QList<QVariant> arguments = spyResult.takeFirst(); |
||||
QCOMPARE(arguments.count(), 5); |
||||
QCOMPARE(arguments.at(0).toInt(), vehicle->id()); |
||||
QCOMPARE(arguments.at(2).toInt(), (int)MAV_CMD_USER_3); |
||||
QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_ACCEPTED); |
||||
QCOMPARE(arguments.at(4).toBool(), false); |
||||
} |
||||
|
||||
void SendMavCommandTest::_failureAfterRetry(void) |
||||
{ |
||||
// Will pop error about request failure
|
||||
setExpectedMessageBox(QMessageBox::Ok); |
||||
|
||||
_connectMockLink(); |
||||
|
||||
MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); |
||||
Vehicle* vehicle = vehicleMgr->activeVehicle(); |
||||
QVERIFY(vehicle); |
||||
|
||||
vehicle->sendMavCommand(MAV_COMP_ID_ALL, MAV_CMD_USER_4, true /* showError */); |
||||
|
||||
QSignalSpy spyResult(vehicle, SIGNAL(mavCommandResult(int, int, int, int, bool))); |
||||
QCOMPARE(spyResult.wait(10000), true); |
||||
QList<QVariant> arguments = spyResult.takeFirst(); |
||||
QCOMPARE(arguments.count(), 5); |
||||
QCOMPARE(arguments.at(0).toInt(), vehicle->id()); |
||||
QCOMPARE(arguments.at(2).toInt(), (int)MAV_CMD_USER_4); |
||||
QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_FAILED); |
||||
QCOMPARE(arguments.at(4).toBool(), false); |
||||
|
||||
// User should have been notified
|
||||
checkExpectedMessageBox(); |
||||
} |
||||
|
||||
void SendMavCommandTest::_failureAfterNoReponse(void) |
||||
{ |
||||
// Will pop error about request failure
|
||||
setExpectedMessageBox(QMessageBox::Ok); |
||||
|
||||
_connectMockLink(); |
||||
|
||||
MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); |
||||
Vehicle* vehicle = vehicleMgr->activeVehicle(); |
||||
QVERIFY(vehicle); |
||||
|
||||
vehicle->sendMavCommand(MAV_COMP_ID_ALL, MAV_CMD_USER_5, true /* showError */); |
||||
|
||||
QSignalSpy spyResult(vehicle, SIGNAL(mavCommandResult(int, int, int, int, bool))); |
||||
QCOMPARE(spyResult.wait(10000), true); |
||||
QList<QVariant> arguments = spyResult.takeFirst(); |
||||
QCOMPARE(arguments.count(), 5); |
||||
QCOMPARE(arguments.at(0).toInt(), vehicle->id()); |
||||
QCOMPARE(arguments.at(2).toInt(), (int)MAV_CMD_USER_5); |
||||
QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_FAILED); |
||||
QCOMPARE(arguments.at(4).toBool(), true); |
||||
|
||||
// User should have been notified
|
||||
checkExpectedMessageBox(); |
||||
} |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
#ifndef SendMavCommandTest_H |
||||
#define SendMavCommandTest_H |
||||
|
||||
#include "UnitTest.h" |
||||
|
||||
class SendMavCommandTest : public UnitTest |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
private slots: |
||||
void _noFailure(void); |
||||
void _failureShowError(void); |
||||
void _failureNoShowError(void); |
||||
void _noFailureAfterRetry(void); |
||||
void _failureAfterRetry(void); |
||||
void _failureAfterNoReponse(void); |
||||
|
||||
private: |
||||
}; |
||||
|
||||
#endif |
Loading…
Reference in new issue