#Testing macro
macro (add_test_executable_with_lib folder _name)
	add_executable(test_${folder}_${_name} "${folder}/${_name}.cpp")
  
  IF(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm64")
	  target_link_libraries(test_${folder}_${_name} ${EMP-OT_LIBRARIES})
  ELSE()
	  target_link_libraries(test_${folder}_${_name} ${EMP-OT_LIBRARIES} HEXL::hexl)
  ENDIF()
endmacro()

macro (add_test_case folder _name)
	add_test_executable_with_lib(${folder} ${_name})
  	add_test(NAME ${folder}_${_name} COMMAND "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_${folder}_${_name}" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/")
endmacro()

macro (add_test_case_with_run folder _name)
	add_test_executable_with_lib(${folder} ${_name})
	add_test(NAME ${folder}_${_name} COMMAND "./run" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_${folder}_${_name}" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/")

endmacro()

# Test cases
add_test_case_with_run(utils fields)
IF(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm64")
ELSE()
add_test_case_with_run(utils hexl_ntt)
ENDIF()
add_test_case_with_run(utils poly)
