| cmake_minimum_required(VERSION 2.8.12) |
| |
| 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}) |