set(COMMON_TEST_INCLUDES
	${CMAKE_SOURCE_DIR}/include
	${CMAKE_SOURCE_DIR}/src
	${CMAKE_SOURCE_DIR}/uthash
)

set(COMMON_TEST_LIBS ucl)

set(TEST_ENV_VARS
	"TEST_DIR=${CMAKE_SOURCE_DIR}/tests"
	"TEST_OUT_DIR=${CMAKE_BINARY_DIR}/tests"
	"TEST_BINARY_DIR=${CMAKE_BINARY_DIR}/tests"
)

macro(add_ucl_test testname sourcefile wrapper)
	add_executable(${testname} ${sourcefile})
	target_include_directories(${testname} PRIVATE ${COMMON_TEST_INCLUDES})
	target_link_libraries(${testname} PRIVATE ${COMMON_TEST_LIBS})
	IF(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
		add_test(NAME ${testname} COMMAND ${CMAKE_SOURCE_DIR}/tests/${wrapper})
		set_tests_properties(${testname} PROPERTIES ENVIRONMENT "${TEST_ENV_VARS}")
	ENDIF()
endmacro()

# Tests using POSIX APIs (mmap, STDIN_FILENO, etc.) - skip on Windows
IF(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
	add_ucl_test(test_basic test_basic.c basic.test)
	add_ucl_test(test_speed test_speed.c speed.test)
	add_ucl_test(test_schema test_schema.c schema.test)
ENDIF()

# Portable tests
add_ucl_test(test_msgpack test_msgpack.c msgpack.test)
add_ucl_test(test_generate test_generate.c generate.test)

