set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/test)

add_executable(cose_test test.cpp json.cpp Encrypt_test.cpp Sign_test.cpp context.cpp Mac_test.cpp CounterSign_test.cpp CounterSign1_test.cpp)

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 ecdsa-native
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  COMMAND cose_test --dir Examples/ecdsa-examples --keyFormat=native)
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()
if(COSE_C_INCLUDE_COUNTERSIGN1)
  add_test(
    NAME Countersign1
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    COMMAND cose_test --dir Examples/countersign1)
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()
if(COSE_C_INCLUDE_COUNTERSIGN1)
  add_test(
    NAME Memory-Countersign1
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    COMMAND cose_test --memory Examples/countersign1/mac0-01.json)
endif()
