mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
Much improved tests: Both C++03/C++11 are supported, with exceptions and without them; test outputs are being dumped on disk
This commit is contained in:
parent
4025bf033b
commit
06603ad237
@ -38,28 +38,33 @@ include_directories(${DSDLC_OUTPUT})
|
||||
#
|
||||
# Unit tests with gtest (optional)
|
||||
#
|
||||
find_package(GTest QUIET)
|
||||
if (GTEST_FOUND)
|
||||
function(add_test name flags)
|
||||
find_package(Threads REQUIRED)
|
||||
include_directories(${GTEST_INCLUDE_DIRS})
|
||||
|
||||
file(GLOB_RECURSE TEST_CXX_FILES RELATIVE ${CMAKE_SOURCE_DIR} "test/*.cpp")
|
||||
add_executable(libuavcan_test ${TEST_CXX_FILES})
|
||||
add_dependencies(libuavcan_test uavcan)
|
||||
add_executable(${name} ${TEST_CXX_FILES})
|
||||
add_dependencies(${name} uavcan)
|
||||
|
||||
set_target_properties(libuavcan_test PROPERTIES
|
||||
COMPILE_FLAGS "-fno-exceptions -Wno-unused-parameter -Wno-unused-function"
|
||||
)
|
||||
set_target_properties(${name} PROPERTIES COMPILE_FLAGS ${flags})
|
||||
|
||||
target_link_libraries(libuavcan_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
target_link_libraries(libuavcan_test ${CMAKE_BINARY_DIR}/libuavcan.so)
|
||||
target_link_libraries(libuavcan_test rt)
|
||||
target_link_libraries(${name} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
target_link_libraries(${name} ${CMAKE_BINARY_DIR}/libuavcan.so)
|
||||
target_link_libraries(${name} rt)
|
||||
|
||||
# Tests run automatically upon successful build
|
||||
# If failing tests need to be investigated with debugger, use 'make --ignore-errors'
|
||||
add_custom_command(TARGET libuavcan_test POST_BUILD
|
||||
COMMAND ./libuavcan_test
|
||||
add_custom_command(TARGET ${name} POST_BUILD
|
||||
COMMAND ./${name} > "${name}.log"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
endfunction()
|
||||
|
||||
find_package(GTest QUIET)
|
||||
if (GTEST_FOUND)
|
||||
add_test(libuavcan_test_cpp03_noexc "-Wall -Wextra -Werror -pedantic -fno-exceptions -std=c++03")
|
||||
add_test(libuavcan_test_cpp11_noexc "-Wall -Wextra -Werror -pedantic -fno-exceptions -std=c++0x")
|
||||
add_test(libuavcan_test_cpp03_exc "-Wall -Wextra -Werror -pedantic -std=c++03")
|
||||
add_test(libuavcan_test_cpp11_exc "-Wall -Wextra -Werror -pedantic -std=c++0x")
|
||||
else (GTEST_FOUND)
|
||||
message(">> Google test library is not found, you will not be able to run tests")
|
||||
endif (GTEST_FOUND)
|
||||
|
||||
@ -82,10 +82,10 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
static uavcan::MonotonicTime tsMono(uint64_t usec) { return uavcan::MonotonicTime::fromUSec(usec); }
|
||||
static uavcan::UtcTime tsUtc(uint64_t usec) { return uavcan::UtcTime::fromUSec(usec); }
|
||||
inline uavcan::MonotonicTime tsMono(uint64_t usec) { return uavcan::MonotonicTime::fromUSec(usec); }
|
||||
inline uavcan::UtcTime tsUtc(uint64_t usec) { return uavcan::UtcTime::fromUSec(usec); }
|
||||
|
||||
static uavcan::MonotonicDuration durMono(int64_t usec) { return uavcan::MonotonicDuration::fromUSec(usec); }
|
||||
inline uavcan::MonotonicDuration durMono(int64_t usec) { return uavcan::MonotonicDuration::fromUSec(usec); }
|
||||
|
||||
template <typename T>
|
||||
static bool areTimestampsClose(const T& a, const T& b, int64_t precision_usec = 10000)
|
||||
|
||||
@ -121,7 +121,7 @@ public:
|
||||
|
||||
// cppcheck-suppress unusedFunction
|
||||
// cppcheck-suppress functionConst
|
||||
int configureFilters(const uavcan::CanFilterConfig* filter_configs, int num_configs) { return -1; }
|
||||
int configureFilters(const uavcan::CanFilterConfig*, int) { return -1; }
|
||||
// cppcheck-suppress unusedFunction
|
||||
int getNumFilters() const { return 0; }
|
||||
uint64_t getNumErrors() const { return num_errors; }
|
||||
@ -189,7 +189,7 @@ public:
|
||||
};
|
||||
|
||||
enum FrameType { STD, EXT };
|
||||
static uavcan::CanFrame makeCanFrame(uint32_t id, const std::string& str_data, FrameType type)
|
||||
inline uavcan::CanFrame makeCanFrame(uint32_t id, const std::string& str_data, FrameType type)
|
||||
{
|
||||
id |= (type == EXT) ? uavcan::CanFrame::FlagEFF : 0;
|
||||
return uavcan::CanFrame(id, reinterpret_cast<const uint8_t*>(str_data.c_str()), str_data.length());
|
||||
|
||||
@ -20,8 +20,7 @@ struct RxFrameGenerator
|
||||
uint16_t data_type_id;
|
||||
uavcan::TransferBufferManagerKey bufmgr_key;
|
||||
|
||||
RxFrameGenerator(uint16_t data_type_id, uavcan::TransferType ttype,
|
||||
const uavcan::TransferBufferManagerKey& bufmgr_key = DEFAULT_KEY)
|
||||
RxFrameGenerator(uint16_t data_type_id, const uavcan::TransferBufferManagerKey& bufmgr_key = DEFAULT_KEY)
|
||||
: data_type_id(data_type_id)
|
||||
, bufmgr_key(bufmgr_key)
|
||||
{ }
|
||||
@ -95,7 +94,7 @@ TEST(TransferReceiver, Basic)
|
||||
{
|
||||
using uavcan::TransferReceiver;
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -215,7 +214,7 @@ TEST(TransferReceiver, Basic)
|
||||
TEST(TransferReceiver, OutOfBufferSpace_32bytes)
|
||||
{
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -250,7 +249,7 @@ TEST(TransferReceiver, OutOfBufferSpace_32bytes)
|
||||
TEST(TransferReceiver, UnterminatedTransfer)
|
||||
{
|
||||
Context<512> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -271,7 +270,7 @@ TEST(TransferReceiver, UnterminatedTransfer)
|
||||
TEST(TransferReceiver, OutOfOrderFrames)
|
||||
{
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -292,7 +291,7 @@ TEST(TransferReceiver, OutOfOrderFrames)
|
||||
TEST(TransferReceiver, IntervalMeasurement)
|
||||
{
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -322,7 +321,7 @@ TEST(TransferReceiver, IntervalMeasurement)
|
||||
TEST(TransferReceiver, Restart)
|
||||
{
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -364,7 +363,7 @@ TEST(TransferReceiver, Restart)
|
||||
TEST(TransferReceiver, UtcTransferTimestamping)
|
||||
{
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
uavcan::TransferBufferAccessor bk(context.bufmgr, RxFrameGenerator::DEFAULT_KEY);
|
||||
@ -414,7 +413,7 @@ TEST(TransferReceiver, UtcTransferTimestamping)
|
||||
TEST(TransferReceiver, HeaderParsing)
|
||||
{
|
||||
Context<32> context;
|
||||
RxFrameGenerator gen(789, uavcan::TransferTypeMessageBroadcast);
|
||||
RxFrameGenerator gen(789);
|
||||
uavcan::TransferReceiver& rcv = context.receiver;
|
||||
uavcan::ITransferBufferManager& bufmgr = context.bufmgr;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user