cmake_minimum_required(VERSION 3.16)

# Unit tests just need test sources + link to simian_core
add_executable(unit_tests
    test.cpp
    physfs_test_utils.cpp
    hot_reload.cpp
    script_engine_tests.cpp
    math_bindings_tests.cpp
    resource_tests.cpp
    scenegraph_tests.cpp
)

target_include_directories(unit_tests PRIVATE
    ${CMAKE_SOURCE_DIR}/tests
    ${CMAKE_SOURCE_DIR}/include
    ${CMAKE_SOURCE_DIR}/external/acutest
)

# Link the shared simian_core library - that's it!
target_link_libraries(unit_tests PRIVATE simian_core)

# Platform-specific linking for tests too
if(WIN32)
    target_link_libraries(unit_tests PRIVATE winmm gdi32)
endif()

add_test(NAME unit_tests COMMAND unit_tests)
add_test(NAME hotreload_dir COMMAND unit_tests hotreload_dir)
add_test(NAME script_compile COMMAND unit_tests script_compile)
add_test(NAME script_include COMMAND unit_tests script_include)
add_test(NAME math_bindings COMMAND unit_tests math_bindings)
add_test(NAME shader_manager COMMAND unit_tests shader_manager)
add_test(NAME model_manager COMMAND unit_tests model_manager)
add_test(NAME material_manager COMMAND unit_tests material_manager)
add_test(NAME asset_registry_material COMMAND unit_tests asset_registry_material)
add_test(NAME resource_bindings COMMAND unit_tests resource_bindings)
add_test(NAME scenegraph_world COMMAND unit_tests scenegraph_world)
add_test(NAME scenegraph_detach COMMAND unit_tests scenegraph_detach)
add_test(NAME scene_loader COMMAND unit_tests scene_loader)
add_test(NAME scene_loader_script_path COMMAND unit_tests scene_loader_script_path)
add_test(NAME scene_loader_clear_script COMMAND unit_tests scene_loader_clear_script)
add_test(NAME scene_loader_assets COMMAND unit_tests scene_loader_assets)
add_test(NAME scene_loader_sandbox COMMAND unit_tests scene_loader_sandbox)
