aboutsummaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2015-01-07 16:00:59 +0100
committerThomas Gubler <thomasgubler@gmail.com>2015-01-07 16:00:59 +0100
commitfe279d340dccdd40ebfade4c53893e8f7a77b45e (patch)
tree6ca7e8517507e097097a45cca384c51d343b5fc7 /unittests
parent417a82c699c2512ca3b8998c91c9d77f5d826edb (diff)
parent6ed2f77ca5c713e537c8fd4a9aacd7adc7887f53 (diff)
downloadpx4-firmware-fe279d340dccdd40ebfade4c53893e8f7a77b45e.tar.gz
px4-firmware-fe279d340dccdd40ebfade4c53893e8f7a77b45e.tar.bz2
px4-firmware-fe279d340dccdd40ebfade4c53893e8f7a77b45e.zip
Merge remote-tracking branch 'upstream/master' into dev_ros
Conflicts: Makefile
Diffstat (limited to 'unittests')
-rw-r--r--unittests/CMakeLists.txt72
-rw-r--r--unittests/Makefile95
-rw-r--r--unittests/conversion_test.cpp9
-rw-r--r--unittests/mixer_test.cpp16
-rw-r--r--unittests/sbus2_test.cpp39
5 files changed, 80 insertions, 151 deletions
diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt
index 47b84f148..b57537aa4 100644
--- a/unittests/CMakeLists.txt
+++ b/unittests/CMakeLists.txt
@@ -2,38 +2,78 @@ cmake_minimum_required(VERSION 2.8)
project(unittests)
enable_testing()
+include(CheckCXXCompilerFlag)
+CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
+CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
+if(COMPILER_SUPPORTS_CXX11)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif(COMPILER_SUPPORTS_CXX0X)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+else()
+ message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
+endif()
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
+
set(GTEST_DIR gtest)
add_subdirectory(${GTEST_DIR})
include_directories(${GTEST_DIR}/include)
+
+set(PX_SRC ${CMAKE_SOURCE_DIR}/../src)
include_directories(${CMAKE_SOURCE_DIR})
-include_directories(${CMAKE_SOURCE_DIR}/../src)
-include_directories(${CMAKE_SOURCE_DIR}/../src/modules)
-include_directories(${CMAKE_SOURCE_DIR}/../src/lib)
+include_directories(${PX_SRC})
+include_directories(${PX_SRC}/modules)
+include_directories(${PX_SRC}/lib)
add_definitions(-D__EXPORT=)
add_definitions(-D__PX4_TESTS)
add_definitions(-Dnoreturn_function=)
add_definitions(-Dmain_t=int)
+# check
+add_custom_target(unittests COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure)
+
function(add_gtest)
foreach(test_name ${ARGN})
target_link_libraries(${test_name} gtest_main)
- add_test(${test_name}Test ${test_name})
+ add_test(NAME ${test_name} COMMAND ${test_name} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_dependencies(unittests ${test_name})
endforeach()
endfunction()
-include(CheckCXXCompilerFlag)
-CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
-CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-if(COMPILER_SUPPORTS_CXX11)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-elseif(COMPILER_SUPPORTS_CXX0X)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-else()
- message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
-endif()
# add each test
-# todo: add mixer_test sbus2_test st24_test sf0x_test
-add_executable(autodeclination_test autodeclination_test.cpp ${CMAKE_SOURCE_DIR}/../src/lib/geo_lookup/geo_mag_declination.c)
+add_executable(autodeclination_test autodeclination_test.cpp ${PX_SRC}/lib/geo_lookup/geo_mag_declination.c)
add_gtest(autodeclination_test)
+
+# mixer_test
+add_custom_command(OUTPUT ${PX_SRC}/modules/systemlib/mixer/mixer_multirotor.generated.h
+ COMMAND ${PX_SRC}/modules/systemlib/mixer/multi_tables.py > ${PX_SRC}/modules/systemlib/mixer/mixer_multirotor.generated.h)
+add_executable(mixer_test mixer_test.cpp hrt.cpp
+ ${PX_SRC}/modules/systemlib/mixer/mixer.cpp
+ ${PX_SRC}/modules/systemlib/mixer/mixer_group.cpp
+ ${PX_SRC}/modules/systemlib/mixer/mixer_load.c
+ ${PX_SRC}/modules/systemlib/mixer/mixer_multirotor.cpp
+ ${PX_SRC}/modules/systemlib/mixer/mixer_multirotor.generated.h
+ ${PX_SRC}/modules/systemlib/mixer/mixer_simple.cpp
+ ${PX_SRC}/modules/systemlib/pwm_limit/pwm_limit.c
+ ${PX_SRC}/systemcmds/tests/test_mixer.cpp)
+add_gtest(mixer_test)
+
+# conversion_test
+add_executable(conversion_test conversion_test.cpp ${PX_SRC}/systemcmds/tests/test_conv.cpp)
+add_gtest(conversion_test)
+
+# sbus2_test
+# TODO: move to gtest
+add_executable(sbus2_test sbus2_test.cpp hrt.cpp)
+add_gtest(sbus2_test)
+
+# st24_test
+# TODO: move to gtest
+add_executable(st24_test st24_test.cpp hrt.cpp ${PX_SRC}/lib/rc/st24.c)
+add_gtest(st24_test)
+
+# sf0x_test
+# TODO: move to gtest
+add_executable(sf0x_test sf0x_test.cpp ${PX_SRC}/drivers/sf0x/sf0x_parser.cpp)
+add_gtest(sf0x_test)
diff --git a/unittests/Makefile b/unittests/Makefile
deleted file mode 100644
index f25a56fc4..000000000
--- a/unittests/Makefile
+++ /dev/null
@@ -1,95 +0,0 @@
-
-CC=$(CXX)
-CFLAGS=-I. -I../src/modules -I ../src/include -I../src/drivers \
- -I../src -I../src/lib -D__EXPORT="" -Dnullptr="0" -lm -std=c++11
-
-# Points to the root of Google Test, relative to where this file is.
-# Remember to tweak this if you move this file.
-GTEST_DIR = gtest
-
-# Flags passed to the preprocessor.
-# Set Google Test's header directory as a system directory, such that
-# the compiler doesn't generate warnings in Google Test headers.
-CFLAGS += -isystem $(GTEST_DIR)/include
-
-# All Google Test headers. Usually you shouldn't change this
-# definition.
-GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
- $(GTEST_DIR)/include/gtest/internal/*.h
-
-# Usually you shouldn't tweak such internal variables, indicated by a
-# trailing _.
-GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
-
-# For simplicity and to avoid depending on Google Test's
-# implementation details, the dependencies specified below are
-# conservative and not optimized. This is fine as Google Test
-# compiles fast and for ordinary users its source rarely changes.
-gtest-all.o: $(GTEST_SRCS_)
- $(CC) $(CFLAGS) -I$(GTEST_DIR) -c \
- $(GTEST_DIR)/src/gtest-all.cc
-
-gtest_main.o: $(GTEST_SRCS_)
- $(CC) $(CFLAGS) -I$(GTEST_DIR) -c \
- $(GTEST_DIR)/src/gtest_main.cc
-
-gtest.a: gtest-all.o
- $(AR) $(ARFLAGS) $@ $^
-
-gtest_main.a: gtest-all.o gtest_main.o
- $(AR) $(ARFLAGS) $@ $^
-
-
-all: mixer_test sbus2_test st24_test sf0x_test
-
-MIXER_FILES=../src/systemcmds/tests/test_mixer.cpp \
- ../src/systemcmds/tests/test_conv.cpp \
- ../src/modules/systemlib/mixer/mixer_simple.cpp \
- ../src/modules/systemlib/mixer/mixer_multirotor.cpp \
- ../src/modules/systemlib/mixer/mixer.cpp \
- ../src/modules/systemlib/mixer/mixer_group.cpp \
- ../src/modules/systemlib/mixer/mixer_load.c \
- ../src/modules/systemlib/pwm_limit/pwm_limit.c \
- hrt.cpp \
- mixer_test.cpp
-
-include ../src/modules/systemlib/mixer/multi_tables.mk
-
-SBUS2_FILES=../src/modules/px4iofirmware/sbus.c \
- hrt.cpp \
- sbus2_test.cpp
-
-ST24_FILES=../src/lib/rc/st24.c \
- hrt.cpp \
- st24_test.cpp
-
-SF0X_FILES= \
- hrt.cpp \
- sf0x_test.cpp \
- ../src/drivers/sf0x/sf0x_parser.cpp
-
-mixer_test: $(MIXER_FILES)
- $(CC) -o mixer_test $(MIXER_FILES) $(CFLAGS)
-
-sbus2_test: $(SBUS2_FILES)
- $(CC) -o sbus2_test $(SBUS2_FILES) $(CFLAGS)
-
-sf0x_test: $(SF0X_FILES)
- $(CC) -o sf0x_test $(SF0X_FILES) $(CFLAGS)
-
-st24_test: $(ST24_FILES)
- $(CC) -o st24_test $(ST24_FILES) $(CFLAGS)
-
-cmake_gtests:
- mkdir -p build
- cd build && CC=gcc cmake .. && $(MAKE) && $(MAKE) test
-
-unittests: clean mixer_test sbus2_test sf0x_test st24_test cmake_gtests
- ./mixer_test
- ./sbus2_test
- ./sf0x_test
- ./st24_test
-
-.PHONY: clean
-clean:
- rm -rf gtest.a gtest_main.a *.o $(ODIR)/*.o *~ core $(INCDIR)/*~ sample_unittest mixer_test sbus2_test st24_test sf0x_test build
diff --git a/unittests/conversion_test.cpp b/unittests/conversion_test.cpp
new file mode 100644
index 000000000..99e1c7721
--- /dev/null
+++ b/unittests/conversion_test.cpp
@@ -0,0 +1,9 @@
+#include <systemlib/mixer/mixer.h>
+#include <systemlib/err.h>
+#include "../../src/systemcmds/tests/tests.h"
+
+#include "gtest/gtest.h"
+
+TEST(ConversionTest, FMU_quad_w) {
+ ASSERT_EQ(test_conv(0, NULL), 0) << "Conversion test failed";
+}
diff --git a/unittests/mixer_test.cpp b/unittests/mixer_test.cpp
index 4919e325c..fd3ece7f8 100644
--- a/unittests/mixer_test.cpp
+++ b/unittests/mixer_test.cpp
@@ -2,18 +2,10 @@
#include <systemlib/err.h>
#include "../../src/systemcmds/tests/tests.h"
-int main(int argc, char *argv[]) {
+#include "gtest/gtest.h"
- int ret;
- warnx("Host execution started");
-
- char* args[] = {argv[0], "../ROMFS/px4fmu_common/mixers/IO_pass.mix",
- "../ROMFS/px4fmu_common/mixers/FMU_quad_w.mix"};
-
- if (ret = test_mixer(3, args));
-
- test_conv(1, args);
-
- return 0;
+TEST(MixerTest, Mixer) {
+ char* args[] = {"empty", "../ROMFS/px4fmu_common/mixers/IO_pass.mix", "../ROMFS/px4fmu_common/mixers/FMU_quad_w.mix"};
+ ASSERT_EQ(test_mixer(3, args), 0) << "IO_pass.mix failed";
}
diff --git a/unittests/sbus2_test.cpp b/unittests/sbus2_test.cpp
index ba075f8b3..ee4f3d1d6 100644
--- a/unittests/sbus2_test.cpp
+++ b/unittests/sbus2_test.cpp
@@ -1,33 +1,23 @@
-
#include <stdio.h>
-#include <unistd.h>
#include <string.h>
-#include <systemlib/mixer/mixer.h>
-#include <systemlib/err.h>
+#include <unistd.h>
+
+#include "../../src/systemcmds/tests/tests.h"
#include <drivers/drv_hrt.h>
#include <px4iofirmware/px4io.h>
-#include "../../src/systemcmds/tests/tests.h"
-
-int main(int argc, char *argv[]) {
- warnx("SBUS2 test started");
-
- char *filepath = 0;
+#include <systemlib/err.h>
+#include <systemlib/mixer/mixer.h>
- if (argc < 2) {
- warnx("Using default input file");
- filepath = "testdata/sbus2_r7008SB.txt";
- } else {
- filepath = argv[1];
- }
+#include "gtest/gtest.h"
- warnx("loading data from: %s", filepath);
+TEST(SBUS2Test, SBUS2) {
+ char *filepath = "testdata/sbus2_r7008SB.txt";
FILE *fp;
-
fp = fopen(filepath,"rt");
- if (!fp)
- errx(1, "failed opening file");
+ ASSERT_TRUE(fp);
+ warnx("loading data from: %s", filepath);
float f;
unsigned x;
@@ -73,12 +63,5 @@ int main(int argc, char *argv[]) {
//sbus_parse(now, frame, &partial_frame_count, rc_values, &num_values, &sbus_failsafe, &sbus_frame_drop, max_channels);
}
- if (ret == EOF) {
- warnx("Test finished, reached end of file");
- ret = 0;
- } else {
- warnx("Test aborted, errno: %d", ret);
- }
-
- return ret;
+ ASSERT_EQ(ret, EOF);
}