Add first unit test

+proof of concept of Catch2 builds working in our repo
pull/7/head
D.R.racer 2021-05-12 11:34:05 +02:00
parent 23a8c9081a
commit e2b67c28ec
11 changed files with 61 additions and 3 deletions

View File

@ -155,7 +155,7 @@ endif()
# Import definitions of all libraries # Import definitions of all libraries
# #
# add_subdirectory(lib) add_subdirectory(lib)
# #
# MMU firmware # MMU firmware

3
lib/CMakeLists.txt Normal file
View File

@ -0,0 +1,3 @@
if(NOT CMAKE_CROSSCOMPILING)
add_subdirectory(Catch2)
endif()

View File

@ -1 +1 @@
# add_subdirectory(unit)

View File

@ -1 +1,28 @@
# # first, let's create a symbolic target for all tests
add_custom_target(tests)
# this had a reason on the Buddy FW, but on the AVR we cannot get close to having 16bit ints and
# pointers so the unit tests may be compiled 64bit afterall
set(CMAKE_C_FLAGS -m32)
set(CMAKE_CXX_FLAGS -m32)
# include catch_discover_tests function from Catch2
include(${Catch2_SOURCE_DIR}/contrib/Catch.cmake)
add_library(catch_main ${CMAKE_CURRENT_SOURCE_DIR}/test_main.cpp)
target_link_libraries(catch_main Catch2::Catch2)
# registers given target as a catch test
function(add_catch_test target)
target_link_libraries(${target} catch_main Catch2::Catch2)
catch_discover_tests(${target})
add_dependencies(tests ${target})
endfunction()
add_executable(system_tests ${CMAKE_CURRENT_SOURCE_DIR}/system_test.cpp)
add_catch_test(system_tests)
# now, include all the unit tests; they should add themselves using the add_catch_test function
add_subdirectory(hal)
add_subdirectory(logic)
add_subdirectory(modules)

View File

@ -0,0 +1 @@
#

View File

@ -0,0 +1 @@
#

View File

@ -0,0 +1 @@
add_subdirectory(protocol)

View File

@ -0,0 +1,8 @@
# define the test executable
add_executable(protocol_tests test_protocol.cpp)
# define required search paths
target_include_directories(protocol_tests PUBLIC ${CMAKE_SOURCE_DIR}/src/modules)
# tell build system about the test case
add_catch_test(protocol_tests)

View File

@ -0,0 +1,8 @@
#include "catch2/catch.hpp"
#include "protocol.h"
using Catch::Matchers::Equals;
TEST_CASE("protocol::1", "[protocol]") {
CHECK(true);
}

View File

@ -0,0 +1,6 @@
#include "catch2/catch.hpp"
TEST_CASE("type tests", "[system]") {
REQUIRE(sizeof(uint64_t) == 8);
REQUIRE(sizeof(char *) == 4);
}

3
tests/unit/test_main.cpp Normal file
View File

@ -0,0 +1,3 @@
#define CATCH_CONFIG_MAIN
//#define CATCH_CONFIG_ENABLE_BENCHMARKING
#include "catch2/catch.hpp"