
include ("${RunCMake_SOURCE_DIR}/check_errors.cmake")
unset (errors)

set(listvar a b c d)

list(INSERT listvar 1 e)
set (output "$<LIST:INSERT,a;b;c;d,1,e>")
if (NOT output STREQUAL listvar)
  list (APPEND errors "returns bad value: ${output}")
endif()

set(listvar a b c d)

list(INSERT listvar 2 e f)
set (output "$<LIST:INSERT,a;b;c;d,2,e,f>")
if (NOT output STREQUAL listvar)
  list (APPEND errors "returns bad value: ${output}")
endif()

set(listvar a b c d)
list(INSERT listvar 0 e f)
set (output "$<LIST:INSERT,a;b;c;d,0,e;f>")
if (NOT output STREQUAL listvar)
  list (APPEND errors "returns bad value: ${output}")
endif()

set(listvar a b c d)
list(INSERT listvar -2 e f)
set (output "$<LIST:INSERT,a;b;c;d,-2,e;f>")
if (NOT output STREQUAL listvar)
  list (APPEND errors "returns bad value: ${output}")
endif()

set(listvar a b c d)
list(INSERT listvar 3 e f)
set (output "$<LIST:INSERT,a;b;c;d,3,e;f>")
if (NOT output STREQUAL listvar)
  list (APPEND errors "returns bad value: ${output}")
endif()

unset(listvar)
list(INSERT listvar 0 e f)
set (output "$<LIST:INSERT,,0,e,f>")
if (NOT output STREQUAL listvar)
  list (APPEND errors "returns bad value: ${output}")
endif()

block(SCOPE_FOR POLICIES)
  cmake_policy(SET CMP0007 NEW)

  set(listvar "0;1;2;3;4")
  list(INSERT listvar 1 "")
  set (output "$<LIST:INSERT,0;1;2;3;4,1,>")
  if (NOT output STREQUAL listvar)
    list (APPEND errors "returns bad value: ${output}")
  endif()

  list(INSERT listvar 4 ";")
  set (output "$<LIST:INSERT,0;;1;2;3;4,4,;>")
  if (NOT output STREQUAL listvar)
    list (APPEND errors "returns bad value: ${output}")
  endif()

  list(INSERT listvar 0 "x")
  set (output "$<LIST:INSERT,0;;1;2;;;3;4,0,x>")
  if (NOT output STREQUAL listvar)
    list (APPEND errors "returns bad value: ${output}")
  endif()
endblock()
block(SCOPE_FOR POLICIES)
  set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "")
  cmake_policy(SET CMP0007 OLD)

  set(listvar "0;1;2;3;4")
  list(INSERT listvar 1 "")
  set (output "$<LIST:INSERT,0;1;2;3;4,1,>")
  if (NOT output STREQUAL listvar)
    list (APPEND errors "returns bad value: ${output}")
  endif()

  list(INSERT listvar 4 ";")
  set (output "$<LIST:INSERT,0;1;2;3;4,4,;>")
  if (NOT output STREQUAL listvar)
    list (APPEND errors "returns bad value: ${output}")
  endif()

  list(INSERT listvar 0 "x")
  set (output "$<LIST:INSERT,0;1;2;3;4,0,x>")
  if (NOT output STREQUAL listvar)
    list (APPEND errors "returns bad value: ${output}")
  endif()

  unset(CMAKE_WARN_DEPRECATED CACHE)
endblock()

check_errors("LIST:INSERT..." ${errors})
