Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
43776e8f
Commit
43776e8f
authored
Oct 26, 2015
by
Don Gagne
Browse files
Home Position unit testing
parent
579206c6
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/MissionManager/MissionControllerManagerTest.cc
View file @
43776e8f
...
@@ -92,8 +92,5 @@ void MissionControllerManagerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareTy
...
@@ -92,8 +92,5 @@ void MissionControllerManagerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareTy
void
MissionControllerManagerTest
::
_checkInProgressValues
(
bool
inProgress
)
void
MissionControllerManagerTest
::
_checkInProgressValues
(
bool
inProgress
)
{
{
QCOMPARE
(
_missionManager
->
inProgress
(),
inProgress
);
QCOMPARE
(
_missionManager
->
inProgress
(),
inProgress
);
QSignalSpy
*
spy
=
_multiSpyMissionManager
->
getSpyByIndex
(
inProgressChangedSignalIndex
);
QCOMPARE
(
_multiSpyMissionManager
->
pullBoolFromSignalIndex
(
inProgressChangedSignalIndex
),
inProgress
);
QList
<
QVariant
>
signalArgs
=
spy
->
takeFirst
();
QCOMPARE
(
signalArgs
.
count
(),
1
);
QCOMPARE
(
signalArgs
[
0
].
toBool
(),
inProgress
);
}
}
src/MissionManager/MissionControllerTest.cc
View file @
43776e8f
...
@@ -28,7 +28,9 @@
...
@@ -28,7 +28,9 @@
UT_REGISTER_TEST
(
MissionControllerTest
)
UT_REGISTER_TEST
(
MissionControllerTest
)
MissionControllerTest
::
MissionControllerTest
(
void
)
MissionControllerTest
::
MissionControllerTest
(
void
)
:
_missionController
(
NULL
)
:
_multiSpyMissionController
(
NULL
)
,
_multiSpyMissionItem
(
NULL
)
,
_missionController
(
NULL
)
{
{
}
}
...
@@ -38,6 +40,12 @@ void MissionControllerTest::cleanup(void)
...
@@ -38,6 +40,12 @@ void MissionControllerTest::cleanup(void)
delete
_missionController
;
delete
_missionController
;
_missionController
=
NULL
;
_missionController
=
NULL
;
delete
_multiSpyMissionController
;
_multiSpyMissionController
=
NULL
;
delete
_multiSpyMissionItem
;
_multiSpyMissionItem
=
NULL
;
MissionControllerManagerTest
::
cleanup
();
MissionControllerManagerTest
::
cleanup
();
}
}
...
@@ -47,10 +55,20 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
...
@@ -47,10 +55,20 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
MissionControllerManagerTest
::
_initForFirmwareType
(
firmwareType
);
MissionControllerManagerTest
::
_initForFirmwareType
(
firmwareType
);
_rgSignals
[
missionItemsChangedSignalIndex
]
=
SIGNAL
(
missionItemsChanged
());
void
coordinateChanged
(
const
QGeoCoordinate
&
coordinate
);
_rgSignals
[
waypointLinesChangedSignalIndex
]
=
SIGNAL
(
waypointLinesChanged
());
void
headingDegreesChanged
(
double
heading
);
_rgSignals
[
liveHomePositionAvailableChangedSignalIndex
]
=
SIGNAL
(
liveHomePositionAvailableChanged
(
bool
));
void
dirtyChanged
(
bool
dirty
);
_rgSignals
[
liveHomePositionChangedSignalIndex
]
=
SIGNAL
(
liveHomePositionChanged
(
const
QGeoCoordinate
&
));
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
)
{
if
(
!
_missionController
)
{
startController
=
true
;
startController
=
true
;
...
@@ -58,17 +76,17 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
...
@@ -58,17 +76,17 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
Q_CHECK_PTR
(
_missionController
);
Q_CHECK_PTR
(
_missionController
);
}
}
_multiSpy
=
new
MultiSignalSpy
();
_multiSpy
MissionController
=
new
MultiSignalSpy
();
Q_CHECK_PTR
(
_multiSpy
);
Q_CHECK_PTR
(
_multiSpy
MissionController
);
QCOMPARE
(
_multiSpy
->
init
(
_missionController
,
_rg
Signals
,
_c
Signals
),
true
);
QCOMPARE
(
_multiSpy
MissionController
->
init
(
_missionController
,
_rg
MissionControllerSignals
,
_cMissionController
Signals
),
true
);
if
(
startController
)
{
if
(
startController
)
{
_missionController
->
start
(
false
/* editMode */
);
_missionController
->
start
(
false
/* editMode */
);
}
}
// All signals should some through on start
// All signals should some through on start
QCOMPARE
(
_multiSpy
->
checkOnlySignalsByMask
(
missionItemsChangedSignalMask
|
waypointLinesChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
liveHomePositionChangedSignalMask
),
true
);
QCOMPARE
(
_multiSpy
MissionController
->
checkOnlySignalsByMask
(
missionItemsChangedSignalMask
|
waypointLinesChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
liveHomePositionChangedSignalMask
),
true
);
_multiSpy
->
clearAllSignals
();
_multiSpy
MissionController
->
clearAllSignals
();
QmlObjectListModel
*
missionItems
=
_missionController
->
missionItems
();
QmlObjectListModel
*
missionItems
=
_missionController
->
missionItems
();
QVERIFY
(
missionItems
);
QVERIFY
(
missionItems
);
...
@@ -76,10 +94,11 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
...
@@ -76,10 +94,11 @@ void MissionControllerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareType)
// Empty vehicle only has home position
// Empty vehicle only has home position
QCOMPARE
(
missionItems
->
count
(),
1
);
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
));
MissionItem
*
homeItem
=
qobject_cast
<
MissionItem
*>
(
missionItems
->
get
(
0
));
QVERIFY
(
homeItem
);
QVERIFY
(
homeItem
);
QCOMPARE
(
homeItem
->
homePosition
(),
true
);
QCOMPARE
(
homeItem
->
homePosition
(),
true
);
QCOMPARE
(
homeItem
->
homePositionValid
(),
false
);
// Home should have no children
// Home should have no children
QCOMPARE
(
homeItem
->
childItems
()
->
count
(),
0
);
QCOMPARE
(
homeItem
->
childItems
()
->
count
(),
0
);
...
@@ -111,23 +130,31 @@ void MissionControllerTest::_testEmptyVehicleWorker(MAV_AUTOPILOT firmwareType)
...
@@ -111,23 +130,31 @@ void MissionControllerTest::_testEmptyVehicleWorker(MAV_AUTOPILOT firmwareType)
MissionItem
*
homeItem
=
qobject_cast
<
MissionItem
*>
(
missionItems
->
get
(
0
));
MissionItem
*
homeItem
=
qobject_cast
<
MissionItem
*>
(
missionItems
->
get
(
0
));
QVERIFY
(
homeItem
);
QVERIFY
(
homeItem
);
_setupMissionItemSignals
(
homeItem
);
if
(
expectedHomePositionValid
)
{
if
(
expectedHomePositionValid
)
{
// Wait for the home position to show up
// Wait for the home position to show up
if
(
!
_missionController
->
liveHomePositionAvailable
())
{
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
if
(
!
homeItem
->
homePositionValid
())
{
QCOMPARE
(
_multiSpy
->
checkOnlySignalsByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
waypointLinesChangedSignalMask
),
true
);
QVERIFY
(
_multiSpyMissionItem
->
waitForSignalByIndex
(
homePositionValidChangedSignalIndex
,
2000
));
QCOMPARE
(
_multiSpyMissionItem
->
pullBoolFromSignalIndex
(
homePositionValidChangedSignalIndex
),
true
);
}
// These should be signalled once
// Once the home position shows up we get a number of addititional signals
QCOMPARE
(
_multiSpy
->
checkSignalByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
),
true
);
// Waypoint lines get spit out multiple tiems
QCOMPARE
(
_multiSpyMissionController
->
checkOnlySignalsByMask
(
liveHomePositionChangedSignalMask
|
liveHomePositionAvailableChangedSignalMask
|
waypointLinesChangedSignalMask
),
true
);
QCOMPARE
(
_multiSpy
->
checkSignalByMask
(
waypointLinesChangedSignalMask
),
false
);
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
);
QCOMPARE
(
homeItem
->
homePositionValid
(),
expectedHomePositionValid
);
...
@@ -153,7 +180,7 @@ void MissionControllerTest::_testAddWaypointWorker(MAV_AUTOPILOT firmwareType)
...
@@ -153,7 +180,7 @@ void MissionControllerTest::_testAddWaypointWorker(MAV_AUTOPILOT firmwareType)
_missionController
->
addMissionItem
(
coordinate
);
_missionController
->
addMissionItem
(
coordinate
);
QCOMPARE
(
_multiSpy
->
checkOnlySignalsByMask
(
waypointLinesChangedSignalMask
),
true
);
QCOMPARE
(
_multiSpy
MissionController
->
checkOnlySignalsByMask
(
waypointLinesChangedSignalMask
),
true
);
QmlObjectListModel
*
missionItems
=
_missionController
->
missionItems
();
QmlObjectListModel
*
missionItems
=
_missionController
->
missionItems
();
QVERIFY
(
missionItems
);
QVERIFY
(
missionItems
);
...
@@ -216,3 +243,12 @@ void MissionControllerTest::_testOfflineToOnlinePX4(void)
...
@@ -216,3 +243,12 @@ void MissionControllerTest::_testOfflineToOnlinePX4(void)
{
{
_testOfflineToOnlineWorker
(
MAV_AUTOPILOT_PX4
);
_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:
...
@@ -43,6 +43,10 @@ public:
private
slots
:
private
slots
:
void
cleanup
(
void
);
void
cleanup
(
void
);
void
_testEmptyVehicleAPM
(
void
);
void
_testEmptyVehiclePX4
(
void
);
void
_testAddWayppointAPM
(
void
);
void
_testAddWayppointPX4
(
void
);
void
_testOfflineToOnlineAPM
(
void
);
void
_testOfflineToOnlineAPM
(
void
);
void
_testOfflineToOnlinePX4
(
void
);
void
_testOfflineToOnlinePX4
(
void
);
...
@@ -51,30 +55,46 @@ private:
...
@@ -51,30 +55,46 @@ private:
void
_testEmptyVehicleWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testEmptyVehicleWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testAddWaypointWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testAddWaypointWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testOfflineToOnlineWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_testOfflineToOnlineWorker
(
MAV_AUTOPILOT
firmwareType
);
void
_setupMissionItemSignals
(
MissionItem
*
item
);
void
_testEmptyVehicleAPM
(
void
);
// MissiomItems signals
void
_testEmptyVehiclePX4
(
void
);
void
_testAddWayppointAPM
(
void
);
enum
{
void
_testAddWayppointPX4
(
void
);
coordinateChangedSignalIndex
=
0
,
homePositionValidChangedSignalIndex
,
missionItemMaxSignalIndex
};
enum
{
coordinateChangedSignalMask
=
1
<<
coordinateChangedSignalIndex
,
homePositionValidChangedSignalMask
=
1
<<
homePositionValidChangedSignalIndex
,
missionItemMaxSignalMask
=
1
<<
missionItemMaxSignalIndex
,
};
// MissionController signals
enum
{
enum
{
missionItemsChangedSignalIndex
=
0
,
missionItemsChangedSignalIndex
=
0
,
waypointLinesChangedSignalIndex
,
waypointLinesChangedSignalIndex
,
liveHomePositionAvailableChangedSignalIndex
,
liveHomePositionAvailableChangedSignalIndex
,
liveHomePositionChangedSignalIndex
,
liveHomePositionChangedSignalIndex
,
maxSignalIndex
m
issionControllerM
axSignalIndex
};
};
enum
{
enum
{
missionItemsChangedSignalMask
=
1
<<
missionItemsChangedSignalIndex
,
missionItemsChangedSignalMask
=
1
<<
missionItemsChangedSignalIndex
,
waypointLinesChangedSignalMask
=
1
<<
waypointLinesChangedSignalIndex
,
waypointLinesChangedSignalMask
=
1
<<
waypointLinesChangedSignalIndex
,
liveHomePositionAvailableChangedSignalMask
=
1
<<
liveHomePositionAvailableChangedSignalIndex
,
liveHomePositionAvailableChangedSignalMask
=
1
<<
liveHomePositionAvailableChangedSignalIndex
,
liveHomePositionChangedSignalMask
=
1
<<
liveHomePositionChangedSignalIndex
,
liveHomePositionChangedSignalMask
=
1
<<
liveHomePositionChangedSignalIndex
,
};
};
MultiSignalSpy
*
_multiSpy
;
MultiSignalSpy
*
_multiSpyMissionController
;
static
const
size_t
_cSignals
=
maxSignalIndex
;
static
const
size_t
_cMissionControllerSignals
=
missionControllerMaxSignalIndex
;
const
char
*
_rgSignals
[
_cSignals
];
const
char
*
_rgMissionControllerSignals
[
_cMissionControllerSignals
];
MultiSignalSpy
*
_multiSpyMissionItem
;
static
const
size_t
_cMissionItemSignals
=
missionItemMaxSignalIndex
;
const
char
*
_rgMissionItemSignals
[
_cMissionItemSignals
];
MissionController
*
_missionController
;
MissionController
*
_missionController
;
};
};
...
...
src/qgcunittest/MultiSignalSpy.cc
View file @
43776e8f
...
@@ -257,3 +257,9 @@ void MultiSignalSpy::_printSignalState(void)
...
@@ -257,3 +257,9 @@ void MultiSignalSpy::_printSignalState(void)
qDebug
()
<<
"Signal index:"
<<
i
<<
"count:"
<<
spy
->
count
();
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:
...
@@ -71,6 +71,9 @@ public:
bool
waitForSignalByIndex
(
quint16
index
,
int
msec
);
bool
waitForSignalByIndex
(
quint16
index
,
int
msec
);
QSignalSpy
*
getSpyByIndex
(
quint16
index
);
QSignalSpy
*
getSpyByIndex
(
quint16
index
);
/// Returns the boolean value for a signal which has a single bool param
bool
pullBoolFromSignalIndex
(
quint16
index
);
private:
private:
// QObject overrides
// QObject overrides
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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