cmake_minimum_required( VERSION 3.20 )

# Setup testing
if(${TESTING})
  find_package(GTest REQUIRED CONFIG)
  if(${GTest_FOUND})
    enable_testing()
    include_directories(AFTER ${GTEST_INCLUDE_DIRS})
  else()
    set(TESTING 0)
  endif()
endif()

if(${TESTING})
  find_package( Threads )

  include_directories( ${FSON_MODULE_DIR} ${CPARSE_MODULE_DIR} )

  add_executable( runModelTests ModelTests.cpp )
  target_link_libraries( runModelTests GTest::gtest GTest::gtest_main ${CMAKE_THREAD_LIBS_INIT} fson )
  add_test( runModelTests runModelTests )

  add_executable( runFsonParserTests FsonParserTests.cpp )
  target_link_libraries( runFsonParserTests GTest::gtest GTest::gtest_main ${CMAKE_THREAD_LIBS_INIT} fson cparse )
  add_test( runFsonParserTests runFsonParserTests )

  add_executable( runFsonWriterTests FsonWriterTests.cpp )
  target_link_libraries( runFsonWriterTests GTest::gtest GTest::gtest_main ${CMAKE_THREAD_LIBS_INIT} fson cparse )
  add_test( runFsonWriterTests runFsonWriterTests )

  add_executable( runFsonApiTests FsonApiTests.cpp )
  target_link_libraries( runFsonApiTests GTest::gtest GTest::gtest_main ${CMAKE_THREAD_LIBS_INIT} fson cparse )
  add_test( runFsonApiTests runFsonApiTests )

  add_executable( runFsonIncludeTests FsonIncludeTests.cpp )
  target_link_libraries( runFsonIncludeTests GTest::gtest GTest::gtest_main ${CMAKE_THREAD_LIBS_INIT} fson cparse )
  add_test( runFsonIncludeTests runFsonIncludeTests )

  add_executable( runFsonMultilineTests FsonMultilineTests.cpp )
  target_link_libraries( runFsonMultilineTests GTest::gtest GTest::gtest_main ${CMAKE_THREAD_LIBS_INIT} fson cparse )
  add_test( runFsonMultilineTests runFsonMultilineTests )
endif()
