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


cmake_path(SET reference "/x/y/z/../../a/d")
set(output "$<PATH:CMAKE_PATH,/x/y/z/../../a/d>")
if (NOT output STREQUAL reference)
  list (APPEND errors "'${output}' instead of '${reference}'")
endif()
cmake_path(SET reference NORMALIZE "/x/y/z/../../a/d")
set(output "$<PATH:CMAKE_PATH,NORMALIZE,/x/y/z/../../a/d>")
if (NOT output STREQUAL reference)
  list (APPEND errors "'${output}' instead of '${reference}'")
endif()

if (WIN32)
  cmake_path(SET reference "/x\\y/z\\..\\../a/d")
  set(output "$<PATH:CMAKE_PATH,/x\y/z\..\../a/d>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()
  cmake_path(SET reference NORMALIZE "/x\\y/z\\..\\../a/d")
  set(output "$<PATH:CMAKE_PATH,NORMALIZE,/x\y/z\..\../a/d>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()

  cmake_path(SET reference "//?/c:/x\\y/z\\..\\../a/d")
  set(output "$<PATH:CMAKE_PATH,//?/c:/x\y/z\..\../a/d>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()
  cmake_path(SET reference NORMALIZE "//?/c:/x\\y/z\\..\\../a/d")
  set(output "$<PATH:CMAKE_PATH,NORMALIZE,//?/c:/x\y/z\..\../a/d>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()

  cmake_path(SET reference "\\\\?\\UNC/host/x\\y/z\\..\\../a/d")
  set(output "$<PATH:CMAKE_PATH,\\?\UNC/host/x\y/z\..\../a/d>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()
  cmake_path(SET reference NORMALIZE "\\\\?\\UNC\\host/x\\y/z\\..\\../a/d")
  set(output "$<PATH:CMAKE_PATH,NORMALIZE,\\?\UNC/host/x\y/z\..\../a/d>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()
endif()


######################################
## tests with list of paths
######################################
set(reference "/x/y/z/../../a/d;/x/y/z/../../b/e")
set(output "$<PATH:CMAKE_PATH,/x/y/z/../../a/d;/x/y/z/../../b/e>")
if (NOT output STREQUAL reference)
  list (APPEND errors "'${output}' instead of '${reference}'")
endif()

unset(reference)
foreach(path IN ITEMS "/x/y/z/../../a/d" "/x/y/z/../../b/e")
  cmake_path(SET result NORMALIZE "${path}")
  list(APPEND reference "${result}")
endforeach()
set(output "$<PATH:CMAKE_PATH,NORMALIZE,/x/y/z/../../a/d;/x/y/z/../../b/e>")
if (NOT output STREQUAL reference)
  list (APPEND errors "'${output}' instead of '${reference}'")
endif()

if (WIN32)
  unset(reference)
  foreach(path IN ITEMS "/x\\y/z\\..\\../a/d" "/x\\y/z\\..\\../b/e")
    cmake_path(SET result "${path}")
    list(APPEND reference "${result}")
  endforeach()
  set(output "$<PATH:CMAKE_PATH,/x\y/z\..\../a/d;/x\y/z\..\../b/e>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()

  unset(reference)
  foreach(path IN ITEMS "/x\\y/z\\..\\../a/d" "/x\\y/z\\..\\../b/e")
    cmake_path(SET result NORMALIZE "${path}")
    list(APPEND reference "${result}")
  endforeach()
  set(output "$<PATH:CMAKE_PATH,NORMALIZE,/x\y/z\..\../a/d;/x\y/z\..\../b/e>")
  if (NOT output STREQUAL reference)
    list (APPEND errors "'${output}' instead of '${reference}'")
  endif()
endif()


check_errors("PATH:CMAKE_PATH" ${errors})
