################################################################################
#  Parser Tests
################################################################################

add_executable(unit_tests EXCLUDE_FROM_ALL
  inputs.t.cpp
  parser.t.cpp
  main.cpp
  solver.t.cpp
  )
target_link_libraries(unit_tests parser)

target_include_directories(unit_tests PRIVATE
  ${CMAKE_SOURCE_DIR}/subprojects/PEGTL/include
  ${CMAKE_SOURCE_DIR}/src
  )

SET(catch2_dir ${PROJECT_SOURCE_DIR}/subprojects/Catch2)

find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
  # Update submodules as needed
  option(GIT_SUBMODULE "Check submodules during build" ON)
  if(GIT_SUBMODULE)
    message(STATUS "Submodule update")
    execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
      RESULT_VARIABLE GIT_SUBMOD_RESULT)
    if(NOT GIT_SUBMOD_RESULT EQUAL "0")
      message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
    endif()
  endif()
endif()

if(NOT EXISTS "${catch2_dir}/CMakeLists.txt")
  message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
endif()

add_subdirectory(${catch2_dir} ${CMAKE_CURRENT_BINARY_DIR}/catch_build)
list(APPEND CMAKE_MODULE_PATH "${catch2_dir}/contrib/")

target_link_libraries(unit_tests Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(unit_tests)
