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
77e271f4
Unverified
Commit
77e271f4
authored
May 28, 2018
by
Don Gagne
Committed by
GitHub
May 28, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6516 from DonLakeFlyer/CameraSurveyUnitTest
Camera/Transects unit tests and fixes
parents
f1e2638c
de969afa
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
120 additions
and
33 deletions
+120
-33
CameraCalcTest.cc
src/MissionManager/CameraCalcTest.cc
+45
-2
CameraCalcTest.h
src/MissionManager/CameraCalcTest.h
+3
-1
CorridorScanComplexItem.cc
src/MissionManager/CorridorScanComplexItem.cc
+5
-0
CorridorScanComplexItem.h
src/MissionManager/CorridorScanComplexItem.h
+5
-4
SurveyComplexItem.cc
src/MissionManager/SurveyComplexItem.cc
+6
-0
SurveyComplexItem.h
src/MissionManager/SurveyComplexItem.h
+1
-0
TransectStyleComplexItem.cc
src/MissionManager/TransectStyleComplexItem.cc
+1
-5
TransectStyleComplexItem.h
src/MissionManager/TransectStyleComplexItem.h
+2
-1
TransectStyleComplexItemTest.cc
src/MissionManager/TransectStyleComplexItemTest.cc
+39
-12
TransectStyleComplexItemTest.h
src/MissionManager/TransectStyleComplexItemTest.h
+6
-5
UnitTest.cc
src/qgcunittest/UnitTest.cc
+5
-2
UnitTest.h
src/qgcunittest/UnitTest.h
+2
-1
No files found.
src/MissionManager/CameraCalcTest.cc
View file @
77e271f4
...
...
@@ -22,6 +22,8 @@ void CameraCalcTest::init(void)
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_cameraCalc
=
new
CameraCalc
(
_offlineVehicle
,
"CameraCalcUnitTest"
/* settingsGroup */
,
this
);
_cameraCalc
->
cameraName
()
->
setRawValue
(
_cameraCalc
->
customCameraName
());
_cameraCalc
->
setDirty
(
false
);
_rgSignals
[
dirtyChangedIndex
]
=
SIGNAL
(
dirtyChanged
(
bool
));
_rgSignals
[
imageFootprintSideChangedIndex
]
=
SIGNAL
(
imageFootprintSideChanged
(
double
));
...
...
@@ -80,11 +82,52 @@ void CameraCalcTest::_testDirty(void)
}
rgFacts
.
clear
();
_cameraCalc
->
cameraName
()
->
setRawValue
(
_cameraCalc
->
customCameraName
());
_cameraCalc
->
setDistanceToSurfaceRelative
(
!
_cameraCalc
->
distanceToSurfaceRelative
());
QVERIFY
(
_cameraCalc
->
dirty
());
_multiSpy
->
clearAllSignals
();
_cameraCalc
->
setDistanceToSurfaceRelative
(
!
_cameraCalc
->
distanceToSurfaceRelativ
e
());
_cameraCalc
->
cameraName
()
->
setRawValue
(
_cameraCalc
->
manualCameraNam
e
());
QVERIFY
(
_cameraCalc
->
dirty
());
_multiSpy
->
clearAllSignals
();
}
void
CameraCalcTest
::
_testAdjustedFootprint
(
void
)
{
double
adjustedFootprintFrontal
=
_cameraCalc
->
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
();
double
adjustedFootprintSide
=
_cameraCalc
->
adjustedFootprintSide
()
->
rawValue
().
toDouble
();
_cameraCalc
->
valueSetIsDistance
()
->
setRawValue
(
true
);
changeFactValue
(
_cameraCalc
->
distanceToSurface
());
QVERIFY
(
adjustedFootprintFrontal
!=
_cameraCalc
->
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
());
QVERIFY
(
adjustedFootprintSide
!=
_cameraCalc
->
adjustedFootprintSide
()
->
rawValue
().
toDouble
());
adjustedFootprintFrontal
=
_cameraCalc
->
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
();
adjustedFootprintSide
=
_cameraCalc
->
adjustedFootprintSide
()
->
rawValue
().
toDouble
();
_cameraCalc
->
valueSetIsDistance
()
->
setRawValue
(
false
);
changeFactValue
(
_cameraCalc
->
imageDensity
());
QVERIFY
(
adjustedFootprintFrontal
!=
_cameraCalc
->
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
());
QVERIFY
(
adjustedFootprintSide
!=
_cameraCalc
->
adjustedFootprintSide
()
->
rawValue
().
toDouble
());
adjustedFootprintFrontal
=
_cameraCalc
->
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
();
_cameraCalc
->
valueSetIsDistance
()
->
setRawValue
(
true
);
changeFactValue
(
_cameraCalc
->
frontalOverlap
());
QVERIFY
(
adjustedFootprintFrontal
!=
_cameraCalc
->
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
());
adjustedFootprintSide
=
_cameraCalc
->
adjustedFootprintSide
()
->
rawValue
().
toDouble
();
_cameraCalc
->
valueSetIsDistance
()
->
setRawValue
(
false
);
changeFactValue
(
_cameraCalc
->
sideOverlap
());
QVERIFY
(
adjustedFootprintSide
!=
_cameraCalc
->
adjustedFootprintSide
()
->
rawValue
().
toDouble
());
}
void
CameraCalcTest
::
_testAltDensityRecalc
(
void
)
{
_cameraCalc
->
valueSetIsDistance
()
->
setRawValue
(
true
);
double
imageDensity
=
_cameraCalc
->
imageDensity
()
->
rawValue
().
toDouble
();
_cameraCalc
->
distanceToSurface
()
->
setRawValue
(
_cameraCalc
->
distanceToSurface
()
->
rawValue
().
toDouble
()
+
1
);
QVERIFY
(
imageDensity
!=
_cameraCalc
->
imageDensity
()
->
rawValue
().
toDouble
());
_cameraCalc
->
valueSetIsDistance
()
->
setRawValue
(
false
);
double
distanceToSurface
=
_cameraCalc
->
distanceToSurface
()
->
rawValue
().
toDouble
();
_cameraCalc
->
imageDensity
()
->
setRawValue
(
_cameraCalc
->
imageDensity
()
->
rawValue
().
toDouble
()
+
1
);
QVERIFY
(
distanceToSurface
!=
_cameraCalc
->
distanceToSurface
()
->
rawValue
().
toDouble
());
}
src/MissionManager/CameraCalcTest.h
View file @
77e271f4
...
...
@@ -27,7 +27,9 @@ protected:
void
cleanup
(
void
)
final
;
private
slots
:
void
_testDirty
(
void
);
void
_testDirty
(
void
);
void
_testAdjustedFootprint
(
void
);
void
_testAltDensityRecalc
(
void
);
private:
enum
{
...
...
src/MissionManager/CorridorScanComplexItem.cc
View file @
77e271f4
...
...
@@ -480,3 +480,8 @@ bool CorridorScanComplexItem::readyForSave(void) const
{
return
TransectStyleComplexItem
::
readyForSave
();
}
double
CorridorScanComplexItem
::
timeBetweenShots
(
void
)
{
return
_cruiseSpeed
==
0
?
0
:
_cameraCalc
.
adjustedFootprintSide
()
->
rawValue
().
toDouble
()
/
_cruiseSpeed
;
}
src/MissionManager/CorridorScanComplexItem.h
View file @
77e271f4
...
...
@@ -33,15 +33,16 @@ public:
Q_INVOKABLE
void
rotateEntryPoint
(
void
);
// Overrides from ComplexMissionItem
bool
load
(
const
QJsonObject
&
complexObject
,
int
sequenceNumber
,
QString
&
errorString
)
final
;
QString
mapVisualQML
(
void
)
const
final
{
return
QStringLiteral
(
"CorridorScanMapVisual.qml"
);
}
// Overrides from TransectStyleComplexItem
void
save
(
QJsonArray
&
planItems
)
final
;
bool
specifiesCoordinate
(
void
)
const
final
;
void
appendMissionItems
(
QList
<
MissionItem
*>&
items
,
QObject
*
missionItemParent
)
final
;
void
applyNewAltitude
(
double
newAltitude
)
final
;
double
timeBetweenShots
(
void
)
final
;
// Overrides from ComplexMissionItem
bool
load
(
const
QJsonObject
&
complexObject
,
int
sequenceNumber
,
QString
&
errorString
)
final
;
QString
mapVisualQML
(
void
)
const
final
{
return
QStringLiteral
(
"CorridorScanMapVisual.qml"
);
}
// Overrides from VisualMissionionItem
QString
commandDescription
(
void
)
const
final
{
return
tr
(
"Corridor Scan"
);
}
...
...
src/MissionManager/SurveyComplexItem.cc
View file @
77e271f4
...
...
@@ -1433,3 +1433,9 @@ void SurveyComplexItem::rotateEntryPoint(void)
setDirty
(
true
);
}
double
SurveyComplexItem
::
timeBetweenShots
(
void
)
{
return
_cruiseSpeed
==
0
?
0
:
_cameraCalc
.
adjustedFootprintFrontal
()
->
rawValue
().
toDouble
()
/
_cruiseSpeed
;
}
src/MissionManager/SurveyComplexItem.h
View file @
77e271f4
...
...
@@ -40,6 +40,7 @@ public:
bool
specifiesCoordinate
(
void
)
const
final
{
return
true
;
}
void
appendMissionItems
(
QList
<
MissionItem
*>&
items
,
QObject
*
missionItemParent
)
final
;
void
applyNewAltitude
(
double
newAltitude
)
final
;
double
timeBetweenShots
(
void
)
final
;
// Overrides from VisualMissionionItem
QString
commandDescription
(
void
)
const
final
{
return
tr
(
"Survey"
);
}
...
...
src/MissionManager/TransectStyleComplexItem.cc
View file @
77e271f4
...
...
@@ -309,11 +309,6 @@ void TransectStyleComplexItem::applyNewAltitude(double newAltitude)
//_altitudeFact.setRawValue(newAltitude);
}
double
TransectStyleComplexItem
::
timeBetweenShots
(
void
)
{
return
_cruiseSpeed
==
0
?
0
:
_cameraCalc
.
adjustedFootprintSide
()
->
rawValue
().
toDouble
()
/
_cruiseSpeed
;
}
void
TransectStyleComplexItem
::
_updateCoordinateAltitudes
(
void
)
{
emit
coordinateChanged
(
coordinate
());
...
...
@@ -383,6 +378,7 @@ void TransectStyleComplexItem::_rebuildTransects(void)
_rebuildTransectsPhase2
();
emit
lastSequenceNumberChanged
(
lastSequenceNumber
());
emit
timeBetweenShotsChanged
();
}
void
TransectStyleComplexItem
::
_queryTransectsPathHeightInfo
(
void
)
...
...
src/MissionManager/TransectStyleComplexItem.h
View file @
77e271f4
...
...
@@ -59,12 +59,13 @@ public:
Fact
*
terrainAdjustMaxClimbRate
(
void
)
{
return
&
_terrainAdjustMaxDescentRateFact
;
}
int
cameraShots
(
void
)
const
{
return
_cameraShots
;
}
double
timeBetweenShots
(
void
);
double
coveredArea
(
void
)
const
;
double
cameraMinTriggerInterval
(
void
)
const
{
return
_cameraMinTriggerInterval
;
}
bool
hoverAndCaptureAllowed
(
void
)
const
;
bool
followTerrain
(
void
)
const
{
return
_followTerrain
;
}
virtual
double
timeBetweenShots
(
void
)
{
return
0
;
}
// Most be overridden. Implementation here is needed for unit testing.
void
setFollowTerrain
(
bool
followTerrain
);
// Overrides from ComplexMissionItem
...
...
src/MissionManager/TransectStyleComplexItemTest.cc
View file @
77e271f4
...
...
@@ -25,6 +25,10 @@ void TransectStyleComplexItemTest::init(void)
_offlineVehicle
=
new
Vehicle
(
MAV_AUTOPILOT_PX4
,
MAV_TYPE_QUADROTOR
,
qgcApp
()
->
toolbox
()
->
firmwarePluginManager
(),
this
);
_transectStyleItem
=
new
TransectStyleItem
(
_offlineVehicle
,
this
);
_transectStyleItem
->
cameraTriggerInTurnAround
()
->
setRawValue
(
false
);
_transectStyleItem
->
cameraCalc
()
->
cameraName
()
->
setRawValue
(
_transectStyleItem
->
cameraCalc
()
->
customCameraName
());
_transectStyleItem
->
cameraCalc
()
->
valueSetIsDistance
()
->
setRawValue
(
true
);
_transectStyleItem
->
cameraCalc
()
->
distanceToSurface
()
->
setRawValue
(
100
);
_setSurveyAreaPolygon
();
_transectStyleItem
->
setDirty
(
false
);
...
...
@@ -107,36 +111,58 @@ void TransectStyleComplexItemTest::_setSurveyAreaPolygon(void)
void
TransectStyleComplexItemTest
::
_testRebuildTransects
(
void
)
{
// Changing the survey polygon should trigger:
// _rebuildTransects call
// _rebuildTransects call
s
// coveredAreaChanged signal
// lastSequenceNumberChanged signal
_adjustSurveAreaPolygon
();
QVERIFY
(
_transectStyleItem
->
rebuildTransectsCalled
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase1Called
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase2Called
);
QVERIFY
(
_multiSpy
->
checkSignalsByMask
(
coveredAreaChangedMask
|
lastSequenceNumberChangedMask
));
_transectStyleItem
->
rebuildTransectsCalled
=
false
;
_transectStyleItem
->
rebuildTransectsPhase1Called
=
false
;
_transectStyleItem
->
rebuildTransectsPhase2Called
=
false
;
_transectStyleItem
->
setDirty
(
false
);
_multiSpy
->
clearAllSignals
();
// Changes to these facts should trigger:
// _rebuildTransects call
// _rebuildTransects call
s
// lastSequenceNumberChanged signal
QList
<
Fact
*>
rgFacts
;
rgFacts
<<
_transectStyleItem
->
turnAroundDistance
()
<<
_transectStyleItem
->
cameraTriggerInTurnAround
()
<<
_transectStyleItem
->
hoverAndCapture
()
<<
_transectStyleItem
->
refly90Degrees
()
<<
_transectStyleItem
->
cameraCalc
()
->
adjustedFootprintSide
()
<<
_transectStyleItem
->
cameraCalc
()
->
adjustedFootprintFrontal
();
<<
_transectStyleItem
->
cameraCalc
()
->
frontalOverlap
()
<<
_transectStyleItem
->
cameraCalc
()
->
sideOverlap
();
foreach
(
Fact
*
fact
,
rgFacts
)
{
qDebug
()
<<
fact
->
name
();
changeFactValue
(
fact
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsCalled
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase1Called
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase2Called
);
QVERIFY
(
_multiSpy
->
checkSignalsByMask
(
lastSequenceNumberChangedMask
));
_transectStyleItem
->
setDirty
(
false
);
_multiSpy
->
clearAllSignals
();
_transectStyleItem
->
rebuildTransectsCalled
=
false
;
_transectStyleItem
->
rebuildTransectsPhase1Called
=
false
;
_transectStyleItem
->
rebuildTransectsPhase2Called
=
false
;
}
rgFacts
.
clear
();
_transectStyleItem
->
cameraCalc
()
->
valueSetIsDistance
()
->
setRawValue
(
false
);
_transectStyleItem
->
rebuildTransectsPhase1Called
=
false
;
_transectStyleItem
->
rebuildTransectsPhase2Called
=
false
;
changeFactValue
(
_transectStyleItem
->
cameraCalc
()
->
imageDensity
());
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase1Called
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase2Called
);
QVERIFY
(
_multiSpy
->
checkSignalsByMask
(
lastSequenceNumberChangedMask
));
_multiSpy
->
clearAllSignals
();
_transectStyleItem
->
cameraCalc
()
->
valueSetIsDistance
()
->
setRawValue
(
true
);
_transectStyleItem
->
rebuildTransectsPhase1Called
=
false
;
_transectStyleItem
->
rebuildTransectsPhase2Called
=
false
;
changeFactValue
(
_transectStyleItem
->
cameraCalc
()
->
distanceToSurface
());
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase1Called
);
QVERIFY
(
_transectStyleItem
->
rebuildTransectsPhase2Called
);
QVERIFY
(
_multiSpy
->
checkSignalsByMask
(
lastSequenceNumberChangedMask
));
_multiSpy
->
clearAllSignals
();
}
void
TransectStyleComplexItemTest
::
_testDistanceSignalling
(
void
)
...
...
@@ -193,17 +219,18 @@ void TransectStyleComplexItemTest::_testAltMode(void)
TransectStyleItem
::
TransectStyleItem
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
TransectStyleComplexItem
(
vehicle
,
false
/* flyView */
,
QStringLiteral
(
"UnitTestTransect"
),
parent
)
,
rebuildTransectsCalled
(
false
)
,
rebuildTransectsPhase1Called
(
false
)
,
rebuildTransectsPhase2Called
(
false
)
{
}
void
TransectStyleItem
::
_rebuildTransectsPhase1
(
void
)
{
rebuildTransectsCalled
=
true
;
rebuildTransects
Phase1
Called
=
true
;
}
void
TransectStyleItem
::
_rebuildTransectsPhase2
(
void
)
{
rebuildTransectsPhase2Called
=
true
;
}
src/MissionManager/TransectStyleComplexItemTest.h
View file @
77e271f4
...
...
@@ -31,7 +31,7 @@ protected:
private
slots
:
void
_testDirty
(
void
);
void
_testRebuildTransects
(
void
);
void
_testDistanceSignalling
(
void
);
void
_testDistanceSignalling
(
void
);
void
_testAltMode
(
void
);
private:
...
...
@@ -97,7 +97,8 @@ public:
void
appendMissionItems
(
QList
<
MissionItem
*>&
items
,
QObject
*
missionItemParent
)
final
{
Q_UNUSED
(
items
);
Q_UNUSED
(
missionItemParent
);
}
void
applyNewAltitude
(
double
newAltitude
)
final
{
Q_UNUSED
(
newAltitude
);
}
bool
rebuildTransectsCalled
;
bool
rebuildTransectsPhase1Called
;
bool
rebuildTransectsPhase2Called
;
private
slots
:
// Overrides from TransectStyleComplexItem
...
...
src/qgcunittest/UnitTest.cc
View file @
77e271f4
...
...
@@ -524,11 +524,14 @@ bool UnitTest::doubleNaNCompare(double value1, double value2)
}
}
void
UnitTest
::
changeFactValue
(
Fact
*
fact
)
void
UnitTest
::
changeFactValue
(
Fact
*
fact
,
double
increment
)
{
if
(
fact
->
typeIsBool
())
{
fact
->
setRawValue
(
!
fact
->
rawValue
().
toBool
());
}
else
{
fact
->
setRawValue
(
fact
->
rawValue
().
toDouble
()
+
1
);
if
(
increment
==
0
)
{
increment
=
1
;
}
fact
->
setRawValue
(
fact
->
rawValue
().
toDouble
()
+
increment
);
}
}
src/qgcunittest/UnitTest.h
View file @
77e271f4
...
...
@@ -98,7 +98,8 @@ public:
static
bool
doubleNaNCompare
(
double
value1
,
double
value2
);
/// Changes the Facts rawValue such that it emits a valueChanged signal.
void
changeFactValue
(
Fact
*
fact
);
/// @param increment 0 use standard increment, other increment by specified amount if double value
void
changeFactValue
(
Fact
*
fact
,
double
increment
=
0
);
protected
slots
:
...
...
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