Commit 7d8b78ed authored by Don Gagne's avatar Don Gagne

Add ComplexMIssionItem unit test

parent 3c60da97
...@@ -506,6 +506,7 @@ HEADERS += \ ...@@ -506,6 +506,7 @@ HEADERS += \
src/FactSystem/FactSystemTestBase.h \ src/FactSystem/FactSystemTestBase.h \
src/FactSystem/FactSystemTestGeneric.h \ src/FactSystem/FactSystemTestGeneric.h \
src/FactSystem/FactSystemTestPX4.h \ src/FactSystem/FactSystemTestPX4.h \
src/MissionManager/ComplexMissionItemTest.h \
src/MissionManager/MissionControllerTest.h \ src/MissionManager/MissionControllerTest.h \
src/MissionManager/MissionControllerManagerTest.h \ src/MissionManager/MissionControllerManagerTest.h \
src/MissionManager/MissionItemTest.h \ src/MissionManager/MissionItemTest.h \
...@@ -530,6 +531,7 @@ SOURCES += \ ...@@ -530,6 +531,7 @@ SOURCES += \
src/FactSystem/FactSystemTestBase.cc \ src/FactSystem/FactSystemTestBase.cc \
src/FactSystem/FactSystemTestGeneric.cc \ src/FactSystem/FactSystemTestGeneric.cc \
src/FactSystem/FactSystemTestPX4.cc \ src/FactSystem/FactSystemTestPX4.cc \
src/MissionManager/ComplexMissionItemTest.cc \
src/MissionManager/MissionControllerTest.cc \ src/MissionManager/MissionControllerTest.cc \
src/MissionManager/MissionControllerManagerTest.cc \ src/MissionManager/MissionControllerManagerTest.cc \
src/MissionManager/MissionItemTest.cc \ src/MissionManager/MissionItemTest.cc \
......
...@@ -59,7 +59,8 @@ ComplexMissionItem::ComplexMissionItem(Vehicle* vehicle, QObject* parent) ...@@ -59,7 +59,8 @@ ComplexMissionItem::ComplexMissionItem(Vehicle* vehicle, QObject* parent)
connect(&_gridSpacingFact, &Fact::valueChanged, this, &ComplexMissionItem::_generateGrid); connect(&_gridSpacingFact, &Fact::valueChanged, this, &ComplexMissionItem::_generateGrid);
connect(&_gridAngleFact, &Fact::valueChanged, this, &ComplexMissionItem::_generateGrid); connect(&_gridAngleFact, &Fact::valueChanged, this, &ComplexMissionItem::_generateGrid);
connect(this, &ComplexMissionItem::cameraTriggerChanged, this, &ComplexMissionItem::_signalLastSequenceNumberChanged);
connect(this, &ComplexMissionItem::cameraTriggerChanged, this, &ComplexMissionItem::_cameraTriggerChanged);
} }
void ComplexMissionItem::clearPolygon(void) void ComplexMissionItem::clearPolygon(void)
...@@ -77,8 +78,10 @@ void ComplexMissionItem::clearPolygon(void) ...@@ -77,8 +78,10 @@ void ComplexMissionItem::clearPolygon(void)
_polygonPath.clear(); _polygonPath.clear();
_clearGrid(); _clearGrid();
setDirty(true);
emit specifiesCoordinateChanged(); emit specifiesCoordinateChanged();
emit lastSequenceNumberChanged(lastSequenceNumber());
} }
void ComplexMissionItem::addPolygonCoordinate(const QGeoCoordinate coordinate) void ComplexMissionItem::addPolygonCoordinate(const QGeoCoordinate coordinate)
...@@ -87,14 +90,13 @@ void ComplexMissionItem::addPolygonCoordinate(const QGeoCoordinate coordinate) ...@@ -87,14 +90,13 @@ void ComplexMissionItem::addPolygonCoordinate(const QGeoCoordinate coordinate)
emit polygonPathChanged(); emit polygonPathChanged();
int pointCount = _polygonPath.count(); int pointCount = _polygonPath.count();
if (pointCount == 1) { if (pointCount >= 3) {
setCoordinate(coordinate); if (pointCount == 3) {
} else if (pointCount == 3) { emit specifiesCoordinateChanged();
emit specifiesCoordinateChanged(); }
_generateGrid();
} }
_setExitCoordinate(coordinate); setDirty(true);
_generateGrid();
} }
int ComplexMissionItem::lastSequenceNumber(void) const int ComplexMissionItem::lastSequenceNumber(void) const
...@@ -103,10 +105,10 @@ int ComplexMissionItem::lastSequenceNumber(void) const ...@@ -103,10 +105,10 @@ int ComplexMissionItem::lastSequenceNumber(void) const
if (_gridPoints.count()) { if (_gridPoints.count()) {
lastSeq += _gridPoints.count() - 1; lastSeq += _gridPoints.count() - 1;
} if (_cameraTrigger) {
if (_cameraTrigger) { // Account for two trigger messages
// Account for two trigger messages lastSeq += 2;
lastSeq += 2; }
} }
return lastSeq; return lastSeq;
...@@ -117,7 +119,6 @@ void ComplexMissionItem::setCoordinate(const QGeoCoordinate& coordinate) ...@@ -117,7 +119,6 @@ void ComplexMissionItem::setCoordinate(const QGeoCoordinate& coordinate)
if (_coordinate != coordinate) { if (_coordinate != coordinate) {
_coordinate = coordinate; _coordinate = coordinate;
emit coordinateChanged(_coordinate); emit coordinateChanged(_coordinate);
_setExitCoordinate(coordinate);
} }
} }
...@@ -259,8 +260,6 @@ void ComplexMissionItem::_clearGrid(void) ...@@ -259,8 +260,6 @@ void ComplexMissionItem::_clearGrid(void)
} }
emit gridPointsChanged(); emit gridPointsChanged();
_gridPoints.clear(); _gridPoints.clear();
emit gridPointsChanged();
} }
void ComplexMissionItem::_generateGrid(void) void ComplexMissionItem::_generateGrid(void)
...@@ -511,7 +510,11 @@ QmlObjectListModel* ComplexMissionItem::getMissionItems(void) const ...@@ -511,7 +510,11 @@ QmlObjectListModel* ComplexMissionItem::getMissionItems(void) const
return pMissionItems; return pMissionItems;
} }
void ComplexMissionItem::_signalLastSequenceNumberChanged(void) void ComplexMissionItem::_cameraTriggerChanged(void)
{ {
emit lastSequenceNumberChanged(lastSequenceNumber()); setDirty(true);
if (_gridPoints.count()) {
// If we have grid turn on/off camera trigger will add/remove two camera trigger mission items
emit lastSequenceNumberChanged(lastSequenceNumber());
}
} }
...@@ -103,7 +103,7 @@ signals: ...@@ -103,7 +103,7 @@ signals:
void gridAltitudeRelativeChanged (bool gridAltitudeRelative); void gridAltitudeRelativeChanged (bool gridAltitudeRelative);
private slots: private slots:
void _signalLastSequenceNumberChanged(void); void _cameraTriggerChanged(void);
private: private:
void _clear(void); void _clear(void);
......
This diff is collapsed.
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
#ifndef ComplexMissionItemTest_H
#define ComplexMissionItemTest_H
#include "UnitTest.h"
#include "TCPLink.h"
#include "MultiSignalSpy.h"
#include "ComplexMissionItem.h"
#include <QGeoCoordinate>
/// Unit test for SimpleMissionItem
class ComplexMissionItemTest : public UnitTest
{
Q_OBJECT
public:
ComplexMissionItemTest(void);
protected:
void init(void) final;
void cleanup(void) final;
private slots:
void _testDirty(void);
void _testAddPolygonCoordinate(void);
void _testClearPolygon(void);
void _testCameraTrigger(void);
private:
enum {
polygonPathChangedIndex = 0,
lastSequenceNumberChangedIndex,
altitudeChangedIndex,
gridAngleChangedIndex,
gridPointsChangedIndex,
cameraTriggerChangedIndex,
altDifferenceChangedIndex,
altPercentChangedIndex,
azimuthChangedIndex,
commandDescriptionChangedIndex,
commandNameChangedIndex,
coordinateChangedIndex,
exitCoordinateChangedIndex,
dirtyChangedIndex,
distanceChangedIndex,
isCurrentItemChangedIndex,
sequenceNumberChangedIndex,
isSimpleItemChangedIndex,
specifiesCoordinateChangedIndex,
isStandaloneCoordinateChangedIndex,
coordinateHasRelativeAltitudeChangedIndex,
exitCoordinateHasRelativeAltitudeChangedIndex,
exitCoordinateSameAsEntryChangedIndex,
maxSignalIndex
};
enum {
polygonPathChangedMask = 1 << polygonPathChangedIndex,
lastSequenceNumberChangedMask = 1 << lastSequenceNumberChangedIndex,
altitudeChangedMask = 1 << altitudeChangedIndex,
gridAngleChangedMask = 1 << gridAngleChangedIndex,
gridPointsChangedMask = 1 << gridPointsChangedIndex,
cameraTriggerChangedMask = 1 << cameraTriggerChangedIndex,
altDifferenceChangedMask = 1 << altDifferenceChangedIndex,
altPercentChangedMask = 1 << altPercentChangedIndex,
azimuthChangedMask = 1 << azimuthChangedIndex,
commandDescriptionChangedMask = 1 << commandDescriptionChangedIndex,
commandNameChangedMask = 1 << commandNameChangedIndex,
coordinateChangedMask = 1 << coordinateChangedIndex,
exitCoordinateChangedMask = 1 << exitCoordinateChangedIndex,
dirtyChangedMask = 1 << dirtyChangedIndex,
distanceChangedMask = 1 << distanceChangedIndex,
isCurrentItemChangedMask = 1 << isCurrentItemChangedIndex,
sequenceNumberChangedMask = 1 << sequenceNumberChangedIndex,
isSimpleItemChangedMask = 1 << isSimpleItemChangedIndex,
specifiesCoordinateChangedMask = 1 << specifiesCoordinateChangedIndex,
isStandaloneCoordinateChangedMask = 1 << isStandaloneCoordinateChangedIndex,
coordinateHasRelativeAltitudeChangedMask = 1 << coordinateHasRelativeAltitudeChangedIndex,
exitCoordinateHasRelativeAltitudeChangedMask = 1 << exitCoordinateHasRelativeAltitudeChangedIndex,
exitCoordinateSameAsEntryChangedMask = 1 << exitCoordinateSameAsEntryChangedIndex,
};
static const size_t _cComplexMissionItemSignals = maxSignalIndex;
const char* _rgComplexMissionItemSignals[_cComplexMissionItemSignals];
MultiSignalSpy* _multiSpy;
ComplexMissionItem* _complexItem;
QList<QGeoCoordinate> _polyPoints;
};
#endif
...@@ -75,7 +75,7 @@ public: ...@@ -75,7 +75,7 @@ public:
Q_PROPERTY(bool exitCoordinateHasRelativeAltitude READ exitCoordinateHasRelativeAltitude NOTIFY exitCoordinateHasRelativeAltitudeChanged) Q_PROPERTY(bool exitCoordinateHasRelativeAltitude READ exitCoordinateHasRelativeAltitude NOTIFY exitCoordinateHasRelativeAltitudeChanged)
/// @return true: exitCoordinate and coordinate are the same value /// @return true: exitCoordinate and coordinate are the same value
Q_PROPERTY(bool exitCoordinateSameAsEntry READ exitCoordinateSameAsEntry NOTIFY exitCoordinateSameAsEntry) Q_PROPERTY(bool exitCoordinateSameAsEntry READ exitCoordinateSameAsEntry NOTIFY exitCoordinateSameAsEntryChanged)
// General properties associated with all types of visual mission items // General properties associated with all types of visual mission items
...@@ -152,7 +152,7 @@ signals: ...@@ -152,7 +152,7 @@ signals:
void coordinateHasRelativeAltitudeChanged (bool coordinateHasRelativeAltitude); void coordinateHasRelativeAltitudeChanged (bool coordinateHasRelativeAltitude);
void exitCoordinateHasRelativeAltitudeChanged (bool exitCoordinateHasRelativeAltitude); void exitCoordinateHasRelativeAltitudeChanged (bool exitCoordinateHasRelativeAltitude);
void exitCoordinateSameAsEntry (bool exitCoordinateSameAsEntry); void exitCoordinateSameAsEntryChanged (bool exitCoordinateSameAsEntry);
protected: protected:
Vehicle* _vehicle; Vehicle* _vehicle;
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "MessageBoxTest.h" #include "MessageBoxTest.h"
#include "MissionItemTest.h" #include "MissionItemTest.h"
#include "SimpleMissionItemTest.h" #include "SimpleMissionItemTest.h"
#include "ComplexMissionItemTest.h"
#include "MissionControllerTest.h" #include "MissionControllerTest.h"
#include "MissionManagerTest.h" #include "MissionManagerTest.h"
#include "RadioConfigTest.h" #include "RadioConfigTest.h"
...@@ -49,6 +50,7 @@ UT_REGISTER_TEST(MavlinkLogTest) ...@@ -49,6 +50,7 @@ UT_REGISTER_TEST(MavlinkLogTest)
UT_REGISTER_TEST(MessageBoxTest) UT_REGISTER_TEST(MessageBoxTest)
UT_REGISTER_TEST(MissionItemTest) UT_REGISTER_TEST(MissionItemTest)
UT_REGISTER_TEST(SimpleMissionItemTest) UT_REGISTER_TEST(SimpleMissionItemTest)
UT_REGISTER_TEST(ComplexMissionItemTest)
UT_REGISTER_TEST(MissionControllerTest) UT_REGISTER_TEST(MissionControllerTest)
UT_REGISTER_TEST(MissionManagerTest) UT_REGISTER_TEST(MissionManagerTest)
UT_REGISTER_TEST(RadioConfigTest) UT_REGISTER_TEST(RadioConfigTest)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment