summaryrefslogtreecommitdiff
path: root/Rx/v2/test/CMakeLists.txt
blob: c2d1530692c468b598ee189785a89c542c57daeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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})