// Copyright 2020 CUE Authors
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


-- in.cue --
import "path"

joinSingle: path.Join(["a", "b"])
joinSingle: "a/b"

Join: unix:    _
Join: windows: _

Join: [OS=string]: [...{
    arg: [...string]

    out: path.Join(arg, OS)
}]

Join: [_]: [
    {arg: ["a", "b"]},
    {arg: ["a/b", "c/d"]},

    {arg: ["/"]},
    {arg: ["a"]},

    {arg: ["a", "b"]},
    {arg: ["a", ""]},
    {arg: ["", "b"]},
    {arg: ["/", "a"]},
    {arg: ["/", "a/b"]},
    {arg: ["/", ""]},
    {arg: ["//", "a"]},

    {arg: ["directory", "file"]},

    {arg: [#"C:\Windows\"#, #"System32"#]},
    {arg: [#"C:\Windows\"#, #""#]},
    {arg: [#"C:\"#, #"Windows"#]},
    {arg: [#"C:"#, #"a\b"#]},
    {arg: [#"C:"#, #"a"#, #"b"#]},
    {arg: [#"C:"#, #""#, #""#, #"b"#]},
    {arg: [#"C:"#, #""#]},
    {arg: [#"C:"#, #""#, #""#]},
    {arg: [#"C:."#, #"a"#]},
    {arg: [#"C:a"#, #"b"#]},
    {arg: [#"\\host\share"#, #"foo"#]},
]

-- out/path --
joinSingle: "a/b"
Join: {
	unix: [{
		arg: ["a", "b"]
		out: "a/b"
	}, {
		arg: ["a/b", "c/d"]
		out: "a/b/c/d"
	}, {
		arg: ["/"]
		out: "/"
	}, {
		arg: ["a"]
		out: "a"
	}, {
		arg: ["a", "b"]
		out: "a/b"
	}, {
		arg: ["a", ""]
		out: "a"
	}, {
		arg: ["", "b"]
		out: "b"
	}, {
		arg: ["/", "a"]
		out: "/a"
	}, {
		arg: ["/", "a/b"]
		out: "/a/b"
	}, {
		arg: ["/", ""]
		out: "/"
	}, {
		arg: ["//", "a"]
		out: "/a"
	}, {
		arg: ["directory", "file"]
		out: "directory/file"
	}, {
		arg: [#"C:\Windows\"#, #"System32"#]
		out: "C:\\Windows\\/System32"
	}, {
		arg: [#"C:\Windows\"#, #""#]
		out: "C:\\Windows\\"
	}, {
		arg: [#"C:\"#, #"Windows"#]
		out: "C:\\/Windows"
	}, {
		arg: [#"C:"#, #"a\b"#]
		out: "C:/a\\b"
	}, {
		arg: [#"C:"#, #"a"#, #"b"#]
		out: "C:/a/b"
	}, {
		arg: [#"C:"#, #""#, #""#, #"b"#]
		out: "C:/b"
	}, {
		arg: [#"C:"#, #""#]
		out: "C:"
	}, {
		arg: [#"C:"#, #""#, #""#]
		out: "C:"
	}, {
		arg: [#"C:."#, #"a"#]
		out: "C:./a"
	}, {
		arg: [#"C:a"#, #"b"#]
		out: "C:a/b"
	}, {
		arg: [#"\\host\share"#, #"foo"#]
		out: "\\\\host\\share/foo"
	}]
	windows: [{
		arg: ["a", "b"]
		out: "a\\b"
	}, {
		arg: ["a/b", "c/d"]
		out: "a\\b\\c\\d"
	}, {
		arg: ["/"]
		out: "\\"
	}, {
		arg: ["a"]
		out: "a"
	}, {
		arg: ["a", "b"]
		out: "a\\b"
	}, {
		arg: ["a", ""]
		out: "a"
	}, {
		arg: ["", "b"]
		out: "b"
	}, {
		arg: ["/", "a"]
		out: "\\a"
	}, {
		arg: ["/", "a/b"]
		out: "\\a\\b"
	}, {
		arg: ["/", ""]
		out: "\\"
	}, {
		arg: ["//", "a"]
		out: "\\a"
	}, {
		arg: ["directory", "file"]
		out: "directory\\file"
	}, {
		arg: [#"C:\Windows\"#, #"System32"#]
		out: "C:\\Windows\\System32"
	}, {
		arg: [#"C:\Windows\"#, #""#]
		out: "C:\\Windows"
	}, {
		arg: [#"C:\"#, #"Windows"#]
		out: "C:\\Windows"
	}, {
		arg: [#"C:"#, #"a\b"#]
		out: "C:a\\b"
	}, {
		arg: [#"C:"#, #"a"#, #"b"#]
		out: "C:a\\b"
	}, {
		arg: [#"C:"#, #""#, #""#, #"b"#]
		out: "C:b"
	}, {
		arg: [#"C:"#, #""#]
		out: "C:."
	}, {
		arg: [#"C:"#, #""#, #""#]
		out: "C:."
	}, {
		arg: [#"C:."#, #"a"#]
		out: "C:a"
	}, {
		arg: [#"C:a"#, #"b"#]
		out: "C:a\\b"
	}, {
		arg: [#"\\host\share"#, #"foo"#]
		out: "\\\\host\\share\\foo"
	}]
}

