Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
43776e8f
Commit
43776e8f
authored
Oct 26, 2015
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Home Position unit testing
parent
579206c6
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
96 additions
and
34 deletions
+96
-34
MissionControllerManagerTest.cc
src/MissionManager/MissionControllerManagerTest.cc
+1
-4
MissionControllerTest.cc
src/MissionManager/MissionControllerTest.cc
+57
-21
MissionControllerTest.h
src/MissionManager/MissionControllerTest.h
+29
-9
MultiSignalSpy.cc
src/qgcunittest/MultiSignalSpy.cc
+6
-0
MultiSignalSpy.h
src/qgcunittest/MultiSignalSpy.h
+3
-0
No files found.
src/MissionManager/MissionControllerManagerTest.cc
View file @
43776e8f
...
...
@@ -92,8 +92,5 @@ void MissionControllerManagerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareTy
void
MissionControllerManagerTest
::
_checkInProgressValues
(
bool
inProgress
)
{
QCOMPARE
(
_missionManager
->
inProgress
(),
inProgress
);
QSignalSpy
*
spy
=
_multiSpyMissionManager
->
getSpyByIndex
(
inProgressChangedSignalIndex
);
QList
<
QVariant
>
signalArgs
=
spy
->
takeFirst
();
QCOMPARE
(
signalArgs
.
count
(),
1
);
QCOMPARE
(
signalArgs
[
0
].
toBool
(),
inProgress
);
QCOMPARE
(
_multiSpyMissionManager
->
pullBoolFromSignalIndex
(
inProgressChangedSignalIndex
),
inProgress
);
}
src/MissionManager/MissionControllerTest.cc
View file @
43776e8f
...
...
@@ -28,7 +28,9 @@
UT_REGISTER_TEST
(
MissionControllerTest
)
MissionControllerTest
::
MissionControllerTest
(
void
)
:
_missionController
(
NULL
)
:
_multiSpyMissionController
(
NULL
)
,
_multiSpyMissionItem
(
NULL
)
,
_missionController
(
NULL
)
{
}
...
...
@@ -38,6 +40,12 @@ void MissionControllerTest::cleanup(void)
delete
_missionController
;
_missionController
=
NULL
;
delete
_multiSpyMissionController
;
_multiSpyMissionController
=
NULL
;
delete
_multiSpyMissionItem
;
_multiSpyMissionItem
=
NULL
;
MissionControllerManagerTest
::
cleanup
();
}
...
...
@@ -47,10 +55,20 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
MissionControllerManagerTest
::
_initForFirmwareType
(
firmwareType
);
_rgSignals
[
missionItemsChangedSignalIndex
]
=
SIGNAL
(
missionItemsChanged
());
_rgSignals
[
waypointLinesChangedSignalIndex
]
=
SIGNAL
(
waypointLinesChanged
());
_rgSignals
[
liveHomePositionAvailableChangedSignalIndex
]
=
SIGNAL
(
liveHomePositionAvailableChanged
(
bool
));
_rgSignals
[
liveHomePositionChangedSignalIndex
]
=
SIGNAL
(
liveHomePositionChanged
(
const
QGeoCoordinate
&
));
void
coordinateChanged
(
const
QGeoCoordinate
&
coordinate
);
void
headingDegreesChanged
(
double
heading
);
void
dirtyChanged
(
bool
dirty
);
void
homePositionValidChanged
(
bool
homePostionValid
);
// MissionItem signals
_rgMissionItemSignals
[
coordinateChangedSignalIndex
]
=
SIGNAL
(
coordinateChanged
(
const
QGeoCoordinate
&
));
_rgMissionItemSignals
[
homePositionValidChangedSignalIndex
]
=
SIGNAL
(
homePositionValidChanged
(
bool
));
// MissionController signals
_rgMissionControllerSignals
[
missionItemsChangedSignalIndex
]
=
SIGNAL
(
missionItemsChanged
());
_rgMissionControllerSignals
[
waypointLinesChangedSignalIndex
]
=
SIGNAL
(
waypointLinesChanged
());
_rgMissionControllerSignals
[
liveHomePositionAvailableChangedSignalIndex
]
=
SIGNAL
(
liveHomePositionAvailableChanged
(
bool
));
_rgMissionControllerSignals
[
liveHomePositionChangedSignalIndex
]
=
SIGNAL
(
liveHomePositionChanged
(
const
QGeoCoordinate
&
));
if
(
!
_missionController
)
{
startController
=
true
;
...
...
@@ -58,17 +76,17 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
Q_CHECK_PTR
(
_missionController
);
}
_multiSpy
=
new
MultiSignalSpy
();
Q_CHECK_PTR
(
_multiSpy
);
QCOMPARE
(
_multiSpy
->
init
(
_missionController
,
_rgSignals
,
_c
Signals
),
true
);
_multiSpy
MissionController
=
new
MultiSignalSpy
();
Q_CHECK_PTR
(
_multiSpy
MissionController
);
QCOMPARE
(
_multiSpy
MissionController
->
init
(
_missionController
,
_rgMissionControllerSignals
,
_cMissionController
Signals
),
true
);
if
(
startController
)
{
_missionController
->
start
(
false
/* editMode */
);
}
// All signals should some through on start
QCOMPARE
(
_multiSpy
->
checkOnlySignalsByMask
(
missionItemsChangedSignalMask
|
waypointLinesChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
liveHomePositionChangedSignalMask
),
true
);
_multiSpy
->
clearAllSignals
();
QCOMPARE
(
_multiSpy
MissionController
->
checkOnlySignalsByMask
(
missionItemsChangedSignalMask
|
waypointLinesChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
liveHomePositionChangedSignalMask
),
true
);
_multiSpy
MissionController
->
clearAllSignals
();
QmlObjectListModel
*
missionItems
=
_missionController
->
missionItems
();
QVERIFY
(
missionItems
);
...
...
@@ -76,10 +94,11 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
// Empty vehicle only has home position
QCOMPARE
(
missionItems
->
count
(),
1
);
// Home position should be in first slot
// Home position should be in first slot
, but not yet valid
MissionItem
*
homeItem
=
qobject_cast
<
MissionItem
*>
(
missionItems
->
get
(
0
));
QVERIFY
(
homeItem
);
QCOMPARE
(
homeItem
->
homePosition
(),
true
);
QCOMPARE
(
homeItem
->
homePositionValid
(),
false
);
// Home should have no children
QCOMPARE
(
homeItem
->
childItems
()
->
count
(),
0
);
...
...
@@ -111,23 +130,31 @@ void MissionControllerTest::_testEmptyVehicleWorker(MAV_AUTOPILOT firmwareType)
MissionItem
*
homeItem
=
qobject_cast
<
MissionItem
*>
(
missionItems
->
get
(
0
));
QVERIFY
(
homeItem
);
_setupMissionItemSignals
(
homeItem
);
if
(
expectedHomePositionValid
)
{
// Wait for the home position to show up
if
(
!
_missionController
->
liveHomePositionAvailable
())
{
QVERIFY
(
_multiSpy
->
waitForSignalByIndex
(
liveHomePositionChangedSignalIndex
,
2000
));
QVERIFY
(
_multiSpyMissionController
->
waitForSignalByIndex
(
liveHomePositionAvailableChangedSignalIndex
,
2000
));
QCOMPARE
(
_multiSpyMissionController
->
pullBoolFromSignalIndex
(
liveHomePositionAvailableChangedSignalIndex
),
true
);
}
// Once the home position shows up we get a number of addititional signals
QCOMPARE
(
_multiSpy
->
checkOnlySignalsByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
waypointLinesChangedSignalMask
),
true
);
if
(
!
homeItem
->
homePositionValid
())
{
QVERIFY
(
_multiSpyMissionItem
->
waitForSignalByIndex
(
homePositionValidChangedSignalIndex
,
2000
));
QCOMPARE
(
_multiSpyMissionItem
->
pullBoolFromSignalIndex
(
homePositionValidChangedSignalIndex
),
true
);
}
// These should be signalled once
QCOMPARE
(
_multiSpy
->
checkSignalByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
),
true
);
// Once the home position shows up we get a number of addititional signals
// Waypoint lines get spit out multiple tiems
QCOMPARE
(
_multiSpy
->
checkSignalByMask
(
waypointLinesChangedSignalMask
),
false
);
QCOMPARE
(
_multiSpyMissionController
->
checkOnlySignalsByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
waypointLinesChangedSignalMask
),
true
);
QCOMPARE
(
_multiSpyMissionController
->
checkSignalByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
),
true
);
QCOMPARE
(
_multiSpyMissionController
->
checkSignalByMask
(
waypointLinesChangedSignalMask
),
false
);
_multiSpy
->
clearAllSignals
();
}
QCOMPARE
(
_multiSpyMissionItem
->
checkSignalByMask
(
homePositionValidChangedSignalMask
),
true
);
_multiSpyMissionController
->
clearAllSignals
();
_multiSpyMissionItem
->
clearAllSignals
();
}
QCOMPARE
(
homeItem
->
homePositionValid
(),
expectedHomePositionValid
);
...
...
@@ -153,7 +180,7 @@ void MissionControllerTest::_testAddWaypointWorker(MAV_AUTOPILOT firmwareType)
_missionController
->
addMissionItem
(
coordinate
);
QCOMPARE
(
_multiSpy
->
checkOnlySignalsByMask
(
waypointLinesChangedSignalMask
),
true
);
QCOMPARE
(
_multiSpy
MissionController
->
checkOnlySignalsByMask
(
waypointLinesChangedSignalMask
),
true
);
QmlObjectListModel
*
missionItems
=
_missionController
->
missionItems
();
QVERIFY
(
missionItems
);
...
...
@@ -216,3 +243,12 @@ void MissionControllerTest::_testOfflineToOnlinePX4(void)
{
_testOfflineToOnlineWorker
(
MAV_AUTOPILOT_PX4
);
}
void
MissionControllerTest
::
_setupMissionItemSignals
(
MissionItem
*
item
)
{
delete
_multiSpyMissionItem
;
_multiSpyMissionItem
=
new
MultiSignalSpy
();
Q_CHECK_PTR
(
_multiSpyMissionItem
);
QCOMPARE
(
_multiSpyMissionItem
->
init
(
item
,
_rgMissionItemSignals
,
_cMissionItemSignals
),
true
);
}
src/MissionManager/MissionControllerTest.h
View file @
43776e8f
...
...
@@ -43,6 +43,10 @@ public:
private
slots
:
void
cleanup
(
void
);
void
_testEmptyVehicleAPM
(
void
);
void
_testEmptyVehiclePX4
(
void
);
void
_testAddWayppointAPM
(
void
);
void
_testAddWayppointPX4
(
void
);
void
_testOfflineToOnlineAPM
(
void
);
void
_testOfflineToOnlinePX4
(
void
);
...
...
@@ -51,30 +55,46 @@ private:
void
_testEmptyVehicleWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testAddWaypointWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testOfflineToOnlineWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_setupMissionItemSignals
(
MissionItem
*
item
);
void
_testEmptyVehicleAPM
(
void
);
void
_testEmptyVehiclePX4
(
void
);
void
_testAddWayppointAPM
(
void
);
void
_testAddWayppointPX4
(
void
);
// MissiomItems signals
enum
{
coordinateChangedSignalIndex
=
0
,
homePositionValidChangedSignalIndex
,
missionItemMaxSignalIndex
};
enum
{
coordinateChangedSignalMask
=
1
<<
coordinateChangedSignalIndex
,
homePositionValidChangedSignalMask
=
1
<<
homePositionValidChangedSignalIndex
,
missionItemMaxSignalMask
=
1
<<
missionItemMaxSignalIndex
,
};
// MissionController signals
enum
{
missionItemsChangedSignalIndex
=
0
,
waypointLinesChangedSignalIndex
,
liveHomePositionAvailableChangedSignalIndex
,
liveHomePositionChangedSignalIndex
,
maxSignalIndex
m
issionControllerM
axSignalIndex
};
enum
{
missionItemsChangedSignalMask
=
1
<<
missionItemsChangedSignalIndex
,
waypointLinesChangedSignalMask
=
1
<<
waypointLinesChangedSignalIndex
,
waypointLinesChangedSignalMask
=
1
<<
waypointLinesChangedSignalIndex
,
liveHomePositionAvailableChangedSignalMask
=
1
<<
liveHomePositionAvailableChangedSignalIndex
,
liveHomePositionChangedSignalMask
=
1
<<
liveHomePositionChangedSignalIndex
,
};
MultiSignalSpy
*
_multiSpy
;
static
const
size_t
_cSignals
=
maxSignalIndex
;
const
char
*
_rgSignals
[
_cSignals
];
MultiSignalSpy
*
_multiSpyMissionController
;
static
const
size_t
_cMissionControllerSignals
=
missionControllerMaxSignalIndex
;
const
char
*
_rgMissionControllerSignals
[
_cMissionControllerSignals
];
MultiSignalSpy
*
_multiSpyMissionItem
;
static
const
size_t
_cMissionItemSignals
=
missionItemMaxSignalIndex
;
const
char
*
_rgMissionItemSignals
[
_cMissionItemSignals
];
MissionController
*
_missionController
;
};
...
...
src/qgcunittest/MultiSignalSpy.cc
View file @
43776e8f
...
...
@@ -257,3 +257,9 @@ void MultiSignalSpy::_printSignalState(void)
qDebug
()
<<
"Signal index:"
<<
i
<<
"count:"
<<
spy
->
count
();
}
}
bool
MultiSignalSpy
::
pullBoolFromSignalIndex
(
quint16
index
)
{
QSignalSpy
*
spy
=
getSpyByIndex
(
index
);
return
spy
->
value
(
0
).
value
(
0
).
toBool
();
}
src/qgcunittest/MultiSignalSpy.h
View file @
43776e8f
...
...
@@ -71,6 +71,9 @@ public:
bool
waitForSignalByIndex
(
quint16
index
,
int
msec
);
QSignalSpy
*
getSpyByIndex
(
quint16
index
);
/// Returns the boolean value for a signal which has a single bool param
bool
pullBoolFromSignalIndex
(
quint16
index
);
private:
// QObject overrides
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment