# Copyright (c) 2026 Jakub Juszczakiewicz
# All rights reserved.

enable_testing()

list(APPEND TESTS version)
list(APPEND TESTS add_64)
list(APPEND TESTS sub_64)

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
list(APPEND TESTS add_64_64)
list(APPEND TESTS add_128_64)
list(APPEND TESTS sub_64_64)
list(APPEND TESTS sub_128_64)
list(APPEND TESTS init_64_64)
list(APPEND TESTS init_128_64)
list(APPEND TESTS mul_school_128_64)
list(APPEND TESTS mul_school_64_64)
list(APPEND TESTS div_128_64)
list(APPEND TESTS div_64_64)
list(APPEND TESTS logic_64_64)
list(APPEND TESTS logic_128_64)
list(APPEND TESTS cmp_64_64)
list(APPEND TESTS cmp_128_64)
list(APPEND TESTS shift_64_64)
else()
list(APPEND TESTS add_64_32)
list(APPEND TESTS add_128_32)
list(APPEND TESTS sub_64_32)
list(APPEND TESTS sub_128_32)
list(APPEND TESTS init_64_32)
list(APPEND TESTS init_128_32)
list(APPEND TESTS mul_school_128_32)
list(APPEND TESTS mul_school_64_32)
list(APPEND TESTS div_128_32)
list(APPEND TESTS div_64_32)
list(APPEND TESTS logic_64_32)
list(APPEND TESTS logic_128_32)
list(APPEND TESTS cmp_64_32)
list(APPEND TESTS cmp_128_32)
list(APPEND TESTS shift_64_32)
endif()
list(APPEND TESTS init_64)
list(APPEND TESTS init_128)
list(APPEND TESTS cmp_64)
list(APPEND TESTS cmp_128)
list(APPEND TESTS logic_64)
list(APPEND TESTS logic_128)
list(APPEND TESTS add_128)
list(APPEND TESTS sub_128)
list(APPEND TESTS shift_64)
list(APPEND TESTS shift_128)
list(APPEND TESTS mul_school_64)
list(APPEND TESTS mul_school_128)
list(APPEND TESTS div_64)
list(APPEND TESTS div_128)
list(APPEND TESTS import_128)
list(APPEND TESTS bits_64)
list(APPEND TESTS bits_128)
list(APPEND TESTS export_128)
list(APPEND TESTS pow_64)
list(APPEND TESTS pow_128)
list(APPEND TESTS root_64)
list(APPEND TESTS root_128)
list(APPEND TESTS bytes_128)

list(APPEND PERF_TESTS temp)

if (BUILD_STATIC)
  set(TESTLIB kitbigints_static)
elseif (BUILD_SHARED)
  set(TESTLIB kitbigints)
else()
  message(FATAL_ERROR "Can't build test without lib")
endif()

foreach(TEST ${TESTS})
  add_executable(${TEST} "test_${TEST}.c" "xprint.c")
  target_link_libraries(${TEST} ${TESTLIB})
  add_test(NAME ${TEST} COMMAND ${TEST})
endforeach()

foreach(TEST ${PERF_TESTS})
  add_executable(perf_${TEST} "test_perf_${TEST}.c" "clock.c")
  target_link_libraries(perf_${TEST} ${TESTLIB})
endforeach()

