Matthew Woehlke 66c70cd9f1 cmake_parse_arguments: Add additional unit tests
Add additional unit tests for some corner cases in argument splitting.
2016-09-28 15:20:42 -04:00

31 lines
961 B
CMake

function(TEST variable)
if(ARGC GREATER 2)
set(i 0)
foreach(value IN LISTS ${variable})
math(EXPR j "${i} + 1")
set(${variable}[${i}] "${value}")
TEST(${variable}[${i}] "${ARGV${j}}")
set(i ${j})
endforeach()
else()
set(expected "${ARGN}")
if("${expected}" STREQUAL "UNDEFINED")
if(DEFINED ${variable})
message(FATAL_ERROR "'${variable}' shall be undefined but has value '${${variable}}'")
endif()
elseif("${expected}" STREQUAL "FALSE")
if(NOT ${variable} STREQUAL "FALSE")
message(FATAL_ERROR "'${variable}' shall be FALSE")
endif()
elseif("${expected}" STREQUAL "TRUE")
if(NOT ${variable} STREQUAL "TRUE")
message(FATAL_ERROR "'${variable}' shall be TRUE")
endif()
else()
if(NOT ${variable} STREQUAL "${expected}")
message(FATAL_ERROR "'${variable}' shall be '${expected}'")
endif()
endif()
endif()
endfunction()