continuable/test/unit-test/CMakeLists.txt
Denis Blank 0b1b284e3a Add continuable_base::is_ready and continuable_base::unpack.
* Can be used to specialize the asynchronous control flow
  on immediate available asynchronous results mostly returned by:
    - make_ready_continuable
    - make_exceptional_continuable
* Usable to avoid longer unnecessary synchronous callback nestings.
* cti::query_arg_t was renamed into cti::unpack_arg_t.
* The continuation overload nowreturns result<Args...> rather
  than std::tuple<Args...>.
* Add is_ready optimizations to make_exceptional_continuable.
2019-12-26 10:13:20 +01:00

116 lines
3.9 KiB
CMake

add_library(test-continuable-base STATIC
${CMAKE_CURRENT_LIST_DIR}/test-continuable.hpp
${CMAKE_CURRENT_LIST_DIR}/test-continuable.cpp)
target_include_directories(test-continuable-base
PUBLIC
${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(test-continuable-base
PUBLIC
gtest
gtest-main
continuable
continuable-features-flags
continuable-features-warnings
continuable-features-noexcept)
add_executable(test-continuable-single
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-promise.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-connection-noinst
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-forward-decl.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-flat-variant.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-result.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-ready.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-promisify.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-erasure.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-traverse.cpp
${CMAKE_CURRENT_LIST_DIR}/single/test-continuable-traverse-async.cpp)
target_link_libraries(test-continuable-single
PUBLIC
test-continuable-base)
target_include_directories(test-continuable-single
PUBLIC
${CMAKE_CURRENT_LIST_DIR}/single)
add_test(
NAME continuable-unit-tests-single
COMMAND test-continuable-single)
if (CTI_CONTINUABLE_WITH_LIGHT_TESTS)
set(STEP_RANGE 0)
else()
set(STEP_RANGE 4)
endif()
set(TEST_SOURCES
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-await.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-base-chaining.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-base-destruct.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-base-errors.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-base-partial.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-base-multipath.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-base-executors.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-connection-all-seq-ag-1.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-connection-all-seq-ag-2.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-connection-all-seq-op.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-connection-all.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-connection-any.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-connection-seq.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-operations-async.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-operations-loop.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-operations-split.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-erasure.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-regression.cpp
${CMAKE_CURRENT_LIST_DIR}/multi/test-continuable-transforms.cpp)
foreach(STEP RANGE ${STEP_RANGE})
set(PROJECT_NAME test-continuable-multi-${STEP})
set(TEST_NAME continuable-unit-tests-multi-${STEP})
add_executable(${PROJECT_NAME} ${TEST_SOURCES})
target_link_libraries(${PROJECT_NAME}
PUBLIC
test-continuable-base)
target_include_directories(${PROJECT_NAME}
PUBLIC
${CMAKE_CURRENT_LIST_DIR}
${CMAKE_CURRENT_LIST_DIR}/multi)
target_compile_definitions(${PROJECT_NAME}
PUBLIC
-DUNIT_TEST_STEP=${STEP})
add_test(
NAME ${TEST_NAME}
COMMAND ${PROJECT_NAME})
endforeach()
# The ready tests
set(PROJECT_NAME test-continuable-multi-ready)
set(TEST_NAME continuable-unit-tests-multi-ready)
add_executable(${PROJECT_NAME} ${TEST_SOURCES})
target_link_libraries(${PROJECT_NAME}
PUBLIC
test-continuable-base)
target_include_directories(${PROJECT_NAME}
PUBLIC
${CMAKE_CURRENT_LIST_DIR}
${CMAKE_CURRENT_LIST_DIR}/multi)
target_compile_definitions(${PROJECT_NAME}
PUBLIC
-DUNIT_TEST_STEP=0
-DUNIT_TEST_READY_CONTINUABLES)
add_test(
NAME ${TEST_NAME}
COMMAND ${PROJECT_NAME})