set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/test)

add_executable(cose_test test.c json.c encrypt.c sign.c context.c mac_test.c CounterSign_test.c)

target_link_libraries(cose_test PRIVATE cose-c::cose-c cn-cbor::cn-cbor)

if(COSE_C_USE_MBEDTLS)
  # mbedtls
  target_link_libraries(cose_test PRIVATE mbedtls)
else()
  # OpenSSL
  target_include_directories(cose_test PRIVATE ${OPENSSL_INCLUDE_DIR})
  target_link_libraries(cose_test PRIVATE ${OPENSSL_LIBRARIES})
endif()

if(COSE_C_OPTIMIZE)
  # Don't worry about the compiler optimizations
  add_definitions(-DNDEBUG)
endif()

if(MSVC)
  target_link_libraries(cose_test PRIVATE ws2_32)
endif()

target_include_directories(cose_test PRIVATE ../src)

if(CLANG_TIDY_EXE)
  set_target_properties(cose_test PROPERTIES C_CLANG_TIDY "${CLANG_TIDY_EXE}")
endif()

enable_testing()

add_test(NAME cose_test COMMAND cose_test)

add_test(
  NAME RFC8152
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/RFC8152)

add_test(
  NAME aes-ccm
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/aes-ccm-examples)

add_test(
  NAME aes-gcm
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/aes-gcm-examples)

add_test(
  NAME enveloped
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/enveloped-tests)
add_test(
  NAME encrypted
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/encrypted-tests)

add_test(
  NAME cbc-mac
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/cbc-mac-examples)

add_test(
  NAME ecdsa
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/ecdsa-examples)
add_test(
  NAME eddsa
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/eddsa-examples)

add_test(
  NAME hmac
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/hmac-examples)
add_test(
  NAME mac
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/mac-tests)
add_test(
  NAME mac0
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/mac0-tests)

add_test(
  NAME hkdf-hmac-sha
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/hkdf-hmac-sha-examples)
add_test(
  NAME hkdf-aes
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/hkdf-aes-examples)

add_test(
  NAME aes-wrap
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/aes-wrap-examples)

add_test(
  NAME ecdh-direct
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/ecdh-direct-examples)
add_test(
  NAME ecdh-wrap
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/ecdh-wrap-examples)
add_test(
  NAME sign
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/sign-tests)
add_test(
  NAME sign1
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/sign1-tests)
if(COSE_C_INCLUDE_COUNTERSIGN)
  add_test(
    NAME Countersign
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    COMMAND cose_test --dir Examples/countersign)
endif()

add_test(
  NAME corner-cases
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --corners)

add_test(
  NAME Memory-mac-hmac
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/hmac-examples/HMac-01.json)
add_test(
  NAME Memory-mac-cbc-mac
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/cbc-mac-examples/cbc-mac-01.json)
add_test(
  NAME Memory-mac0
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/hmac-examples/HMac-enc-01.json)

add_test(
  NAME Memory-encrypt-gcm
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/aes-gcm-examples/aes-gcm-enc-01.json)
add_test(
  NAME Memory-encrypt-ccm
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/aes-ccm-examples/aes-ccm-enc-01.json)
add_test(
  NAME Memory-enveloped
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/aes-gcm-examples/aes-gcm-01.json)

add_test(
  NAME Memory-ecdh
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/ecdh-direct-examples/p256-hkdf-256-01.json)
add_test(
  NAME Memory-aes-kw
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/aes-wrap-examples/aes-wrap-128-01.json)

add_test(
  NAME Memory-sign0
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/ecdsa-examples/ecdsa-sig-01.json)
add_test(
  NAME Memory-sign
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/ecdsa-examples/ecdsa-01.json)
add_test(
  NAME Memory-sign0-eddsa
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/eddsa-examples/eddsa-sig-01.json)
add_test(
  NAME Memory-sign-eddsa
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --memory Examples/eddsa-examples/eddsa-01.json)

if(COSE_C_INCLUDE_COUNTERSIGN)
  add_test(
    NAME Memory-Countersign
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    COMMAND cose_test --memory Examples/countersign/mac0-01.json)
endif()
