cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
project(rxcpp_test LANGUAGES C CXX)
# define some folders
get_filename_component(RXCPP_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
get_filename_component(RXCPP_DIR "${RXCPP_DIR}" PATH)
get_filename_component(RXCPP_DIR "${RXCPP_DIR}" PATH)
MESSAGE( STATUS "RXCPP_DIR: " ${RXCPP_DIR} )
include(${RXCPP_DIR}/projects/CMake/shared.cmake)
# configure unit tests via CTest
enable_testing()
set(TEST_DIR ${RXCPP_DIR}/Rx/v2/test)
# define the sources of the self test
set(TEST_SOURCES
${TEST_DIR}/subscriptions/coroutine.cpp
${TEST_DIR}/subscriptions/observer.cpp
${TEST_DIR}/subscriptions/subscription.cpp
${TEST_DIR}/subjects/subject.cpp
${TEST_DIR}/sources/create.cpp
${TEST_DIR}/sources/defer.cpp
${TEST_DIR}/sources/empty.cpp
${TEST_DIR}/sources/interval.cpp
${TEST_DIR}/sources/scope.cpp
${TEST_DIR}/sources/timer.cpp
${TEST_DIR}/operators/all.cpp
${TEST_DIR}/operators/any.cpp
${TEST_DIR}/operators/amb.cpp
${TEST_DIR}/operators/amb_variadic.cpp
${TEST_DIR}/operators/buffer.cpp
${TEST_DIR}/operators/combine_latest.cpp
${TEST_DIR}/operators/concat.cpp
${TEST_DIR}/operators/concat_map.cpp
${TEST_DIR}/operators/contains.cpp
${TEST_DIR}/operators/debounce.cpp
${TEST_DIR}/operators/default_if_empty.cpp
${TEST_DIR}/operators/delay.cpp
${TEST_DIR}/operators/distinct.cpp
${TEST_DIR}/operators/distinct_until_changed.cpp
${TEST_DIR}/operators/element_at.cpp
${TEST_DIR}/operators/exists.cpp
${TEST_DIR}/operators/filter.cpp
${TEST_DIR}/operators/finally.cpp
${TEST_DIR}/operators/flat_map.cpp
${TEST_DIR}/operators/group_by.cpp
${TEST_DIR}/operators/ignore_elements.cpp
${TEST_DIR}/operators/is_empty.cpp
${TEST_DIR}/operators/lift.cpp
${TEST_DIR}/operators/map.cpp
${TEST_DIR}/operators/merge.cpp
${TEST_DIR}/operators/merge_delay_error.cpp
${TEST_DIR}/operators/observe_on.cpp
${TEST_DIR}/operators/on_error_resume_next.cpp
${TEST_DIR}/operators/pairwise.cpp
${TEST_DIR}/operators/publish.cpp
${TEST_DIR}/operators/reduce.cpp
${TEST_DIR}/operators/repeat.cpp
${TEST_DIR}/operators/replay.cpp
${TEST_DIR}/operators/retry.cpp
${TEST_DIR}/operators/sample.cpp
${TEST_DIR}/operators/scan.cpp
${TEST_DIR}/operators/sequence_equal.cpp
${TEST_DIR}/operators/skip.cpp
${TEST_DIR}/operators/skip_while.cpp
${TEST_DIR}/operators/skip_last.cpp
${TEST_DIR}/operators/skip_until.cpp
${TEST_DIR}/operators/start_with.cpp
${TEST_DIR}/operators/subscribe_on.cpp
${TEST_DIR}/operators/switch_if_empty.cpp
${TEST_DIR}/operators/switch_on_next.cpp
${TEST_DIR}/operators/take.cpp
${TEST_DIR}/operators/take_last.cpp
${TEST_DIR}/operators/take_until.cpp
${TEST_DIR}/operators/take_while.cpp
${TEST_DIR}/operators/tap.cpp
${TEST_DIR}/operators/time_interval.cpp
${TEST_DIR}/operators/timeout.cpp
${TEST_DIR}/operators/timestamp.cpp
${TEST_DIR}/operators/with_latest_from.cpp
${TEST_DIR}/operators/window.cpp
${TEST_DIR}/operators/window_toggle.cpp
${TEST_DIR}/operators/zip.cpp
)
set(TEST_COMPILE_DEFINITIONS "")
set(TEST_COMMAND_ARGUMENTS "")
if (NOT RX_USE_EXCEPTIONS)
MESSAGE( STATUS "no exceptions" )
list(APPEND TEST_COMPILE_DEFINITIONS CATCH_CONFIG_DISABLE_EXCEPTIONS)
list(APPEND TEST_COMMAND_ARGUMENTS -e)
endif()
add_executable(rxcppv2_test ${TEST_DIR}/test.cpp ${TEST_SOURCES})
add_executable(rxcpp::tests ALIAS rxcppv2_test)
set_target_properties(
rxcppv2_test PROPERTIES
EXCLUDE_FROM_DEFAULT_BUILD TRUE
EXCLUDE_FROM_ALL TRUE
)
target_compile_options(rxcppv2_test PUBLIC ${RX_COMPILE_OPTIONS})
target_compile_features(rxcppv2_test PUBLIC ${RX_COMPILE_FEATURES})
target_compile_definitions(rxcppv2_test PUBLIC ${TEST_COMPILE_DEFINITIONS})
target_include_directories(rxcppv2_test
PUBLIC ${RX_SRC_DIR} ${RX_CATCH_DIR}
)
target_link_libraries(rxcppv2_test ${CMAKE_THREAD_LIBS_INIT})
foreach(ONE_TEST_SOURCE ${TEST_SOURCES})
get_filename_component(ONE_TEST_NAME "${ONE_TEST_SOURCE}" NAME)
string( REPLACE ".cpp" "" ONE_TEST_NAME ${ONE_TEST_NAME})
set(ONE_TEST_FULL_NAME "rxcpp_test_${ONE_TEST_NAME}")
add_executable( ${ONE_TEST_FULL_NAME} ${ONE_TEST_SOURCE} )
add_executable( rxcpp::${ONE_TEST_NAME} ALIAS ${ONE_TEST_FULL_NAME})
target_compile_definitions(${ONE_TEST_FULL_NAME} PUBLIC "CATCH_CONFIG_MAIN" ${TEST_COMPILE_DEFINITIONS})
target_compile_options(${ONE_TEST_FULL_NAME} PUBLIC ${RX_COMPILE_OPTIONS})
target_compile_features(${ONE_TEST_FULL_NAME} PUBLIC ${RX_COMPILE_FEATURES})
target_include_directories(${ONE_TEST_FULL_NAME}
PUBLIC ${RX_SRC_DIR} ${RX_CATCH_DIR}
)
target_link_libraries(${ONE_TEST_FULL_NAME} ${CMAKE_THREAD_LIBS_INIT})
add_test(NAME ${ONE_TEST_NAME} COMMAND ${ONE_TEST_FULL_NAME} ${TEST_COMMAND_ARGUMENTS})
endforeach(ONE_TEST_SOURCE ${TEST_SOURCES})