// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package fs_test

import (
	"testing"

	. "golang.org/x/website/internal/backport/io/fs"
)

var isValidPathTests = []struct {
	name string
	ok   bool
}{
	{".", true},
	{"x", true},
	{"x/y", true},

	{"", false},
	{"..", false},
	{"/", false},
	{"x/", false},
	{"/x", false},
	{"x/y/", false},
	{"/x/y", false},
	{"./", false},
	{"./x", false},
	{"x/.", false},
	{"x/./y", false},
	{"../", false},
	{"../x", false},
	{"x/..", false},
	{"x/../y", false},
	{"x//y", false},
	{`x\`, true},
	{`x\y`, true},
	{`x:y`, true},
	{`\x`, true},
}

func TestValidPath(t *testing.T) {
	for _, tt := range isValidPathTests {
		ok := ValidPath(tt.name)
		if ok != tt.ok {
			t.Errorf("ValidPath(%q) = %v, want %v", tt.name, ok, tt.ok)
		}
	}
}
