|
|
|
cmake_minimum_required(VERSION 3.5)
|
|
|
|
|
|
|
|
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 "Unexpected: Expanding expected values isn't working")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
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 "Unexpected: Argument ${i} doesn't match")
|
|
|
|
message(STATUS " Expected: ${expected_value}")
|
|
|
|
message(STATUS " Received: ${argn_value}")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
math(EXPR i "${i} + 1")
|
|
|
|
endwhile ()
|
|
|
|
else ()
|
|
|
|
message(STATUS "Unexpected: Lengths of arguments don't match")
|
|
|
|
message(STATUS " Expected: ${expected_len}")
|
|
|
|
message(STATUS " Received: ${argn_len}")
|
|
|
|
endif ()
|
|
|
|
endfunction ()
|
|
|
|
|
|
|
|
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 flattens")
|
|
|
|
argument_tester(nested_list_arg_test 4 ${nested_list_arg_test})
|
|
|
|
|
|
|
|
set(semicolon_arg_test
|
|
|
|
"pre\;post")
|
|
|
|
set(semicolon_arg_test_flat "pre;post")
|
|
|
|
message(STATUS "Test: Semicolon argument flattens")
|
|
|
|
argument_tester(semicolon_arg_test_flat 2 ${semicolon_arg_test})
|