# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT

include(dusktest)

dusktest(test_duskscript.c)

# Compile the fixture scripts to bytecode with duskscriptcc at build time, so
# the test exercises the real compiler -> runtime -> consolePrint pipeline.
set(DUSKSCRIPT_TEST_FIXTURE_DS ${CMAKE_CURRENT_LIST_DIR}/fixture.ds)
set(DUSKSCRIPT_TEST_FIXTURE_DSB ${CMAKE_CURRENT_BINARY_DIR}/fixture.dsb)
set(DUSKSCRIPT_TEST_NUMBERS_DS ${CMAKE_CURRENT_LIST_DIR}/fixture_numbers.ds)
set(DUSKSCRIPT_TEST_NUMBERS_DSB ${CMAKE_CURRENT_BINARY_DIR}/fixture_numbers.dsb)

add_custom_command(
  OUTPUT ${DUSKSCRIPT_TEST_FIXTURE_DSB}
  COMMAND duskscriptcc ${DUSKSCRIPT_TEST_FIXTURE_DS} -o ${DUSKSCRIPT_TEST_FIXTURE_DSB}
  DEPENDS duskscriptcc ${DUSKSCRIPT_TEST_FIXTURE_DS}
  COMMENT "Compiling duskscript test fixture"
)
add_custom_command(
  OUTPUT ${DUSKSCRIPT_TEST_NUMBERS_DSB}
  COMMAND duskscriptcc ${DUSKSCRIPT_TEST_NUMBERS_DS} -o ${DUSKSCRIPT_TEST_NUMBERS_DSB}
  DEPENDS duskscriptcc ${DUSKSCRIPT_TEST_NUMBERS_DS}
  COMMENT "Compiling duskscript numbers test fixture"
)
add_custom_target(duskscript_test_fixture DEPENDS ${DUSKSCRIPT_TEST_FIXTURE_DSB} ${DUSKSCRIPT_TEST_NUMBERS_DSB})
add_dependencies(test_duskscript duskscript_test_fixture)

target_compile_definitions(test_duskscript PRIVATE
  DUSKSCRIPT_TEST_FIXTURE="${DUSKSCRIPT_TEST_FIXTURE_DSB}"
  DUSKSCRIPT_TEST_NUMBERS="${DUSKSCRIPT_TEST_NUMBERS_DSB}"
)
