find_package(Python3 COMPONENTS Interpreter REQUIRED)
add_executable(brq_func main.cpp write_read.cpp write_layout.cpp store.cpp pool.cpp concurrency.cpp death.cpp policy.cpp)
target_link_libraries(brq_func PRIVATE TwoBufQueue)
brq_warnings(brq_func)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/cases.json" cases)
string(JSON count LENGTH "${cases}")
math(EXPR last "${count} - 1")
foreach(i RANGE 0 ${last})
  string(JSON id GET "${cases}" ${i} id)
  string(JSON kind GET "${cases}" ${i} kind)
  if(kind STREQUAL "compile")
    add_test(NAME func_${id} COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/verify_compile.py"
      --compiler "${CMAKE_CXX_COMPILER}" --include "${CMAKE_BINARY_DIR}/include" --msvc "$<IF:$<BOOL:${MSVC}>,1,0>" --cmake "${CMAKE_COMMAND}" --generator "${CMAKE_GENERATOR}" "--platform=${CMAKE_GENERATOR_PLATFORM}" "--toolset=${CMAKE_GENERATOR_TOOLSET}" --case ${id})
  elseif(kind STREQUAL "death")
    add_test(NAME func_${id} COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/verify.py" --exe $<TARGET_FILE:brq_func> --case ${id})
  else()
    add_test(NAME func_${id} COMMAND brq_func --case ${id})
  endif()
  set_tests_properties(func_${id} PROPERTIES TIMEOUT 180 LABELS "functional;${kind}")
endforeach()
add_test(NAME func_catalog COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/verify.py" --exe $<TARGET_FILE:brq_func> --catalog "${CMAKE_CURRENT_SOURCE_DIR}/cases.json")
set_tests_properties(func_catalog PROPERTIES TIMEOUT 20 LABELS "functional;catalog")
add_subdirectory(concurrent)
add_subdirectory(source_lifecycle)
add_subdirectory(block_lifecycle)
add_subdirectory(block_roles)
add_subdirectory(block_templates)
add_subdirectory(external_pool)
add_subdirectory(warm_pool)
add_subdirectory(spsc_blocks)

# review_20260925 is a historical reproduction for removed callback/storage APIs.
# Current equivalents run in read_ctrl_{item,service,worker,single}, source_lifecycle,
# and test_writer; see test/READ_CTRL_TESTS.md for the coverage mapping.
add_subdirectory(handoff_queue)
