Skip to content

Commit

Permalink
Merge pull request mavlink#3133 from DonLakeFlyer/MissionItemFixes
Browse files Browse the repository at this point in the history
Mission item fixes
  • Loading branch information
DonLakeFlyer committed Apr 3, 2016
2 parents 9912625 + 246de5b commit e68c93d
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 22 deletions.
6 changes: 4 additions & 2 deletions src/MissionManager/MissionItem.cc
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ bool MissionItem::load(const QJsonObject& json, QString& errorString)
return false;
}

// Make sure to set these first since they can signal other changes
setFrame((MAV_FRAME)json[_jsonFrameKey].toInt());
setCommand((MAV_CMD)json[_jsonCommandKey].toInt());

QGeoCoordinate coordinate;
if (!JsonHelper::toQGeoCoordinate(json[_jsonCoordinateKey], coordinate, true /* altitudeRequired */, errorString)) {
return false;
Expand All @@ -213,8 +217,6 @@ bool MissionItem::load(const QJsonObject& json, QString& errorString)

setIsCurrentItem(false);
setSequenceNumber(json[_jsonIdKey].toInt());
setFrame((MAV_FRAME)json[_jsonFrameKey].toInt());
setCommand((MAV_CMD)json[_jsonCommandKey].toInt());
setParam1(json[_jsonParam1Key].toDouble());
setParam2(json[_jsonParam2Key].toDouble());
setParam3(json[_jsonParam3Key].toDouble());
Expand Down
75 changes: 55 additions & 20 deletions src/MissionManager/MissionItemTest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "LinkManager.h"
#include "MultiVehicleManager.h"
#include "MissionItem.h"
#include "SimpleMissionItem.h"

#if 0
const MissionItemTest::TestCase_t MissionItemTest::_rgTestCases[] = {
Expand Down Expand Up @@ -236,16 +237,10 @@ void MissionItemTest::_testFactSignals(void)
QCOMPARE(arguments.at(0).toDouble(), 8.0);
}

void MissionItemTest::_testLoadFromStream(void)
void MissionItemTest::_checkExpectedMissionItem(const MissionItem& missionItem)
{
MissionItem missionItem;

QString testString("10\t1\t3\t80\t10\t20\t30\t40\t-10\t-20\t-30\t1\r\n");
QTextStream testStream(&testString, QIODevice::ReadOnly);

QVERIFY(missionItem.load(testStream));
QCOMPARE(missionItem.sequenceNumber(), 10);
QCOMPARE(missionItem.isCurrentItem(), true);
QCOMPARE(missionItem.isCurrentItem(), false);
QCOMPARE(missionItem.frame(), (MAV_FRAME)3);
QCOMPARE(missionItem.command(), (MAV_CMD)80);
QCOMPARE(missionItem.param1(), 10.0);
Expand All @@ -258,6 +253,30 @@ void MissionItemTest::_testLoadFromStream(void)
QCOMPARE(missionItem.autoContinue(), true);
}

void MissionItemTest::_testLoadFromStream(void)
{
MissionItem missionItem;

QString testString("10\t0\t3\t80\t10\t20\t30\t40\t-10\t-20\t-30\t1\r\n");
QTextStream testStream(&testString, QIODevice::ReadOnly);

QVERIFY(missionItem.load(testStream));
_checkExpectedMissionItem(missionItem);
}

void MissionItemTest::_testSimpleLoadFromStream(void)
{
// We specifically test SimpleMissionItem loading as well since it has additional
// signalling which can affect values.
SimpleMissionItem simpleMissionItem(NULL);

QString testString("10\t0\t3\t80\t10\t20\t30\t40\t-10\t-20\t-30\t1\r\n");
QTextStream testStream(&testString, QIODevice::ReadOnly);

QVERIFY(simpleMissionItem.load(testStream));
_checkExpectedMissionItem(simpleMissionItem.missionItem());
}

void MissionItemTest::_testLoadFromJson(void)
{
MissionItem missionItem;
Expand Down Expand Up @@ -335,18 +354,34 @@ void MissionItemTest::_testLoadFromJson(void)
// Test good load

QVERIFY(missionItem.load(jsonObject, errorString));
QCOMPARE(missionItem.sequenceNumber(), 10);
QCOMPARE(missionItem.isCurrentItem(), false);
QCOMPARE(missionItem.frame(), (MAV_FRAME)3);
QCOMPARE(missionItem.command(), (MAV_CMD)80);
QCOMPARE(missionItem.param1(), 10.0);
QCOMPARE(missionItem.param2(), 20.0);
QCOMPARE(missionItem.param3(), 30.0);
QCOMPARE(missionItem.param4(), 40.0);
QCOMPARE(missionItem.param5(), -10.0);
QCOMPARE(missionItem.param6(), -20.0);
QCOMPARE(missionItem.param7(), -30.0);
QCOMPARE(missionItem.autoContinue(), true);
_checkExpectedMissionItem(missionItem);
}

void MissionItemTest::_testSimpleLoadFromJson(void)
{
// We specifically test SimpleMissionItem loading as well since it has additional
// signalling which can affect values.

SimpleMissionItem simpleMissionItem(NULL);
QString errorString;
QJsonArray coordinateArray = { -10.0, -20.0, -30.0 };
QJsonObject jsonObject
{
{ "autoContinue", true },
{ "command", 80 },
{ "frame", 3 },
{ "id", 10 },
{ "param1", 10 },
{ "param2", 20 },
{ "param3", 30 },
{ "param4", 40 },
{ "type", "missionItem" },
{ "coordinate", coordinateArray },
};


QVERIFY(simpleMissionItem.load(jsonObject, errorString));
_checkExpectedMissionItem(simpleMissionItem.missionItem());
}

void MissionItemTest::_testSaveToJson(void)
Expand Down
6 changes: 6 additions & 0 deletions src/MissionManager/MissionItemTest.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include "UnitTest.h"
#include "MultiSignalSpy.h"
#include "MissionItem.h"

/// Unit test for the MissionItem Object
class MissionItemTest : public UnitTest
Expand All @@ -40,8 +41,13 @@ private slots:
void _testSignals(void);
void _testFactSignals(void);
void _testLoadFromStream(void);
void _testSimpleLoadFromStream(void);
void _testLoadFromJson(void);
void _testSimpleLoadFromJson(void);
void _testSaveToJson(void);

private:
void _checkExpectedMissionItem(const MissionItem& missionItem);
};

#endif

0 comments on commit e68c93d

Please sign in to comment.