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

set (path "a/./b/..")
cmake_path(NORMAL_PATH path)
if (NOT path STREQUAL "a/")
  list (APPEND errors "'${path}' instead of 'a/'")
endif()

set (path "a/.///b/../")
cmake_path(NORMAL_PATH path)
if (NOT path STREQUAL "a/")
  list (APPEND errors "'${path}' instead of 'a/'")
endif()

set (path "a/.///b/../")
cmake_path(NORMAL_PATH path OUTPUT_VARIABLE output)
if (NOT path STREQUAL "a/.///b/../")
  list (APPEND errors "input changed unexpectedly")
endif()
if (NOT output STREQUAL "a/")
  list (APPEND errors "'${output}' instead of 'a/'")
endif()

if (WIN32)
  set (path "//host/./b/..")
  cmake_path(NORMAL_PATH path)
  if (NOT path STREQUAL "//host/")
    list (APPEND errors "'${path}' instead of '//host/'")
  endif()

  set (path "//host/./b/../")
  cmake_path(NORMAL_PATH path)
  if (NOT path STREQUAL "//host/")
    list (APPEND errors "'${path}' instead of '//host/'")
  endif()

  set (path "c://a/.///b/../")
  cmake_path(NORMAL_PATH path)
  if (NOT path STREQUAL "c:/a/")
    list (APPEND errors "'${path}' instead of 'c:/a/'")
  endif()
endif()

check_errors (NORMAL_PATH ${errors})