
########### next target ###############

set(ktoblzcheck_bin_SRCS ktoblzcheck.cc)
add_executable(ktoblzcheck-bin ${ktoblzcheck_bin_SRCS})
target_link_libraries(ktoblzcheck-bin ktoblzcheck)
set_target_properties(ktoblzcheck-bin PROPERTIES OUTPUT_NAME ktoblzcheck)
if(BUILD_STATIC)
    # strip executables
    set(CMAKE_EXE_LINKER_FLAGS_RELEASE -s)
endif()

install(TARGETS ktoblzcheck-bin DESTINATION bin)

# tests for AccountNumberCheck::OK
add_test(
    NAME ktoblzcheck_de
    COMMAND ${TEST_WRAPPER} $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_DBPATH} 20050550 1262693334
)

add_test(
    NAME ktoblzcheck_nl
    COMMAND ${TEST_WRAPPER} $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_NL_DBPATH} ABNA 0417164300
)

add_test(
    NAME ktoblzcheck_ch
    COMMAND ${TEST_WRAPPER} $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_CH_DBPATH} 00761 011623852957
)

#tests for AccountNumberCheck::ERROR
add_test(
    NAME ktoblzcheck_de_invalid1
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_DBPATH} 20050550 1262693333
)

add_test(
    NAME ktoblzcheck_nl_invalid1
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_NL_DBPATH} ABNA 126269333345
)

add_test(
    NAME ktoblzcheck_ch_invalid1
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_CH_DBPATH} 00761 01162385295700
)

set_tests_properties(ktoblzcheck_de_invalid1 PROPERTIES WILL_FAIL 1)
set_tests_properties(ktoblzcheck_nl_invalid1 PROPERTIES WILL_FAIL 1)
set_tests_properties(ktoblzcheck_ch_invalid1 PROPERTIES WILL_FAIL 1)

#tests for AccountNumberCheck::BANK_NOT_KNOWN
add_test(
    NAME ktoblzcheck_de_invalid2
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_DBPATH} 2005055 1262693334
)

add_test(
    NAME ktoblzcheck_nl_invalid2
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_NL_DBPATH} ABNAA 0417164300
)

add_test(
    NAME ktoblzcheck_ch_invalid2
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_CH_DBPATH} 0076 011623852957
)

set_tests_properties(ktoblzcheck_de_invalid2 PROPERTIES WILL_FAIL 1)
set_tests_properties(ktoblzcheck_nl_invalid2 PROPERTIES WILL_FAIL 1)
set_tests_properties(ktoblzcheck_ch_invalid2 PROPERTIES WILL_FAIL 1)

#tests for AccountNumberCheck::UNKNOWN

add_test(
    NAME ktoblzcheck_de_invalid3
    COMMAND $<TARGET_FILE:ktoblzcheck-bin> --file=${BANKDATA_DBPATH} --method=100 2005055 1262693334
)

set_tests_properties(ktoblzcheck_de_invalid3 PROPERTIES WILL_FAIL 1)

if(ENABLE_METHOD_TESTS)
    add_method_tests(45
        PASS
            3545343232 4013410024 0994681254
            0000012340 1000199999 0100114240
            4890001112
    )
    add_method_tests(B1
        PASS
            # v1
            1434253150 2746315471
            # v2
            7414398260 8347251693
            # v3
            1501824 1501832 539290858
            7414398268 8347251699
        FAIL
            # v1
            1501824 1501832 539290858
            0123456789 2345678901 5678901234
            7414398260 7414398268 8347251693
            8347251699
            # v2
            1501824 1501832 539290858
            0123456789 2345678901 5678901234
            7414398268 8347251699
            # v3
            0123456789 2345678901 5678901234
    )
    add_method_tests(C2
        PASS
            # v1
            2394871426 4218461950 7352569148
            # v2
            5127485166 8738142564
            # v3
            0076543216 3456789012 9024675138
        FAIL
            # v1, v2
            5127485166 8738142564 0328705282
            9024675131 0076543216 3456789012
            9024675138 7352569145
            # v3
            0328705282 7352569145 9024675131
    )
    add_method_tests(E4
        PASS
           # v1
           1501836 9290702 539290858
           # v2
           1501824 1501832 9290701
        FAIL
           # v1
           1501824 1501832 9290701
           # v2
           12345007 87654005
    )
endif()

########### next target ###############

set(ctest_SRCS ctest.c)
add_executable(ctest ${ctest_SRCS})


########### next target ###############

set(benchmark_SRCS benchmark.cc)
add_executable(benchmark ${benchmark_SRCS})
target_link_libraries(benchmark ktoblzcheck ${SQLite3_LIBRARIES})

#Currently disabling; need to update benchmark code
add_test(
    NAME benchmark
    COMMAND ${TEST_WRAPPER} $<TARGET_FILE:benchmark> --file=${BANKDATA_DBPATH} 5
)

########### next target ###############

#
# TODO:  seems to be redundant (see lib)
#
set(ibanchk_SRCS ibanchk.cc)
add_executable(ibanchk ${ibanchk_SRCS})
target_link_libraries(ibanchk ktoblzcheck)

install(TARGETS ibanchk DESTINATION bin)

# not working yet because of different return code
#add_test(
#    NAME ibanchk_invalid
#    COMMAND $<TARGET_FILE:ibanchk> "FR1420041010050500013X02606"
#)

add_test(
    NAME ibanchk_de
    COMMAND ${TEST_WRAPPER} $<TARGET_FILE:ibanchk> "DE89 3704 0044 0532 0130 00"
)
set_tests_properties(ibanchk_de PROPERTIES
    ENVIRONMENT XDG_DATA_DIRS=${BANKDATA_PATH}
)

add_test(
    NAME ibanchk_fr
    COMMAND ${TEST_WRAPPER} $<TARGET_FILE:ibanchk> "fr14 2004 1010 0505 0001 3m02 606"
)
set_tests_properties(ibanchk_fr PROPERTIES
    ENVIRONMENT XDG_DATA_DIRS=${BANKDATA_PATH}
)

########### next target ###############

set(ktoblzupdate_SRCS ktoblzupdate.cc)
add_executable(ktoblzupdate ${ktoblzupdate_SRCS})
target_link_libraries(ktoblzupdate ktoblzcheck ${CURL_LIBRARIES})

install(TARGETS ktoblzupdate DESTINATION bin)
