diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index e4fd3b316..7546af5c5 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -724,6 +724,7 @@ add_definitions(-DCORRECT_NEGATIVE_SHIFTS) if(NOT WIN32) add_subdirectory(targets/simu) + add_subdirectory(tests) endif() set(SRC ${SRC} ${FIRMWARE_SRC}) diff --git a/radio/src/tests/CMakeLists.txt b/radio/src/tests/CMakeLists.txt new file mode 100644 index 000000000..3a7090676 --- /dev/null +++ b/radio/src/tests/CMakeLists.txt @@ -0,0 +1,24 @@ +find_package(Qt4 4.8.1 REQUIRED) +include(${QT_USE_FILE}) + +set(GTEST_INCDIR /usr/include/gtest) +set(GTEST_SRCDIR /usr/src/gtest) + +add_library(gtests-lib STATIC EXCLUDE_FROM_ALL ${GTEST_SRCDIR}/src/gtest-all.cc ) +target_include_directories(gtests-lib PUBLIC ${GTEST_INCDIR} PUBLIC ${GTEST_SRCDIR}) + + +add_definitions(-DSIMU) + +set(TESTS_PATH ${RADIO_SRC_DIRECTORY}) +configure_file(${RADIO_SRC_DIRECTORY}/tests/location.h.in ${RADIO_SRC_DIRECTORY}/tests/location.h @ONLY) + +foreach(FILE ${SRC}) + set(RADIO_SRC ${RADIO_SRC} ../${FILE}) +endforeach() + +file(GLOB TEST_SRC_FILES ${RADIO_SRC_DIRECTORY}/tests/*.cpp) + +add_executable(gtests EXCLUDE_FROM_ALL ${TEST_SRC_FILES} ${RADIO_SRC} ../targets/simu/simpgmspace.cpp) +add_dependencies(gtests ${FIRMWARE_DEPENDENCIES} gtests-lib) +target_link_libraries(gtests gtests-lib ${QT_LIBRARIES} pthread) diff --git a/radio/src/tests/lcd.cpp b/radio/src/tests/lcd.cpp index 77c595ab9..14a132927 100644 --- a/radio/src/tests/lcd.cpp +++ b/radio/src/tests/lcd.cpp @@ -43,7 +43,7 @@ #define SWAP_DEFINED #include "opentx.h" - +#include "location.h" void doPaint(QPainter & p) { @@ -103,7 +103,7 @@ bool checkScreenshot(const QString & test) QFile screenshot("/tmp/" + filename); if (!screenshot.open(QIODevice::ReadOnly)) return false; - QFile reference("./tests/" + filename); + QFile reference( TESTS_PATH "/tests/" + filename); if (!reference.open(QIODevice::ReadOnly)) return false; if (reference.readAll() != screenshot.readAll()) @@ -296,7 +296,7 @@ TEST(Lcd, BMPWrapping) { lcdClear(); uint8_t bitmap[2+40*40/2]; - bmpLoad(bitmap, "./tests/plane.bmp", 40, 40); + bmpLoad(bitmap, TESTS_PATH "/tests/plane.bmp", 40, 40); lcdDrawBitmap(200, 0, bitmap); lcdDrawBitmap(200, 60, bitmap); lcdDrawBitmap(240, 60, bitmap); // x too big @@ -365,31 +365,31 @@ TEST(Lcd, lcdDrawBitmapLoadAndDisplay) // Test proper BMP files, they should display correctly { TestBuffer<1000> bitmap(BITMAP_BUFFER_SIZE(7, 32)); - EXPECT_EQ(bmpLoad(bitmap.buffer(), "./tests/4b_7x32.bmp", 7, 32), (char *)0); + EXPECT_EQ(bmpLoad(bitmap.buffer(), TESTS_PATH "/tests/4b_7x32.bmp", 7, 32), (char *)0); bitmap.leakCheck(); lcdDrawBitmap(10, 2, bitmap.buffer()); } { TestBuffer<1000> bitmap(BITMAP_BUFFER_SIZE(6, 32)); - EXPECT_EQ(bmpLoad(bitmap.buffer(), "./tests/1b_6x32.bmp", 6, 32), (char *)0); + EXPECT_EQ(bmpLoad(bitmap.buffer(), TESTS_PATH "/tests/1b_6x32.bmp", 6, 32), (char *)0); bitmap.leakCheck(); lcdDrawBitmap(20, 2, bitmap.buffer()); } { TestBuffer<1000> bitmap(BITMAP_BUFFER_SIZE(31, 31)); - EXPECT_EQ(bmpLoad(bitmap.buffer(), "./tests/4b_31x31.bmp", 31, 31), (char *)0); + EXPECT_EQ(bmpLoad(bitmap.buffer(), TESTS_PATH "/tests/4b_31x31.bmp", 31, 31), (char *)0); bitmap.leakCheck(); lcdDrawBitmap(30, 2, bitmap.buffer()); } { TestBuffer<1000> bitmap(BITMAP_BUFFER_SIZE(39, 32)); - EXPECT_EQ(bmpLoad(bitmap.buffer(), "./tests/1b_39x32.bmp", 39, 32), (char *)0); + EXPECT_EQ(bmpLoad(bitmap.buffer(), TESTS_PATH "/tests/1b_39x32.bmp", 39, 32), (char *)0); bitmap.leakCheck(); lcdDrawBitmap(70, 2, bitmap.buffer()); } { TestBuffer<1000> bitmap(BITMAP_BUFFER_SIZE(20, 20)); - EXPECT_EQ(bmpLoad(bitmap.buffer(), "./tests/4b_20x20.bmp", 20, 20), (char *)0); + EXPECT_EQ(bmpLoad(bitmap.buffer(), TESTS_PATH "/tests/4b_20x20.bmp", 20, 20), (char *)0); bitmap.leakCheck(); lcdDrawBitmap(120, 2, bitmap.buffer()); } @@ -403,7 +403,7 @@ TEST(Lcd, lcdDrawBitmapLoadAndDisplay) } { TestBuffer<1000> bitmap(BITMAP_BUFFER_SIZE(10, 10)); - EXPECT_EQ(bmpLoad(bitmap.buffer(), "./tests/1b_39x32.bmp", 10, 10), STR_INCOMPATIBLE) << "to small buffer"; + EXPECT_EQ(bmpLoad(bitmap.buffer(), TESTS_PATH "/tests/1b_39x32.bmp", 10, 10), STR_INCOMPATIBLE) << "to small buffer"; bitmap.leakCheck(); } } diff --git a/radio/src/tests/location.h.in b/radio/src/tests/location.h.in new file mode 100644 index 000000000..359e110b1 --- /dev/null +++ b/radio/src/tests/location.h.in @@ -0,0 +1 @@ +#define TESTS_PATH "@TESTS_PATH@"