CMAKE_MINIMUM_REQUIRED(VERSION 3.25)
INCLUDE(${CMAKE_TESTING_DIRECTORY}/tests.cmake)
include(CTest)
file(MAKE_DIRECTORY ${CMAKE_TESTING_DIRECTORY}/Runtime)
IF(UNIT_TESTS)
FOREACH(file ${UnitTests})
SET(target "UnitTest-${file}")
ADD_EXECUTABLE(${target} ${CMAKE_TESTING_DIRECTORY}/Source/Unit/${file}.cpp)
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_TESTING_DIRECTORY}/Tests/Unit")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_TESTING_DIRECTORY}/Tests/Unit")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_TESTING_DIRECTORY}/Tests/Unit")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_TESTING_DIRECTORY}/Tests/Unit")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_TESTING_DIRECTORY}/Tests/Unit")
SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS "-DTEST -DTESTDIR=\"\\\"${CMAKE_TESTING_DIRECTORY}/Runtime\\\"\"")
TARGET_INCLUDE_DIRECTORIES(${target} PUBLIC "${CMAKE_TESTING_DIRECTORY}/Source")
TARGET_INCLUDE_DIRECTORIES(${target} PUBLIC "${CMAKE_SOURCE_DIR}/Source")
TARGET_LINK_LIBRARIES(${target} Gorgon)
target_compile_options(${target} PRIVATE -coverage)
target_link_options(${target} PRIVATE -coverage)
ADD_TEST(NAME ${file} WORKING_DIRECTORY ${CMAKE_TESTING_DIRECTORY}/Runtime COMMAND ${CMAKE_TESTING_DIRECTORY}/Tests/Unit/${target})
ENDFOREACH()
ENDIF()
FOREACH(file ${ManualTests})
OPTION(MANUAL_TEST_${file} "Add ${file} manual tests to your manualtest run." OFF)
ENDFOREACH()
ADD_CUSTOM_TARGET(manualtest)
FOREACH(file ${ManualTests})
IF(MANUAL_TEST_${file})
SET(target "ManualTest-${file}")
ADD_EXECUTABLE(${target} ${CMAKE_TESTING_DIRECTORY}/Source/Manual/${file}.cpp)
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_TESTING_DIRECTORY}/Tests/Manual")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_TESTING_DIRECTORY}/Tests/Manual")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_TESTING_DIRECTORY}/Tests/Manual")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_TESTING_DIRECTORY}/Tests/Manual")
SET_TARGET_PROPERTIES(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_TESTING_DIRECTORY}/Tests/Manual")
SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS "-DTEST -DTESTDIR=\"\\\"${CMAKE_TESTING_DIRECTORY}/Runtime\\\"\"")
TARGET_INCLUDE_DIRECTORIES(${target} PUBLIC "${CMAKE_TESTING_DIRECTORY}/Source")
TARGET_INCLUDE_DIRECTORIES(${target} PUBLIC "${CMAKE_SOURCE_DIR}/Source")
TARGET_LINK_LIBRARIES(${target} Gorgon)
target_compile_options(${target} PRIVATE -coverage)
target_link_options(${target} PRIVATE -coverage)
ADD_CUSTOM_COMMAND(TARGET manualtest COMMAND ${CMAKE_TESTING_DIRECTORY}/Tests/Manual/${target})
ENDIF()
ENDFOREACH()