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:
Pavel Kirienko 2014-03-17 19:45:27 +04:00
parent 4025bf033b
commit 06603ad237
4 changed files with 31 additions and 27 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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());

View File

@ -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;