# file      : tests/function/path/testscript
# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
# license   : MIT; see accompanying LICENSE file

.include ../../common.test

s = ($cxx.target.class != 'windows' ? '/' : '\')

: canonicalize
:
{
  $* <'print $canonicalize([path] a/b)'           >"a$(s)b"            : path
  $* <'print $canonicalize([paths] a/b a/c)'      >"a$(s)b a$(s)c"     : paths
  $* <'print $canonicalize([dir_path] a/b)'       >"a$(s)b$s"          : dir-path
  $* <'print $canonicalize([dir_paths] a/b a/c/)' >"a$(s)b$s a$(s)c$s" : dir-paths
  $* <'print $path.canonicalize(a/b)'             >"a$(s)b"            : untyped
  $* <'print $path.canonicalize(a/b/ a/c)'        >"a$(s)b$s a$(s)c"   : mixed
}

: normalize
:
{
  $* <'print $normalize([path] a/../b)'              >"b"        : path
  $* <'print $normalize([paths] a/../b a/../c)'      >"b c"      : paths
  $* <'print $normalize([dir_path] a/../b)'          >"b$s"      : dir-path
  $* <'print $normalize([dir_paths] a/../b a/../c/)' >"b$s c$s"  : dir-paths
  $* <'print $path.normalize(a/../b)'                >"b"        : untyped
  $* <'print $path.normalize(a/../b/ a/../c)'        >"b$s c"    : mixed

  : actualize
  :
  if ($cxx.target.class == 'windows')
  {
    mkdir Foo;
    $* <'print $path.normalize($out_base/foo, true)' >~'/.+\\Foo/'
  }
}

: invalid-path
:
p = ($cxx.target.class != 'windows' ? /../foo : 'c:/../foo');
$* <"\$path.normalize\('$p')" 2>>"EOE" != 0
error: invalid path: '$p'
EOE