# These following tests are used to test our semantics. It relies on Unicorn emulator.
# We test our semantics on Linux only because the setup is easier.
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND PYTHON_BINDINGS)
    enable_testing()
    add_test(UnicornAArch64Semantics    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/aarch64/unicorn_test_aarch64.py")
    add_test(UnicornX86Semantics        sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/x86/unicorn_test_x86.py")
    add_test(UnicornARM32Semantics1     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_branch_arm_1.py")
    add_test(UnicornARM32Semantics2     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_branch_arm_2.py")
    add_test(UnicornARM32Semantics3     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_branch_pc_arm_1.py")
    add_test(UnicornARM32Semantics4     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_branch_pc_arm_2.py")
    add_test(UnicornARM32Semantics5     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_branch_thumb_1.py")
    add_test(UnicornARM32Semantics6     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_branch_thumb_2.py")
    add_test(UnicornARM32Semantics7     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_data_arm.py")
    add_test(UnicornARM32Semantics8     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_data_thumb.py")
    add_test(UnicornARM32Semantics9     sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_interworking_arm_1.py")
    add_test(UnicornARM32Semantics10    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_interworking_arm_2.py")
    add_test(UnicornARM32Semantics11    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_interworking_thumb.py")
    add_test(UnicornARM32Semantics12    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_it_thumb.py")
    add_test(UnicornARM32Semantics13    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_arm_1.py")
    add_test(UnicornARM32Semantics14    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_arm_2.py")
    add_test(UnicornARM32Semantics15    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_arm_3.py")
    add_test(UnicornARM32Semantics16    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_arm_4.py")
    add_test(UnicornARM32Semantics17    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_arm_5.py")
    add_test(UnicornARM32Semantics18    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_thumb_1.py")
    add_test(UnicornARM32Semantics19    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_thumb_2.py")
    add_test(UnicornARM32Semantics20    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_thumb_3.py")
    add_test(UnicornARM32Semantics21    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/unicorn_test_arm32_loadstore_thumb_5.py")
    add_test(UnicornARM32Semantics22    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-nothumb-O0-run.py")
    add_test(UnicornARM32Semantics23    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-nothumb-O1-run.py")
    add_test(UnicornARM32Semantics24    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-nothumb-O2-run.py")
    add_test(UnicornARM32Semantics25    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-nothumb-O3-run.py")
    add_test(UnicornARM32Semantics26    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-nothumb-Os-run.py")
    add_test(UnicornARM32Semantics27    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-nothumb-Oz-run.py")
    add_test(UnicornARM32Semantics28    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-thumb-O0-run.py")
    add_test(UnicornARM32Semantics29    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-thumb-O1-run.py")
    add_test(UnicornARM32Semantics30    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-thumb-O2-run.py")
    add_test(UnicornARM32Semantics31    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-thumb-O3-run.py")
    add_test(UnicornARM32Semantics32    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-thumb-Os-run.py")
    add_test(UnicornARM32Semantics33    sh -c "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/arm32/crypto_test/crypto_test-thumb-Oz-run.py")
endif()
