Commit 85be7117 authored by NzSN's avatar NzSN

Add Unittests.

parent 1ff0b996
cmake_minimum_required(VERSION 3.16)
enable_testing()
include(ExternalProject)
project(FFmpeg_Protos)
......@@ -33,6 +32,13 @@ install(TARGETS ffmpegprotos
if(DEBUG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
find_program( MEMORYCHECK_COMMAND valgrind )
include(CTest)
set(VALGRIND_OPTS --leak-check=full --show-leak-kinds=all --track-origins=yes
--log-file=log.txt --error-exitcode=1)
enable_testing()
set(LIBAV libav)
ExternalProject_Add(
libav
......@@ -49,25 +55,8 @@ ExternalProject_Add(
)
# Tests
set(Tests ${CMAKE_SOURCE_DIR}/tests)
set(TestCases
${SRCs}/basic/container/list.c
${SRCs}/proto.c
${Tests}/main.c
${Tests}/protoTestCases.c
${Tests}/listTestCases.c)
add_executable(unittest ${TestCases} ${SRC_Files})
add_dependencies(unittest libav)
add_custom_command(TARGET unittest PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/resources/ $<TARGET_FILE_DIR:unittest>/resources)
add_test(
NAME unittest
COMMAND valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=log.txt ./unittest)
# Link Google Test
target_link_libraries(unittest
function(link_to_ffmpeg target)
target_link_libraries(${target}
${CMAKE_SOURCE_DIR}/lib/lib/libavformat.a
${CMAKE_SOURCE_DIR}/lib/lib/libavcodec.a
${CMAKE_SOURCE_DIR}/lib/lib/libavdevice.a
......@@ -77,11 +66,38 @@ target_link_libraries(unittest
${CMAKE_SOURCE_DIR}/lib/lib/libswscale.a
${CMAKE_SOURCE_DIR}/lib/lib/libpostproc.a
)
target_link_libraries(unittest z)
target_link_libraries(unittest x264)
target_link_libraries(unittest lzma)
target_link_libraries(unittest m)
target_link_libraries(unittest pthread)
target_link_libraries(${target} z)
target_link_libraries(${target} x264)
target_link_libraries(${target} lzma)
target_link_libraries(${target} m)
target_link_libraries(${target} pthread)
endfunction()
function(add_test_with_ffmpeg target)
add_executable(${target} ${CMAKE_SOURCE_DIR}/tests/main.c ${ARGN})
add_dependencies(${target} libav)
link_to_ffmpeg(${target})
add_test(NAME ${target}
COMMAND ${target})
endfunction()
function(add_test_raw target)
add_executable(${target} ${Tests}/main.c ${ARGN})
add_test(NAME ${target} COMMAND ${target})
endfunction()
set(Tests ${CMAKE_SOURCE_DIR}/tests)
# TestCases
add_test_raw(ListTestCases ${SRCs}/basic/container/list.c ${Tests}/listTestCases.c)
add_test_with_ffmpeg(FFmpegProtoTestCases
${SRCs}/basic/container/list.c
${SRCs}/proto.c
${Tests}/protoTestCases.c)
add_custom_command(TARGET FFmpegProtoTestCases PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/resources/ $<TARGET_FILE_DIR:FFmpegProtoTestCases>/resources)
endif()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment