set(expected_number_of_tests 12)

# Check the flushing of the test names buffer
list(LENGTH flush_script_test_TESTS num_test_names)
if(NOT num_test_names EQUAL expected_number_of_tests)
  message(FATAL_ERROR
    "Test name list has wrong number of test names:\n"
    "  Expected: ${expected_number_of_tests}\n"
    "  Actual:   ${num_test_names}"
  )
endif()

# Check the flushing of the script content variable.
# Note that flushing errors would repeat a test name, so such errors are not
# uncovered by checking the name buffer flushing above.

# PRE_TEST can have a config-specific tests file, POST_BUILD never does
set(tests_file "@CMAKE_CURRENT_BINARY_DIR@/flush_script_test[1]_tests-Debug.cmake")
if(NOT EXISTS "${tests_file}")
  set(tests_file "@CMAKE_CURRENT_BINARY_DIR@/flush_script_test[1]_tests.cmake")
endif()
if(NOT EXISTS "${tests_file}")
  message(FATAL_ERROR "Tests file is missing")
endif()

file(STRINGS "${tests_file}" add_test_lines REGEX "^add_test" ENCODING UTF-8)
list(LENGTH add_test_lines num_add_test_lines)
if(NOT num_add_test_lines EQUAL expected_number_of_tests)
  message(FATAL_ERROR
    "Test script has wrong number of add_test() calls:\n"
    "  Expected: ${expected_number_of_tests}\n"
    "  Actual:   ${num_add_test_lines}"
  )
endif()
