CMake/Tests/ArgumentExpansion/CMakeLists.txt

60 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 2.8)
project(ArgumentExpansion)
function (argument_tester expected expected_len)
list(LENGTH ARGN argn_len)
list(LENGTH ${expected} expected_received_len)
if (NOT ${expected_received_len} EQUAL ${expected_len})
message(STATUS "Error: Expanding expected values isn't working")
endif (NOT ${expected_received_len} EQUAL ${expected_len})
if (${argn_len} EQUAL ${expected_len})
set(i 0)
while (i LESS ${argn_len})
list(GET ARGN ${i} argn_value)
list(GET ${expected} ${i} expected_value)
if (NOT ${argn_value} STREQUAL ${expected_value})
message(STATUS "Error: Argument ${i} doesn't match")
message(STATUS " Expected: ${expected_value}")
message(STATUS " Received: ${argn_value}")
endif (NOT ${argn_value} STREQUAL ${expected_value})
math(EXPR i "${i} + 1")
endwhile (i LESS ${argn_len})
else (${argn_len} EQUAL ${expected_len})
message(STATUS "Error: Lengths of arguments don't match")
message(STATUS " Expected: ${expected_len}")
message(STATUS " Received: ${argn_len}")
endif (${argn_len} EQUAL ${expected_len})
endfunction (argument_tester expected)
set(empty_test)
message(STATUS "Test: Empty arguments")
argument_tester(empty_test 0 ${empty_test})
set(single_arg_test
"single arg")
message(STATUS "Test: Single argument")
argument_tester(single_arg_test 1 ${single_arg_test})
set(multiple_arg_test
"first arg"
"second arg")
message(STATUS "Test: Multiple arguments")
argument_tester(multiple_arg_test 2 ${multiple_arg_test})
set(nested_list_arg_test
"${multiple_arg_test}"
"first arg"
"second arg")
message(STATUS "Test: Nested list argument")
argument_tester(nested_list_arg_test 3 ${nested_list_arg_test})
set(semicolon_arg_test
"pre\;post")
message(STATUS "Test: Semicolon argument")
argument_tester(semicolon_arg_test 1 ${semicolon_arg_test})