Commit f029110b authored by Lorenz Meier's avatar Lorenz Meier

Merge pull request #443 from DonLakeFlyer/UnitTest

Unit test changes
parents e59fa155 f83b8b10
# -------------------------------------------------
# QGroundControl - Micro Air Vehicle Groundstation
# Please see our website at <http://qgroundcontrol.org>
# Maintainer:
# Lorenz Meier <lm@inf.ethz.ch>
# (c) 2009-2011 QGroundControl Developers
# This file is part of the open groundstation 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/>.
# -------------------------------------------------
TARGET = qgcunittest
QT += testlib
QGCS_UNITTEST_OVERRIDE = true
include (qgroundcontrol.pro)
TESTDIR = $$BASEDIR/src/qgcunittest
HEADERS += \
$$TESTDIR/AutoTest.h \
$$TESTDIR/UASUnitTest.h \
SOURCES += \
$$TESTDIR/testSuite.cc \
$$TESTDIR/UASUnitTest.cc
\ No newline at end of file
...@@ -175,7 +175,7 @@ linux-g++|linux-g++-64{ ...@@ -175,7 +175,7 @@ linux-g++|linux-g++-64{
CONFIG -= console CONFIG -= console
DEFINES += __STDC_LIMIT_MACROS DEFINES += __STDC_LIMIT_MACROS
release { CONFIG(release, debug|release) {
DEFINES += QT_NO_DEBUG DEFINES += QT_NO_DEBUG
} }
...@@ -429,11 +429,11 @@ win32-g++ { ...@@ -429,11 +429,11 @@ win32-g++ {
debug { CONFIG(debug, debug|release) {
CONFIG += console CONFIG += console
} }
release { CONFIG(release, debug|release) {
CONFIG -= console CONFIG -= console
DEFINES += QT_NO_DEBUG DEFINES += QT_NO_DEBUG
} }
...@@ -445,14 +445,14 @@ win32-g++ { ...@@ -445,14 +445,14 @@ win32-g++ {
system(cp): { system(cp): {
# CP command is available, use it instead of copy / xcopy # CP command is available, use it instead of copy / xcopy
message("Using cp to copy image and audio files to executable") message("Using cp to copy image and audio files to executable")
debug { CONFIG(debug, debug|release) {
QMAKE_POST_LINK += && cp $$BASEDIR/libs/lib/sdl/win32/SDL.dll $$TARGETDIR/debug/SDL.dll QMAKE_POST_LINK += && cp $$BASEDIR/libs/lib/sdl/win32/SDL.dll $$TARGETDIR/debug/SDL.dll
QMAKE_POST_LINK += && cp -r $$BASEDIR/files $$TARGETDIR/debug/files QMAKE_POST_LINK += && cp -r $$BASEDIR/files $$TARGETDIR/debug/files
QMAKE_POST_LINK += && cp -r $$BASEDIR/libs/mavlink $$TARGETDIR/debug/mavlink QMAKE_POST_LINK += && cp -r $$BASEDIR/libs/mavlink $$TARGETDIR/debug/mavlink
QMAKE_POST_LINK += && cp -r $$BASEDIR/models $$TARGETDIR/debug/models QMAKE_POST_LINK += && cp -r $$BASEDIR/models $$TARGETDIR/debug/models
} }
release { CONFIG(release, debug|release) {
QMAKE_POST_LINK += && cp $$BASEDIR/libs/lib/sdl/win32/SDL.dll $$TARGETDIR/release/SDL.dll QMAKE_POST_LINK += && cp $$BASEDIR/libs/lib/sdl/win32/SDL.dll $$TARGETDIR/release/SDL.dll
QMAKE_POST_LINK += && cp -r $$BASEDIR/files $$TARGETDIR/release/files QMAKE_POST_LINK += && cp -r $$BASEDIR/files $$TARGETDIR/release/files
QMAKE_POST_LINK += && cp -r $$BASEDIR/libs/mavlink $$TARGETDIR/release/mavlink QMAKE_POST_LINK += && cp -r $$BASEDIR/libs/mavlink $$TARGETDIR/release/mavlink
......
...@@ -30,7 +30,8 @@ QT += network \ ...@@ -30,7 +30,8 @@ QT += network \
phonon \ phonon \
webkit \ webkit \
sql \ sql \
declarative declarative \
testlib
# Setting this variable allows you to include this .pro file in another such that # Setting this variable allows you to include this .pro file in another such that
# you can set your own TARGET and main() function. This is used by the unit test # you can set your own TARGET and main() function. This is used by the unit test
...@@ -43,11 +44,11 @@ isEmpty(QGCS_UNITTEST_OVERRIDE) { ...@@ -43,11 +44,11 @@ isEmpty(QGCS_UNITTEST_OVERRIDE) {
BASEDIR = $${IN_PWD} BASEDIR = $${IN_PWD}
linux-g++|linux-g++-64{ linux-g++|linux-g++-64{
debug { CONFIG(debug, debug|release) {
TARGETDIR = $${OUT_PWD}/debug TARGETDIR = $${OUT_PWD}/debug
BUILDDIR = $${OUT_PWD}/build-debug BUILDDIR = $${OUT_PWD}/build-debug
} }
release { CONFIG(release, debug|release) {
TARGETDIR = $${OUT_PWD}/release TARGETDIR = $${OUT_PWD}/release
BUILDDIR = $${OUT_PWD}/build-release BUILDDIR = $${OUT_PWD}/build-release
} }
...@@ -736,6 +737,20 @@ SOURCES += \ ...@@ -736,6 +737,20 @@ SOURCES += \
src/ui/designer/QGCXYPlot.cc \ src/ui/designer/QGCXYPlot.cc \
src/ui/menuactionhelper.cpp src/ui/menuactionhelper.cpp
CONFIG(debug, debug|release) {
# Unit Test sources/headers go here
INCLUDEPATH += \
src/qgcunittest
HEADERS += \
src/qgcunittest/AutoTest.h \
src/qgcunittest/UASUnitTest.h
SOURCES += \
src/qgcunittest/UASUnitTest.cc
}
# Enable Google Earth only on Mac OS and Windows with Visual Studio compiler # Enable Google Earth only on Mac OS and Windows with Visual Studio compiler
macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc
......
...@@ -32,7 +32,7 @@ This file is part of the QGROUNDCONTROL project ...@@ -32,7 +32,7 @@ This file is part of the QGROUNDCONTROL project
#include "QGCCore.h" #include "QGCCore.h"
#include "MainWindow.h" #include "MainWindow.h"
#include "configuration.h" #include "configuration.h"
#include "AutoTest.h"
/* SDL does ugly things to main() */ /* SDL does ugly things to main() */
#ifdef main #ifdef main
...@@ -68,6 +68,28 @@ int main(int argc, char *argv[]) ...@@ -68,6 +68,28 @@ int main(int argc, char *argv[])
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
qInstallMsgHandler( msgHandler ); qInstallMsgHandler( msgHandler );
#endif #endif
#ifdef QT_DEBUG
if (argc > 1 && QString(argv[1]).compare("--unittest", Qt::CaseInsensitive) == 0) {
// Strip off extra command line args so QTest doesn't complain
for (int i=1; i<argc-1; i++)
{
argv[i] = argv[i+1];
}
// Run the test
int failures = AutoTest::run(argc-1, argv);
if (failures == 0)
{
qDebug() << "ALL TESTS PASSED";
}
else
{
qDebug() << failures << " TESTS FAILED!";
}
return failures;
}
#endif
QGCCore* core = NULL; QGCCore* core = NULL;
int val; int val;
......
...@@ -51,7 +51,7 @@ namespace AutoTest ...@@ -51,7 +51,7 @@ namespace AutoTest
inline int run(int argc, char *argv[]) inline int run(int argc, char *argv[])
{ {
int ret = 0; int ret = 0;
QCoreApplication t(argc, argv); QApplication t(argc, argv);
foreach (QObject* test, testList()) foreach (QObject* test, testList())
{ {
ret += QTest::qExec(test, argc, argv); ret += QTest::qExec(test, argc, argv);
......
...@@ -147,9 +147,13 @@ void UASUnitTest::getLongitude_test() ...@@ -147,9 +147,13 @@ void UASUnitTest::getLongitude_test()
{ {
QCOMPARE(uas->getLongitude(), 0.0); QCOMPARE(uas->getLongitude(), 0.0);
} }
void UASUnitTest::getAltitude_test() void UASUnitTest::getAltitudeAMSL_test()
{ {
QCOMPARE(uas->getAltitude(), 0.0); QCOMPARE(uas->getAltitudeAMSL(), 0.0);
}
void UASUnitTest::getAltitudeRelative_test()
{
QCOMPARE(uas->getAltitudeRelative(), 0.0);
} }
void UASUnitTest::getRoll_test() void UASUnitTest::getRoll_test()
{ {
...@@ -316,7 +320,6 @@ void UASUnitTest::signalUASLink_test() ...@@ -316,7 +320,6 @@ void UASUnitTest::signalUASLink_test()
{ {
qDebug()<< link->getName(); qDebug()<< link->getName();
qDebug()<< QString::number(link->getId()); qDebug()<< QString::number(link->getId());
qDebug()<< QString::number(link->getNominalDataRate());
QVERIFY(link != NULL); QVERIFY(link != NULL);
uas->addLink(link); uas->addLink(link);
} }
......
...@@ -42,7 +42,8 @@ private slots: ...@@ -42,7 +42,8 @@ private slots:
void getLocalZ_test(); void getLocalZ_test();
void getLatitude_test(); void getLatitude_test();
void getLongitude_test(); void getLongitude_test();
void getAltitude_test(); void getAltitudeAMSL_test();
void getAltitudeRelative_test();
void getRoll_test(); void getRoll_test();
void getPitch_test(); void getPitch_test();
void getYaw_test(); void getYaw_test();
......
/**
* @author Rob Caldecott
* @note This was obtained from http://qtcreator.blogspot.com/2010/04/sample-multiple-unit-test-project.html
*
*/
#include "AutoTest.h"
#include <QDebug>
#if 1
// This is all you need to run all the tests
TEST_MAIN
#else
// Or supply your own main function
int main(int argc, char *argv[])
{
int failures = AutoTest::run(argc, argv);
if (failures == 0)
{
qDebug() << "ALL TESTS PASSED";
}
else
{
qDebug() << failures << " TESTS FAILED!";
}
return failures;
}
#endif
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