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})
